SideCar 解釋的參考文檔 Qcon2017 實錄 | Service Mesh:下一代微服務
Istio 服務網格被邏輯的區分爲數據層和控制層。html
下圖展現了組成每層的不一樣組件。c++
SideCar解釋git
Sidecar 這個詞中文翻譯爲邊車,或者車斗,也有一個鄉土氣息濃重的翻譯叫作邊三輪。Sidecar 這個東西出現的時間挺長的,它在原有的客戶端和服務端之間加多了一個代理。github
Istio 使用 Envoy 代理的擴展版本,一個使用 c++開發的高性能代理,爲了調節在服務網格中全部服務的進出流量。Istio 利用了Envoy的許多內建特性,好比動態服務發現,負載均衡,TLS終止,HTTP/2 & gRPC 代理,斷路器,健康檢查,分階段的基於百分比的流量分配,故障注入和豐富的度量。後端
Envoy 做爲一個 SideCar 部署與相關服務部署在相同的Kubernetes pod。這容許Istio提取大量流量行爲的信號如Istio 屬性,反過來能夠在Mixer使用執行策略決定,並被髮送到監控系統來提供關於整個網格行爲的信息。sidecar 代理模型容許你添加Istio能力到一個已經存在的部署而不須要從新構建或從新寫代碼。你能夠在咱們的設計目標中閱讀關於爲何咱們選擇這種方式的更多的信息api
Mixer 是一個平臺無關的組件,負責執行訪問控制,跨服務網格使用策略,以及收集從Envoy代理和其餘服務自動探測到的數據。代理提取請求等級屬性,被髮送給Mixer用於計算。這個屬性提取更多的信息能夠在Mixer 配置中找到,Mixer包含一個很是靈活的插件模型使其可以和各類主機環境和後端基礎架構交互,從這些細節中抽象出Envoy代理和Istio管理的服務。網絡
Pilot爲Envoy sidecar 提供了服務發現功能,爲智能路由提供了流量管理能力(好比A/B測試,金絲雀發佈等等),以及彈性(超時控制,重試,斷路器等等)。它轉換高級路由規則,將流量行爲控制在Envoy特定的配置中,而且在運行期把他們傳播到sidecars。Pilot抽象特定平臺的服務發現方法,並將他們合成爲可被任何sidecar消費的標準格式,其符合Envoy 數據層 API。這種鬆散的耦合容許Istio運行在多個環境中(好比,Kubernetes, Consul/Nomad等等),然而只須要維護相同操做接口進行流量管理。架構
Pilot 的架構圖負載均衡
Istio 的流量管理:ide
Istio-Auth使用 mutual TLS提供強大的服務到服務的和終端用戶的身份認證,具備內置的身份和憑證管理。它能夠用於升級在服務網格中未加密的流量,提供基於服務身份策略而不是網絡控制的執行能力。Istio 的將來版本將增長細粒度的訪問控制,審計控制以及監控誰訪問了你的服務、API或者資源,使用各類訪問控制機制,包括屬性和基於角色的訪問控制以及受權鉤子。