服務網格

服務網格

Dubbo Mesh 是 Dubbo 在雲原生環境下的全方位微服務解決方案。它幫助開發者將 Dubbo 服務與標準的 Kubernetes 原生服務系統整合,實現與 Istio 等領先服務網格產品的無縫連接。

以下是 Dubbo Mesh 的部署架構圖。

Dubbo-Mesh

  • 控制平面:Istio 作為統一的控制平面,提供叢集範圍的功能,例如 Kubernetes 適配、服務發現、憑證管理、可觀察性和流量管理。
  • 數據平面:Dubbo 應用程式實例作為數據平面元件,並支援兩種部署模式
    • 代理模式:Dubbo 和 Envoy 部署在同一個 Pod 中,所有進出 Dubbo 的流量都由 Envoy 攔截和管理。
    • Proxyless 模式:Dubbo 實例獨立部署,彼此直接通訊,並透過 xDS 協議直接與控制平面互動。

有關服務網格架構的一般內容以及為何要與 Istio 控制平面整合,請參閱 Istio 官方網站。本文檔將重點介紹 Dubbo Mesh 解決方案本身。

Dubbo Mesh

代理網格

在代理模式下,Dubbo 與 Envoy 等 Sidecar 一起部署。

dubbo-sidecar

上圖描述了 Dubbo 代理網格的部署

  • Dubbo 和 Envoy 部署在同一個 Pod 中,由 Istio 管理流量和治理。
  • Dubbo 為商業應用程式提供程式設計 API 和 RPC 通訊功能,而其他功能,例如地址發現、負載均衡和路由,則委託給 Envoy,Envoy 會攔截所有進出流量。
  • 控制平面透過 xDS 協議將配置分發給 Envoy,如圖中的虛線所示。

在代理模式下,使用基於 HTTP 的 Dubbo3 通訊層,例如 Triple、gRPC 和 REST,可以獲得更好的閘道穿透性和效能。

Proxyless 網格

在 Proxyless 模式下,沒有像 Envoy 這樣的代理元件。Dubbo 的程序獨立部署並直接通訊。Istio 的控制平面透過 xDS 協議與 Dubbo 程序互動以進行治理。

dubbo-proxyless

在 Proxyless 模式下,Dubbo 的部署與之前基本相同,但 Dubbo3 SDK 直接實現了 xDS 協議解析。

為何選擇 Proxyless 網格?

雖然代理模式提供了許多優點,例如平滑升級、多語言支援和最小的業務侵入性,但也帶來了一些挑戰。

  • Sidecar 通信會增加額外的效能負擔,尤其在複雜的網路拓撲中更為明顯。
  • Sidecar 的存在使應用程式生命週期管理變得更加複雜。
  • 並非所有環境都能夠支援 Sidecar 部署和請求攔截。

在無代理模式下,Dubbo 进程繼續直接通訊。

  • 沒有額外的代理相關負擔,使其更適合對效能敏感的應用程式。
  • 它簡化了舊系統的遷移。
  • 架構簡單易於管理。
  • 它適用於幾乎所有部署環境。

範例任務

在獲得足夠的理論知識後,我們建議您參考以下範例進行實作練習。

視覺化

我們建議使用Dubbo Admin作為 Dubbo 叢集的視覺化控制台。它與所有 Kubernetes、Mesh 和非 Mesh 架構部署相容。

此外,您可以使用Istio 官方推薦的視覺化工具來管理您的 Dubbo Mesh 叢集。

與非 Istio 控制平面的整合

Dubbo Mesh 本身並未與任何控制平面產品實作綁定。您可以使用 Istio、Linkerd、Kuma 或任何支援 xDS 協定的控制平面產品。Sidecar 也是如此。

如果您已經體驗過基於 Istio 的 Dubbo Mesh範例任務,並且發現 Istio 滿足您對 Dubbo Mesh 的治理需求,那麼採用 Istio 作為您的控制平面是首選方案。

如果您發現 Dubbo 在 Istio 模式下的功能有限,並且需要這些功能,您可以考慮整合 Dubbo 的控制平面來取代 Istio,以獲得更好的原生 Dubbo 支援和效能。詳情請參閱基於自定義 Dubbo 控制平面的 Dubbo Mesh 範例任務

簡而言之,這是 Dubbo 社群基於 Istio 發布的自定義版本控制平面。有關 Dubbo 控制平面的安裝和功能差異,請參閱上面的範例任務連結。


最後修改日期:2023 年 10 月 20 日:翻譯部分核心功能文件 (#2840) (caded9f57f4)