带你读《Apache Dubbo微服务开发从入门到精通》——四、服务网格(1)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 带你读《Apache Dubbo微服务开发从入门到精通》——四、服务网格(1)


四、 服务网格

 

1. 基于Istio的Dubbo Mesh总体架构

 

Dubbo Mesh是Dubbo在云原生背景的微服务整体解决方案,它帮助开发者实现Dubbo服务与标准的Kubernetes Native Service体系的打通,让Dubbo应用能够无缝接入Istio等业界主流服务网格产品。

 

以下是Dubbo Mesh的部署架构图

 

image.png

 

控制面。Istio作为统一控制面,为集群提供Kubernetes适配、服务发现、证书管理、可观测性、流量治理等能力。

 

数据面。Dubbo应用实例作为数据面组件,支持两种部署模式

 

Proxy模式。Dubbo进程与Envoy部署在同一pod,进出Dubbo的流量都经Envoy代理拦截,由Envoy执行流量管控。

Proxyless模式。Dubbo进程独立部署,进程间直接通信,通过xDS协议与控制面直接交互。

 

关于服务网格架构以及为何要接入Istio控制面,请参考Istio官网,本文不包含这部分通用内容的讲解,而是会侧重在Dubbo Mesh解决方案本身。

 

1) Dubbo Mesh

 

Proxy Mesh

 

在proxy模式下,Dubbo与Envoy等边车Proxy or Sidecar部署在一起

 

image.png

 

以上是Dubbo Proxy Mesh部署架构图

 

Dubbo与Envoy部署在同一个Pod中,Istio实现对流量和治理的统一管控。

 

Dubbo只提供面向业务应用的编程API、RPC通信能力,其余流量管控能力如地址发现、负载均衡、路由寻址等都下沉到Envoy,Envoy拦截所有进出流量并完成路由寻址等服务治理工作。

 

控制面与Envoy之间通过图中虚线所示的xDS协议进行配置分发。

 

在Proxy模式下,Dubbo3通信层选用Triple、gRPC、REST等基于HTTP的通信协议可以获得更好的网关穿透性与性能体验。

 

Proxyless Mesh

 

在Proxyless模式下,没有Envoy等代理组件,Dubbo进程保持独立部署并直接通信,Istio控制面通过xDS与Dubbo进程进行治理能力交互。

 

image.png

 

Proxyless模式下Dubbo部署与服务网格之前基本一致,通过不同语言版本的Dubbo3 SDK直接实现xDS协议解析

 

为什么需要Proxyless Mesh

 

Proxy模式很好的实现了治理能力与有很多优势,如平滑升级、多语言、业务侵入小等,但也带来了一些额外的问题,比如:

 

Sidecar通信带来了额外的性能损耗,这在复杂拓扑的网络调用中将变得尤其明显。

Sidecar的存在让应用的声明周期管理变得更加复杂。

部署环境受限,并不是所有的环境都能满足Sidecar部署与请求拦截要求。

 

在Proxyless模式下,Dubbo进程之间继续保持直连通信模式:

 

没有额外的Proxy中转损耗,因此更适用于性能敏感应用

更有利于遗留系统的平滑迁移

架构简单,容易运维部署

适用于几乎所有的部署环境

 

2) 示例任务

 

了解了足够多的原理知识,我们推荐你访问如下示例进行动手实践。

 

 

3) 可视化

 

推荐使用Dubbo Admin作为您Dubbo集群的可视化控制台,它兼容所有Kubernetes、Mesh和非Mesh架构的部署。

 

除此之外,你也可以使用Istio官方推荐的可视化工具来管理您的Dubbo Mesh集群。

 

4) 接入非Istio控制面

 

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 控制面安装与能力差异请参见上面的示例任务链接。

 

5) 老系统迁移方案

 

如何解决注册中心数据同步的问题?

 

本书写作之时,Dubbo社区正在以Admin项目为基础推进此部分建设

 

如何解决Dubbo2协议通信的问题?

 

目前业界有Aeraki Mesh等相关的解决方案可供参考。

 

2. 基于Istio&Envoy Mesh示例

 

遵循以下步骤,可以轻松掌握如何开发符合Service Mesh架构的Dubbo服务,并将其部署到Kubernetes并接入Istio的流量治理体系。在此查看

 

1) 总体目标

 

部署Dubbo应用到Kubernetes

Istio自动注入Envoy并实现流量拦截

基于Istio规则进行流量治理

 

2) 基本流程与工作原理

 

这个示例演示了如何将Dubbo开发的应用部署在Istio体系下,以实现Envoy对Dubbo服务的自动代理,示例总体架构如下图所示。

 

image.png

 

完成示例将需要的步骤如下:

 

创建一个Dubbo应用点击这里

 

构建容器镜像并推送到镜像仓库(本示例官方镜像点击这里查看

 

分别部署Dubbo Provider与Dubbo Consumer到Kubernetes并验证Envoy代理注入成功

 

验证Envoy发现服务地址、正常拦截RPC流量并实现负载均衡

 

基于Istio VirtualService实现按比例流量转发

 


 《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——四、服务网格(2):https://developer.aliyun.com/article/1223950


 


 


 

 


相关文章
|
9月前
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
343 93
|
12月前
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
12月前
|
运维 监控 安全
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
12月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
668 117
|
12月前
|
负载均衡 监控 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
170 39
|
8月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
125 0
|
12月前
|
存储 监控 负载均衡
构建高效微服务架构:服务治理与监控的实践
构建高效微服务架构:服务治理与监控的实践
|
12月前
|
负载均衡 Java 云计算
微服务架构下的服务治理与容错机制
微服务架构下的服务治理与容错机制
193 20
|
12月前
|
负载均衡 算法 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
|
12月前
|
监控 安全 测试技术
深入理解并实践微服务架构中的服务治理
深入理解并实践微服务架构中的服务治理
494 1

相关产品

  • 服务网格
  • 推荐镜像

    更多