7月7日,時速雲企業級容器 PaaS 技術沙龍第 10 期在上海成功舉辦,時速雲容器架構負責人魏巍爲你們詳細講解了 Service Mesh 中表明性的實踐方案、並以 Istio 爲例詳細講解了 Service Mesh 中的技術關鍵點,包括 Istio 控制平面、Istio 數據平面等。如下內容根據魏巍分享整編,但願對你們瞭解 Service Mesh 有所幫助。java
魏巍:你們下午好,剛纔幾位講師講了 K8S 的存儲、PaaS 在企業的落地實踐等,咱們接下來要講的是企業有了 PaaS 平臺、而且在平臺上部署了各類各樣的服務以後,這些服務該如何治理、服務與服務之間的關係,以及該以何種方式去維護等問題,而最近兩年興起的 Service Mesh,可以更加便捷的管理這些服務。nginx
Service Mesh 是一個專用的基礎設施層,目的是解決系統架構微服務化後的服務間通訊和治理問題。Service Mesh 從實踐上來講有不少方案,但這些方案都有共同的特色,好比說像這裏提到的宏觀架構抽象,它都會劃分爲 Control Plane 和 Data Plane,這種總體架構設計。後端
第二個特色,Service Mesh 基原本說是一組輕量級的與應用邏輯服務部署在一塊兒的服務代理,它會用代理的方式去實現路由、斷路器、服務發現等,而且這些對應用服務都是透明的,固然這是在 K8S 上。若是說不是基於 Service Mesh 作的微服務架構,還能夠基於 SpringCloud 作微服務架構,可是SpringCloud有自身的侷限性,它主要用於以 java 爲主的領域。微信
Istio、Conduit、Nginmesh 都是 Service Mesh 中比較火的實踐方案。Istio 是 Google 和 IBM 聯合 Lyft 的合做開源項目,是當前最主流的 Service Mesh 方案;Conduit 各方面的設計理念與 Istio 很是相似,其使用 Rust 從新編寫了 sidecar,控制面由 Go 編寫的 Conduit Control Plane 接管;NginMesh 並無本身獨立實現一整套 Service Mesh,只是用 nginx替代了 Istio 中 Envoy。網絡
Istio 架構
在 Istio、Conduit、 Nginmesh 這幾個實踐方案中,Istio 的影響最大,因此咱們今天主要講解一下 Istio。負載均衡
Istio 邏輯上分爲控制平面(Control Plane)和數據平面(Data Plane)。運維
控制平面由 Pilot 、Mixer 、Citadel 組成,控制平面的每個組件都負責一些特定的功能。數據平面由一組智能代理(Envoy)組成,代理部署爲 sidecar,其控制微服務之間全部的網絡通訊。ide
Istio 控制平面微服務
Istio 控制平面包括如下組件:
Pilot:Pilot 負責 Envoy 配置、全生命週期管理。能夠爲 Envoy sidecar 提供服務發現,爲流量管理功能實現了靈活的路由(如 A/B 測試、金絲雀發佈)和彈性(如:超時、重試、熔斷等),它還能夠將高級別的路由規則轉換爲 Envoy 特定的配置並在運行時將配置傳播到 sidecar 中。
Mixer:Mixer 是一個平臺獨立的組件,其主要負責對後端系統的抽象、對接、策略配置等,並從 Envoy 代理和其它服務中收集測量數據。
抽象一點說,Mixer 提供:
後端抽象:Mixer 把 Istio 組件和 Mesh 中的服務從基礎設施細節中隔離開來。
中間媒介:Mixer 讓運維人員可以對全部 Mesh 和基礎設施後端之間的交互進行控制。
Mixer 在某種程度上起到一種橋樑的做用。Envoy 提供 request 級別的屬性數據,這些數據交由 Mixer 進行評估和處理,Mixer 中的各類適配器 (adapter)基於這些屬性數據,來實現日誌記錄、監控指標採集展現、配額管理、ACL 檢查等功能。
Citadel:提供服務間認證和終端用戶認證功能,內置身份和證書管理,而且在網絡策略以外,提供服務級別的策略控制。
Istio數據平面
Envoy 是 Istio 的數據平面。Envoy 是一個高性能輕量級代理,用於控制服務網格中服務的全部入站和出站流量。Envoy 提供了不少內置功能,如動態服務發現、負載均衡、TLS 會話終結、HTTP/2& gRPC 流量代理、熔斷器、健康檢查等功能。
Envoy 被部署爲 sidecar,與對應的微服務一塊兒部署在一個 Kubernetes Pod 中。每一個微服務實例經過各自的 sidecar 來實現發送和接受請求;微服務和微服務之間不直接通訊,而是經過 sidecar 的代理轉發來實現通訊。 sidecar 直接造成調用網絡,就像一個「網格」同樣。使用 sidecar 代理模型代碼無需從新構建或重寫代碼。
注:關注時速雲微信訂閱號,回覆:7.7上海PPT,便可下載講師分享PPT。