Home >> Blog >> 理解service mesh

理解service mesh

什麼是service mesh?

service mesh是一個專用的基礎設施層,用於控製網絡上的服務到服務通信。此方法使應用程式的不同部分能夠相互通信。service mesh通常與基於雲的應用程式、容器和微服務一起出現。

service mesh控制應用程式中服務請求的交付。service mesh提供的常見功能包括服務發現、負載平衡、加密和故障恢復。通過使用由API而非硬件控制的軟件,高可用性也很常見。service mesh可以使服務到服務的通信快速、可靠和安全。

組織可以選擇處理協議事務的API 網關,而不是service mesh。但是,每次添加或刪除微服務時,開發人員都必須更新 API 網關。service mesh通常提供超過傳統 API 網關功能的網絡管理可擴展性和靈活性。

service mesh的工作原理

service mesh架構在使用任何開發範式(通常是容器和/或微服務)中都使用稱為sidecar的代理實例。在微服務應用程式中,邊車附加到每個服務。在容器中,sidecar 附加到每個應用程式容器、VM或容器編排單元,例如 Kubernetes pod。

Sidecars 可以處理從服務本身抽像出來的任務,例如監控和安全。

服務實例、sidecar 及其交互構成了service mesh中所謂的數據平面。稱為控制平面的不同層管理諸如創建實例、監控和實施網絡管理和安全策略等任務。控制平面可以連接到 CLI 或GUI界面以進行應用程式管理。

service mesh

為什麼要採用service mesh?

在微服務架構中構建的應用程式可能包含數十或數百個服務,所有服務都具有在實時環境中運行的自己的實例。對於SEO開發人員來說,跟踪哪些組件必須交互、監控它們的運行狀況和性能以及在出現問題時對服務或組件進行更改是一個巨大的挑戰

service mesh使開發人員能夠在專用基礎架構層中分離和管理服務到服務的通信。隨著應用程式所涉及的微服務數量的增加,使用service mesh來管理和監控它們的好處也在增加。

service mesh的關鍵特性

service mesh框架通常提供許多功能,使容器化和微服務通信更加可靠、安全和可觀察。

可靠性。通過 sidecar 代理和控制平面管理通信可提高服務請求、策略和配置的效率和可靠性。具體功能包括負載平衡和故障注入。

可觀察性。service mesh框架可以提供對服務行為和健康狀況的洞察。控制平面可以收集和聚合來自組件交互的遙測數據,以確定服務健康狀況,例如流量和延遲、分佈式跟踪和訪問日誌。與 Prometheus、Elasticsearch 和 Grafana 等工具的第三方集成可實現進一步的監控和可視化。

安全。service mesh可以自動加密通信並從網絡到應用程式和單個微服務分發安全策略,包括身份驗證和授權。通過控制平面和邊車代理集中管理安全策略有助於跟上分佈式應用程式內部和之間日益複雜的連接。

service mesh的優缺點

service mesh解決了管理服務到服務通信的一些大問題,但不是全部。service mesh的一些優點如下:

  • 簡化微服務和容器中服務之間的通信。
  • 更容易診斷通信錯誤,因為它們會發生在它們自己的基礎設施層上。
  • 支持加密、認證和授權等安全功能。
  • 允許更快地開發、測試和部署應用程式。
  • 放置在容器集群旁邊的 Sidecar 可以有效地管理網絡服務。

service mesh的一些缺點如下:

  • 運行時實例通過使用service mesh而增加。
  • 每個服務調用都必須首先通過 sidecar 代理運行,這增加了一個步驟。
  • service mesh不涉及與其他服務或系統的集成,以及路由類型或轉換映射。
  • 網絡管理的複雜性是抽象和集中的,但並未消除——必須有人將service mesh集成到工作流中並管理其配置。

service mesh市場

根據2020 年年中進行的一項調查,service mesh企業的採用仍處於起步階段,遠遠落後於容器。根據這些調查受訪者的說法,Istio、Linkerd 和 HashiCorp Consul 是生產中使用最多的service mesh。

Istio 是由 Google、IBM 和 Lyft 提供的開源service mesh,是一個最初針對 Kubernetes 部署的通用控制平面,但架構師可以在多個平台上使用它。它的數據平面依賴於稱為 Envoy sidecars 的代理。

Linkerd 是另一個開源的多平台service mesh,由 Buoyant 開發,建立在 Twitter 的 Finagle 庫之上。該service mesh支持Kubernetes、Docker和Amazon ECS等平台。

HashiCorp 的 Consul 提供服務發現和service mesh功能來處理分佈式環境中的網絡管理。它適用於 AWS 和 Microsoft Azure,也可作為 SaaS 產品使用。

以下是當今可用的許多service mesh產品和服務的按字母順序排列的列表。有些是開源的或部分基於開源技術;有些與其他service mesh平台相關聯(Solo.io 和 Tetrate 基於 Istio;Buoyant 是 Linkerd 的託管版本)。許多都可以作為 SaaS 產品使用。主要的雲提供商和 Kubernetes 平台提供商提供打包和託管的service mesh產品。

  • AWS 應用網格
  • Azure Service Fabric Mesh(當前為預覽版)
  • 浮力導管
  • F5 Nginx service mesh
  • Google Anthos service mesh
  • HashiCorp 領事
  • Istio
  • 孔網
  • 隈研吾
  • 鏈接器
  • 紅帽 OpenShift service mesh
  • Solo.io Gloo Mesh
  • Tetrate
  • Tigera Calico 雲
  • Traefik 實驗室
  • VMware Tanzu service mesh