服務的高可用 | 從0開始構建SpringCloud微服務(10)
照例附上 專案github連結
本專案實現的是將一個簡單的天氣預報系統一步一步改造成一個SpringCloud微服務系統的過程。本章主要講解 實現服務的高可用 。
什麼是高可用
高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。
假設系統一直能夠提供服務,我們說系統的可用性是100%。
如果系統每執行100個時間單位,會有1個時間單位無法提供服務,我們說系統的可用性是99%。
很多公司的高可用目標是4個9,也就是99.99%,這就意味著,系統的年停機時間為8.76個小時。
如何保障系統的高可用
我們都知道,單點是系統高可用的大敵,單點往往是系統高可用最大的風險和敵人,應該儘量在系統設計的過程中避免單點。方法論上,高可用保證的原則是“叢集化”,或者叫“冗餘”:只有一個單點,掛了服務會受影響;如果有冗餘備份,掛了還有其他backup能夠頂上。
保證系統高可用,架構設計的核心準則是:冗餘。
有了冗餘之後,還不夠,每次出現故障需要人工介入恢復勢必會增加系統的不可服務實踐。所以,又往往是通過“自動故障轉移”來實現系統的高可用。
下面我們重點講解通過整合Eureka設定多節點的註冊中心,從而實現服務的高可用。
實現服務的高可用
整合Eureka
我們需要將前面拆分好的四個微服務:城市資料API微服務,天氣資料採集微服務,天氣資料API微服務,天氣預報微服務,整合Eureka,實現服務的發現與註冊功能。
主要的操作步驟為:
- 新增pom.xml配置
- 新增application.yml配置
- 添加註解
至於如何進行新增,我在上一章進行了詳細的講述,這裡就不展開了。
啟動服務
我們將各個服務生成jar包,並通過命令列指定埠進行啟動,啟動命令如下:
java -jar micro-weather-eureka-server-1.0.0.jar --server.port=8761
測試結果
從上圖可以看到我們有4個微服務,每個微服務啟動了兩個例項。每個例項已經集成了Eureka客戶端,並且在Eureka伺服器中完成了註冊。
各個微服務之間可以通過應用的名稱相互訪問,每個微服務啟動了多個例項,這樣當我們的任何一個例項掛掉了,因為在其他節點有註冊,所以還可以提供服務,如此一來我們便實現了服務的高可用!