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

本文涉及的产品
云原生网关 MSE Higress,422元/月
性能测试 PTS,5000VUM额度
服务治理 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天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
20天前
|
Java 持续交付 微服务
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过具体案例分析,揭示了其如何助力企业应对业务复杂性、提升系统可维护性和可扩展性。文章首先概述了微服务的核心概念及其优势,随后详细阐述了实施微服务过程中的关键技术选型、服务拆分策略、容错机制以及持续集成/持续部署(CI/CD)的最佳实践。最后,通过一个真实世界的应用实例,展示了微服务架构在实际项目中的成功应用及其带来的显著成效。 ####
|
27天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
87 3
|
30天前
|
设计模式 API 开发者
探索现代后端开发:微服务架构与API设计
【10月更文挑战第6天】探索现代后端开发:微服务架构与API设计
|
1天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
3天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
4天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
23 2
|
13天前
|
缓存 运维 监控
后端开发中的微服务架构实践与挑战#### 一、
【10月更文挑战第22天】 本文探讨了微服务架构在后端开发中的应用实践,深入剖析了其核心优势、常见挑战及应对策略。传统后端架构难以满足快速迭代与高可用性需求,而微服务通过服务拆分与独立部署,显著提升了系统的灵活性和可维护性。文章指出,实施微服务需关注服务划分的合理性、通信机制的选择及数据一致性等问题。以电商系统为例,详细阐述了微服务改造过程,包括用户、订单、商品等服务的拆分与交互。最终强调,微服务虽优势明显,但落地需谨慎规划,持续优化。 #### 二、
|
19天前
|
监控 API 开发者
后端开发中的微服务架构实践与优化
【10月更文挑战第17天】 本文深入探讨了微服务架构在后端开发中的应用及其优化策略。通过分析微服务的核心理念、设计原则及实际案例,揭示了如何构建高效、可扩展的微服务系统。文章强调了微服务架构对于提升系统灵活性、降低耦合度的重要性,并提供了实用的优化建议,帮助开发者更好地应对复杂业务场景下的挑战。
19 7
|
17天前
|
运维 监控 API
后端开发中的微服务架构实践与挑战####
【10月更文挑战第19天】 本文将深入浅出地探讨微服务架构在后端开发中的应用,通过实例解析其核心理念、优势所在,以及实施过程中可能遭遇的挑战与应对策略。不同于传统单体应用,微服务以其轻量级、灵活性和可扩展性受到青睐,但同时也带来了服务间的通信复杂性、数据一致性等问题。通过本篇文章,读者将对微服务架构有一个全面而深入的理解,为实际项目中的选型与实施提供参考。 ####

相关产品

  • 服务网格
  • 推荐镜像

    更多
    下一篇
    无影云桌面