此頁面描述了Istio負載如何平衡服務網格中服務實例的流量。算法
服務註冊: Istio假定存在服務註冊表以跟蹤應用程序中服務的pod / VM。它還假定服務的新實例自動註冊到服務註冊表,並自動刪除不健康的實例。像Kubernetes,Mesos這樣的平臺已經爲基於容器的應用程序提供了這樣的功能。基於VM的應用程序存在大量解決方案。負載均衡
服務發現: Pilot消費來自服務註冊表的信息,並提供與平臺無關的服務發現接口。網格中的特使實例執行服務發現並相應地動態更新其負載平衡池。svg
發現和負載平衡spa
如上圖所示,網狀網中的服務使用其DNS名稱相互訪問。綁定到服務的全部HTTP流量將經過Envoy自動從新路由。Envoy在負載平衡池中的實例之間分配流量。雖然Envoy支持多種複雜的負載平衡算法,但Istio目前容許三種負載均衡模式:循環,隨機和加權最小請求。接口
除了負載平衡以外,Envoy還會按期檢查池中每一個實例的運行情況。Envoy遵循斷路器樣式模式,根據健康檢查API調用的失敗率將實例分類爲不健康或健康。換句話說,當給定實例的運行情況檢查失敗次數超過預先指定的閾值時,它將從負載平衡池中彈出。一樣,當經過的運行情況檢查數超過預先指定的閾值時,該實例將被添加回負載平衡池。您能夠在處理故障中找到有關Envoy故障處理功能的更多信息。ci
服務能夠經過HTTP 503響應健康檢查來主動減輕負擔。在這種狀況下,服務實例將當即從調用者的負載平衡池中刪除。路由
https://istio.io/docs/concepts/traffic-management/load-balancing/get