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

简介: 带你读《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


 


 


 

 


相关文章
|
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 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
627 121
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
290 0
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
720 9
Apache IoTDB进行IoT相关开发实践
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
515 4
|
自然语言处理 监控 Cloud Native
探索微服务架构中的服务网格Service Mesh
【10月更文挑战第7天】服务网格(Service Mesh)是微服务架构中的关键组件,通过在每个服务实例旁部署Sidecar代理,实现服务间通信的管理、监控和安全增强。本文介绍了服务网格的基本概念、核心组件、优势及实施步骤,探讨了其在现代开发中的应用,并提供了实战技巧。
|
运维 负载均衡 监控
探索微服务架构下的服务网格(Service Mesh)实践之路
【8月更文挑战第30天】 在当今日益复杂的分布式系统中,微服务架构已成为众多企业解决系统扩展与维护难题的利器。然而,随着服务的不断增多和网络交互的复杂性提升,传统的微服务管理方式开始显得力不从心。服务网格(Service Mesh)作为一种新兴的解决方案,旨在通过提供应用层的网络基础设施来简化服务间通讯,并增强系统的可观察性和安全性。本文将分享我在采用服务网格技术过程中的经验与思考,探讨如何在现代云原生环境中有效地实施服务网格,以及它给开发和运维带来的变革。
|
负载均衡 监控 安全
Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
724 3
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
916 12
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
327 1
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
379 1

热门文章

最新文章

相关产品

  • 服务网格
  • 推荐镜像

    更多