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

本文涉及的产品
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《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


 


 


 

 


相关文章
|
7月前
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
300 89
|
11月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
212 2
|
10月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
551 103
|
12月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
288 99
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
162 0
|
6月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
|
负载均衡 Dubbo 应用服务中间件
框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
231 80
|
10月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
296 2
|
11月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
458 9
Apache IoTDB进行IoT相关开发实践

热门文章

最新文章

相关产品

  • 服务网格
  • 推荐镜像

    更多