微服務採用服務發現機制,不用負載均衡的原因
阿新 • • 發佈:2019-01-06
《Spring Micorservices in Action》第4章筆記。
微服務通常及基於雲平臺的,不採用負載均衡的原因有:
- 單點故障。如果負載均衡器掛了,所有服務都不能被訪問。就算負載均衡器是高可用的,它也會成為整個應用的瓶頸。
- 限制了水平擴充套件。單節點的負載均衡器能力是有限的。負載均衡器有兩點制約: 冗餘模型和許可證費用。大部分的負載均衡器採用熱交換的冗餘模型,只有一臺伺服器處理負載,另一臺只有在主負載均衡器失效的情況下才工作。另外商用負載均衡器也受許可證費用的制約。
- 靜態化管理。大多數傳統的負載均衡器使用一箇中央資料庫儲存路由資訊,只有通過提供商特殊的API才能新增新的路由規則。不適合快速註冊和快速取消註冊。
- 複雜。負載均衡器作為服務的代理,需要將客戶發來的請求對映到具體的服務。這需要在負載均衡器上手工定義服務的對映規則。如果有新的服務提供者加入,也需要手工修改負載均衡器新增對映規則。
- 高可用, 基於“服務發現叢集”
- 點對點。服務發現叢集下的每個節點都共享服務例項的狀態。
- 負載均衡。服務發現也需要負載均衡。採用客戶端負載均衡。
- 彈性。客戶端會快取服務的資訊。如果“服務發現”失效,客戶端可以使用本地快取的資訊找到服務提供者。
- 容錯性。當“服務發現”偵測到某一個服務不可用時,可以將他從可用服務列表刪除。可以自動檢測到服務故障,無需人工參與。