服務網格(Service Mesh)是一種專門用於處理服務間通信的基礎設施層。它的主要功能是在由雲原生應用構成的服務之間進行可靠的請求傳送,確保服務間調用的可靠性。服務網格由兩部分組成:
數據平面:這包括與應用程序中的每個服務配對的網絡代理,例如Sidecar Proxy,它們直接處理入站和出站數據包,執行轉發、路由、健康檢查、負載均衡、認證、鑑權等操作,併產生監控數據。
控制平面:這是一組任務管理組件,也稱爲控制層或控制平面,負責與數據平面中的代理通信,下發策略和配置。控制平面是網格的“大腦”,爲運維人員提供API來操作和觀察整個網絡。
服務網格的功能實現完全獨立於應用程序,可以獨立部署、升級、擴展功能和修復缺陷,應用程序無須關注服務網格的具體實現細節,即對應用程序是透明的。服務網格的名稱來源於服務間的依賴形態,當系統中存在大量服務時,服務間的調用關係表現爲網狀。
服務網格通過增加Sidecar代理來簡化客戶端並轉移服務間通信的控制權,這些代理位於請求調用的路徑中,將原本由客戶端完成的複雜功能下沉到Sidecar中。這種架構使得服務網格能夠提供對通信的可觀察性、提供安全連接,或自動重試和回退失敗的請求。
服務網格是雲原生技術棧裏的一箇關鍵組件,它描述了服務間的依賴形態,尤其適用以雲原生應用形式部署的服務。通過擴展生產中基礎設施元素之間的互操作通信級別,服務網格增加了軟件應用程序的潛在功能。