Dubbo Mesh 是 Dubbo 在云原生背景的微服务整体解决方案,它帮助开发者实现 Dubbo 服务与标准的 Kubernetes Native Service 体系的打通,让 Dubbo 应用能够无缝接入 Istio 等业界主流服务网格产品。
以下是 Dubbo Mesh 的部署架构图
关于服务网格架构以及为何要接入 Istio 控制面,请参考 Istio 官网,本文不包含这部分通用内容的讲解,而是会侧重在 Dubbo Mesh 解决方案本身。
在 proxy 模式下,Dubbo 与 Envoy 等边车 (Proxy or Sidecar) 部署在一起
以上是 Dubbo Proxy Mesh 部署架构图
在 Proxy 模式下,Dubbo3 通信层选用 Triple、gRPC、REST 等基于 HTTP 的通信协议可以获得更好的网关穿透性与性能体验。
在 Proxyless 模式下,没有 Envoy 等代理组件,Dubbo 进程保持独立部署并直接通信,Istio 控制面通过 xDS 与 Dubbo 进程进行治理能力交互。
Proxyless 模式下 Dubbo 部署与服务网格之前基本一致,通过不同语言版本的 Dubbo3 SDK 直接实现 xDS 协议解析
Proxy 模式很好的实现了治理能力与有很多优势,如平滑升级、多语言、业务侵入小等,但也带来了一些额外的问题,比如:
在 Proxyless 模式下,Dubbo 进程之间继续保持直连通信模式:
了解了足够多的原理知识,我们推荐你访问如下 示例 进行动手实践。
推荐使用 Dubbo Admin 作为您 Dubbo 集群的可视化控制台,它兼容所有 Kubernetes、Mesh 和非 Mesh 架构的部署。
除此之外,你也可以使用 Istio 官方推荐的可视化工具 来管理您的 Dubbo Mesh 集群。
Dubbo Mesh 本身并不绑定任何控制面产品实现,你可以使用 Istio、Linkerd、Kuma 或者任一支持 xDS 协议的控制面产品,对于 Sidecar 亦是如此。
如果你已经完整的体验了 基于 Istio 的 Dubbo Mesh 示例任务,并且发现 Istio 很好的满足了你的 Dubbo Mesh 治理诉求,那么采用 Istio 作为你的控制面是首选的解决方案。
如果你发现 Istio 模式下 Dubbo 部分能力受限,而这部分能力正好是你需要的,那么你需要考虑接入 Dubbo 控制面,用 Dubbo 控制面来替代 Istio,以获得更多 Dubbo 体系原生能力支持、更好的性能体验。具体请参见 基于 Dubbo 定制控制面的 Dubbo Mesh 示例任务。
简单来讲,这是 Dubbo 社区发布的一款基于 Istio 的定制版本控制面,Dubbo 控制面安装与能力差异请参见上面的示例任务链接。
Address Synchronization
Aeraki Mesh