springcloud微服務多節點高性能、高可用、高並發部署


 

1. 共有三個服務 discovery服務,domain服務,gateway服務。

discovery服務是用來注冊其他服務的,作為服務治理用。

domain服務是主業務服務。

gateway服務是所有服務的一個入口,用來做一些服務的判斷和過濾用。

 

2. 有三台機器分別為192.168.1.1,192.168.1.2,192.168.1.3

3. 三台服務器上分別部署各個服務。

4. domain服務的需要注冊到每個disscover服務上。

8002 是 discover服務的端口。

client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://192.168.1.1:8002/lcs-discover/eureka/,http://192.168.1.2:8002/lcs-discover/eureka/,http://192.168.1.3:8002/lcs-discover/eureka/

5. 前端訪問用nginx,配置如下:

這段在server外面

upstream gateway {
server 192.168.1.1:8001;
server 192.168.1.2:8001;

server 192.168.1.3:8001;
}

這段在server里面

location /lcs-gateway {
proxy_pass http://gateway;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}

6. 前端請求說明:

http://localhost:8090/lcs-gateway
 
7. 實現說明:
當前端請求到8090 端口下面的lcs-gateway的時候,gateway攔截住並做了一個轉發,轉發的時候負載到不同的服務器(輪詢機制)。
當一台gateway接收到請求后,去找對應的服務發現eureka,所有的服務都注冊在discover上面了,discover會隨機找一個domain服務提供方法。
當一個服務的domain掛掉后,discover會找其他的domain頂替,這個是discover的選舉原理。
當一台服務器的gateway掛掉后,在nginx 請求轉發的時候做了一個連接超時的判斷,如果1s內不通,他會自動連接另外的服務器。
8. 問題匯總
1. 當把一個節點的服務kill掉,一定記得要給discover發消息通知。消息接口
http://localhost:8002/lcs-discover/eureka/apps/appID/instanceID delete 請求
可以通過http://localhost:8002/lcs-discover/eureka/apps 這個查詢當前discover 下面有哪些服務。
2. 發布說明
在高可用的系統部署中,發布很重要,因為發布的時候要考慮這個節點下面的服務是否正在使用。
所以有三種發布方案:灰度發布,輪詢發布,平滑發布,具體發布細節,后面實戰了補上。
9. 在多個節點發布說明
當業務量特別大的時候,發布服務需要不影響業務的情況下進行發布。怎么能做到不影響業務呢,當通過discover的時候,你可以看到當前有哪些服務注冊到這個節點上了,然后用命令

curl -X PUT -i http://10.118.218.151:8002/lcs-discover/eureka/apps/DATAIMP-SERVICE/LCS218151:dataimp-service:8005/status?value=OUT_OF_SERVICE

DATAIMP-SERVICE 這個為服務名稱

LCS218151:dataimp-service:8005 這個為discover中看到的服務節點名稱

當執行完這個命令之后,在discover 中看到的服務狀態為 out_of_service這個紅色的顯示。

這樣當前端訪問到網關的時候,網關就不會給這個服務上發送請求了。

然后運維就可以在這個服務上進行換包,上線等操作,當上線完成后,重啟服務,discover自動會發送心跳給每個服務,檢查服務狀態,如果服務狀態正常就可以正常使用了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM