前言
微服務架構2.0 Service Mesh架構架構方面,業内陸續開源了不少優秀架構,主流兩個:Service Mesh産品Istio 和 AWS App Mesh,我們将從多角度探索與實踐Istio。
什麼是Istio?
由官網定義如下:雲平台令使用它們的公司受益匪淺。但不可否認的是,上雲會給 DevOps 團隊帶來壓力。為了可移植性,開發人員必須使用微服務來建構應用,同時運維人員也正在管理着極端龐大的混合雲和多雲的部署環境。Istio 允許您連接配接、保護、控制和觀察服務。
我們可以看到Istio主要做微服務治理,并且主要分為四個功能:
1、服務之間建立一個連接配接
2、連接配接通信之間整數等安全性
3、連接配接進行流量管理等控制
4、服務連接配接監控、日志等觀察服務
為了保證資料不丢,我們盡可能的設定較大的重試次數(參數是retries),如果重試失敗了,對異常進行處理,可以把消息儲存到另外安全到地方。
K8s、Istio相輔相成
下圖可以看出,Istio可以解決Kubernetes的服務治理缺陷,功能上兩者進行了一個互補的結合,解決了雲原生服務治理、雲原生基礎設施。

Istio的架構
網格服務,通常和一系列網絡代理組成,其主要在于代碼無侵入、網絡代理,與應用程式部署在一起,但是應用程式卻不知情。
主要架構在于資料平面(Data Plane)和控制平面(Control Plane),
- 資料平面:由一組和業務服務(如下圖ServiceA 和 ServceB)成對出現的Sidecar代理(Envoy)構成,它的主要功能是接管服務的進出流量或服務轉發,并且與控制平面的 Mixer 通訊,接受排程政策。
- 控制平面:主要包括了Pilot、Mixer、Citadel和Galley共4個元件,主要功能是通過管理和配置 Envoy 來管理流量,此外,控制平面配置 Mixers來實施路由政策并收集檢測到的監控資料。
Istio核心元件
-
Envoy
是一個用 C ++開發的高性能代理、CNCF第三個畢業項目,是以性能和可用性都是比較好的,對于Envoy有四個概念【LDS(監聽器發現服務)、RDS(路由發現服務)、CDS(叢集發現服務)、EDS(服務發現服務)】,每一個 pod 中都必須要部署一個 Sidecar。
ps: 之後會在代碼配置中重新标志這塊知識點。
-
Pilot
主要的作用是配置和管理Envoy代理,為進階路由(例如,A / B 測試,金絲雀部署等)提供流量管理功能,以及異常控制,如:逾時,重試,斷路器等。
下圖是Pilot的原理圖,主要的規則資料來源于使用者手動配置(路由規則)以及k8s(pod等資訊)、Mesos來的一些中繼資料,通過proxy(Envoy)進行流量轉發。
-
Mixer
是一個獨立于平台的元件,負責在整個 Service Mesh 中執行通路控制和使用政策,并從 Envoy 代理和其他服務收集監控到的資料。
提供APi服務,可以自研監控分析PAM平台對接Mixer。
-
Citadel
通過内置身份和憑證管理,提供強大的服務到服務和最終使用者身份驗證。我們可以使用 Citadel 更新 Service Mesh 中的未加密流量。我們可以使用 Istio 的授權功能來控制誰可以通路服務。
-
Galley
負責配置的擷取、處理和分發。Gally使用了一種叫作MCP(Mesh Configuration Protocol,網格配置協定)的協定與其他元件進行通信。
Bookinfo微服務源碼分析
了解上述概念後,大家可以拿Istio官網提供的一個微服務Book項目進行上手操作,項目位址:https://istio.io/zh/docs/examples/bookinfo
bookinfo 應用一共包含四個微服務:Productpage、Details、Reviews、Ratings。
- Productpage 使用 Python 開發,負責展示書籍的名稱和書籍的簡介。
- Details 使用 Ruby 開發,負責展示書籍的詳細資訊。
- Reviews 使用 Java 開發,負責顯示書評。
- Ratings 使用 Node.js 開發,負責顯示書籍的評星。
Service Mesh 的應用難點
企業是在原有技術棧的基礎上引入 Service Mesh,從實際的應用實踐情況來看,往往會存在以下 4 種問題:
1、Service Mesh 模式在業務每次遠端調用,通信鍊路會變長,必将增加請求的響應延遲,性能損耗會被明顯放大。
2、基礎設施與業務解耦帶來的複雜性對營運系統的易用性和 Service Mesh 的穩定性要求極高,否則排查問題時很可能會面臨根本無從下手的情況。
3、服務通信架構及治理系統技術棧往往不是雲原生優先支援的 GRPC 和 HTTP,在 RPC 架構不相容的背景下改造成本和挑戰非常大。
4、增加基礎設施團隊的運維成本,并且遇到業務問題,定位問題涉及到業務研發團隊和基礎設施研發團隊頻繁溝通互動,自然成本也會相應增加。
小結及預告
通過本文,相信讀者對微服務的概念和 Istio 的架構有了一定程度的了解。在微服務領域,它最大的優勢是解耦應用業務,企業能夠徹底從業務角度考慮問題,同時還可以與容器編排部署平台的內建,成為企業級應用編排部署和服務治理的标準形态。
讀者有興趣可持續關注,下面将持續更新Istio應用及剖析
·END·