在微服務架構中service mesh是什麼?
在微服務架構中service mesh是什麼
什麼是 service mesh ?
微服務架構將軟體功能隔離為多個獨立的服務,這些服務可獨立部署,高度可維護和可測試,並圍繞特定業務功能進行組織。
這些服務通過簡單的,可通用訪問的API相互通訊。在技術層面上,微服務可實現大型複雜應用程式的持續交付和部署。在更高的業務水平上,微服務有助於為試圖在快速發展的市場中實現敏捷性的公司提供速度,可伸縮性和靈活性。
但是,如前所述,微服務架構會很快變得複雜。我們如何處理這種複雜性?
service mesh
是一種基礎結構層,允許我們的服務例項相互通訊。service mesh
還允許我們配置服務例項如何執行關鍵操作,例如服務發現,負載平衡,資料加密以及身份驗證和授權。
因為service mesh
提供了一層抽象(應用程式程式碼通常不瞭解service mesh
執行的工作),所以我們獲得了很大的靈活性;例如,我們可以將微服務移至其他伺服器或叢集,而無需重寫應用程式。實際上,service mesh
使管理微服務的最無聊和重複的工作自動化。
service mesh 是如何工作的?
服務網格的體系結構分為兩個不同的部分:資料平面和控制平面。
資料平面實質上是處理服務之間通訊的代理服務。在Istio中,資料平面被部署為sidecar
,這是新增到主應用程式中的支援服務。例如,在Kubernetes
基礎架構中,代理與具有共享網路名稱空間的應用程式部署在同一個pod
資料平面還提供對微服務的可觀察性,尤其是以日誌和度量標準聚合的形式。
NGINX
,HAProxy
和Envoy
均提供資料平面功能。尤其是Envoy
,已成為廣受歡迎的代理,因為它專門用於微服務體系結構,提供用於配置的動態API並增強了可觀察性。
同時,控制平面,監控資料平面的策略和配置-它不處理任何資料。 Nelson
,SmartStack
和Istio
等工具都以某種形式提供控制面板功能,並且每種工具都有自己的策略來管理與代理的關係。例如,在Kubernetes
中,控制平面與業務流程系統協同工作,以排程服務及其代理,跟蹤服務發現並通過API配置代理。
我們可以將Envoy
作為沒有控制平面的獨立代理執行,但這是Istio
Envoy
結合使用時的核心功能(流量管理,安全性,可觀察性)功能齊全的服務網格越來越吸引著許多使用者
service mesh 之 istio 的內部機制
Istio
的體系結構包括四個主要部分。 Istio
使用Envoy sidecar
代理作為其資料平面,其他三個工具組成了Istio
控制面板。
如下圖:
Envoy:
Envoy sidecar
代理充當Istio
的資料平面。諸如故障處理(例如,執行狀況檢查和有限制的重試),動態服務發現和負載均衡等內建功能使Envoy
成為功能強大的工具。Envoy
還通過屬性提供有關服務請求的資訊。Mixer:
Istio
的策略和遙測中心收集有關網狀網中服務請求的Envoy
屬性,並提供API,以便DevOps
團隊可以構建外掛(或介面卡)以在任意數量的第三方後端中重新利用這些屬性,包括日誌記錄,授權或監控工具,例如New Relic
(更多資訊請參見下文)。Mixer
還使用相互TLS處理代理之間的授權。Pilot:
Istio
使用Pilot
根據我們的Envoy
配置管理負載均衡流量控制。與Mixer
一樣,我們可以包含介面卡,以便Pilot
可以通過API與Kubernetes
基礎架構通訊,以瞭解影響流量的部署更改。Pilot
還將身份驗證規則分發給代理。Citadel:藉助
Citadel
,Istio
為Envoy
代理之間的身份驗證和憑據管理提供了一個強大的,策略驅動的安全層。Citadel
管理整個網格中的金鑰和認證。