微服務架構下 Service Mesh 會是閃亮的明天嗎?
來源:互聯網
上載者:User
7月7日,時速雲企業級容器 PaaS 技術沙龍第 10 期在上海成功舉辦,時速雲容器架構負責人魏巍為大家詳細講解了 Service Mesh 中代表性的實踐方案、並以 Istio 為例詳細講解了 Service Mesh 中的技術關鍵點,包括 Istio 控制平面、Istio 資料平面等。以下內容根據魏巍分享整編,希望對大家瞭解 Service Mesh 有所協助。魏巍:大家下午好,剛才幾位講師講了 K8S 的儲存、PaaS 在企業的落地實踐等,我們接下來要講的是企業有了 PaaS 平台、並且在平台上部署了各種各樣的服務之後,這些服務該如何治理、服務與服務之間的關係,以及該以何種方式去維護等問題,而最近兩年興起的 Service Mesh,能夠更加便捷的管理這些服務。 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,其控制微服務之間所有的網路通訊。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 代理模型代碼無需重新構建或重寫代碼。106 次點擊