1. 程式人生 > >微服務採用服務發現機制,不用負載均衡的原因

微服務採用服務發現機制,不用負載均衡的原因

《Spring Micorservices in Action》第4章筆記。

微服務通常及基於雲平臺的,不採用負載均衡的原因有:

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