Dubbo Mesh 总体技术架构方案

简介: 本文将对 Dubbo Mesh 整体设计原则、部署架构与插件管控机制的规划做整体说明。

作者:江河清


Dubbo Mesh 作为 Dubbo 全面拥抱云原生的又一个里程碑项目,将为 Dubbo 用户提供平滑升级到 Service Mesh 架构的解决方案,同时继续基于 Dubbo 强大可扩展性底座提供生产级服务治理、服务管控等能力。


本文将对 Dubbo Mesh 整体设计原则、部署架构与插件管控机制的规划做整体说明。


设计原则


Dubbo Mesh 以插件化的方式接入各生态,除了部分维持基础运行的架构外绝大部分的组件支持热插拔,支持根据不同部署场景动态选择部署方式。


插件化能力的设计延续了 Dubbo 一贯的高可扩展性的特征,基于这样的一个基础能力,开发者可以根据自己所需的真实部署场景进行定制,如接入内部的自建 DevOps 平台等。通过插件化的能力,也使得 Dubbo Mesh 在未来能更容易适配新的基础组件;通过热插拔的设计,绝大部分的新功能将能在生产环境平滑落地,很大程度上隔离由于中间件变更给业务带来的变更协作影响。


1.png


部署架构


从架构与部署形态上来说 Dubbo Mesh 明确的区分为控制面与数据面。


其中控制面作为服务治理核心,具有抽象的、统一的模型,负责与底层基础设施的对接,提供从启动配置、服务发现、流量管理到认证鉴权等的统一治理入口。


数据面则专注在业务编程模型与通信能力上,基于多种部署形态(SDK、Sidecar、Agent)接入服务治理能力,基于动态部署能力从业务代码中解耦出来。


从整体组件角色来说,Dubbo Mesh 中有两种角色的组件:基础组件、扩展性组件。


基础组件由 Dubbo 原生提供,用于构建整个体系,如上图中的 Admin 用户管控组件、Dynamic Binary Push 动态分发组件(下文中会展开说明)、Proxy 数据代理组件等。


扩展性组件由 Dubbo 和其他生态共建提供,用于提供特定化能力,如上图中功能的 Test 服务测试组件、Config 配置动态修改组件、Skywalking 全链路追踪组件等。各扩展性组件均设计为可热插,可以可选的动态开关部分能力。


数据流


上图中除了部署架构的描述之外,还标识了在 Dubbo Mesh 这样一个部署架构下的数据流向。


Dubbo Mesh 提供了两种通信模式,分别是 Proxy 模式与直连模式。在基础组件中的 Proxy 提供到达数据面的通路,一个 Any 数据流,不绑定任何上层语义。扩展性组件可选通过 Proxy 进行互通,或者直接和数据面进行互通。


Proxy 模式不需要组件感知集群的连接模式,适用于一些比较简单、无独立服务端的组件实现,基于 Dubbo 的能力能直接实现与数据面的通信,降低管理连接的难度。直连模式用于集成一些复杂、有独立服务端的组件,如全链路追踪组件通常都需要独立部署中心化的收集服务端,如果流量通过 Dubbo Proxy 进行转发在一定程度上会导致部署成本的提高。


数据面架构


Dubbo Mesh 的数据面规划分成 Java Proxyless 和 Sidecar 两种模式。Java Proxyless 模式提供基于 Java ClassLoader 动态加载能力下的高性能部署方案;Sidecar 模式提供基于外置进程替换的跨语言、跨架构的通用部署方案。


Java Proxyless


2.png

Java Proxyless 模式是从常规 Dubbo Java 部署模式升级而来的,通过将 Dubbo 内核与实现分离的方式,基于 Java ClassLoader 的动态加载机制避免具体实现能力与业务代码进行耦合,提供中间件热升级能力。


如上图所示,Dubbo SDK 定义 Dubbo 扩展点,如 Router、Registry、LoadBalance 等,扩展点尽可能复用 Dubbo 已有的 SPI 机制。此外,Dubbo SDK 中集成一个统一的 DubboInitializer,运行时从控制面拉取所需运行时代码,组装成为一个完整的 Dubbo SDK。


Sidecar


3.png


Sidecar 模式下 Dubbo 作为一个独立进程运行,通过 UDS / TCP 等本地通讯方式或者请求拦截的方式管控流量。通过在 Sidecar 进程中进行数据加工、流量定制化路由等方式达成流量治理的目标。


Sidecar 模式也类似 Proxyless 模式提供扩展点,支持不同场景下自定义组装实现、动态替换升级的能力。由于 Sidecar 是从流量层面直接进行治理,和业务代码本身不耦合,可以提供跨语言、跨架构的通用治理能力。


插件推送模式


在前面的两种数据面架构中都涉及到了扩展实现的动态下发的能力,本节中将对这部分能力做具体阐述说明。


Java Proxyless


4.png


Java Proxyless 模式下的扩展是通过 Java ClassLoader 进行动态类加载的,因此只需要拿到对应扩展的实现类既可实现加载。在 Dubbo Mesh 中通过统一的 Dynamic Binary Push 动态分发组件可以实现将每个插件中自带的对应类实现下发到数据面中进行加载。


Sidecar(Preview)


5.png


Sidecar 模式下,有多种方式能实现热生效。这里以替换进程的方式为例,在控制面中动态组装 Sidecar 的代码并编译,通过Dynamic Binary Push 动态分发组件动态下发 Sidecar 的二进制包到数据面中的 Dubbo Agent,由 Dubbo Agent 负责拉起新的进程并切换流量到新的进程上。


更多关于 Dubbo Mesh 的动态可以关注 Apache Dubbo 社区官方公众号(ApacheDubbo),及时获取最新的消息。


微信公众号 | ApacheDubbo

钉钉群号 | 21976540

官网 | https://dubbo.apache.org 


点击“此处”,直达 Dubbo 官网!

相关文章
|
4月前
|
网络协议 NoSQL API
转转客服IM系统的WebSocket集群架构设计和部署方案
客服IM系统是转转自研的在线客服系统,是用户和转转客服沟通的重要工具,主要包括机器人客服、人工客服、会话分配、技能组管理等功能。在这套系统中,我们使用了很多开源框架和中间件,今天讲一下客服IM系统中WebSocket集群的的实践和应用。
482 141
|
4月前
|
消息中间件 监控 Cloud Native
高效设计:支持亿级用户社交关系的100W QPS架构方案
面对亿级用户与百万QPS的高并发场景,性能测试成为系统稳定的关键。本文剖析真实业务痛点,详解从接口压测、全链路监控到瓶颈定位的完整性能体系,助你掌握大厂级性能优化能力,从容应对卡顿、宕机等线上挑战。
|
4月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
边缘计算 Kubernetes 物联网
Kubernetes 赋能边缘计算:架构解析、挑战突破与实践方案
在物联网和工业互联网快速发展的背景下,边缘计算凭借就近处理数据的优势,成为解决云计算延迟高、带宽成本高的关键技术。而 Kubernetes 凭借统一管理、容器化适配和强大生态扩展性,正逐步成为边缘计算的核心编排平台。本文系统解析 Kubernetes 适配边缘环境的架构分层、核心挑战与新兴解决方案,为企业落地边缘项目提供实践参考。
485 0
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
1019 3
Mysql高可用架构方案
|
10月前
|
监控 Java Nacos
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
阿里二面:10亿级分库分表,如何丝滑扩容、如何双写灰度?阿里P8方案+ 架构图,看完直接上offer!
|
6月前
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
317 2
|
6月前
|
数据采集 边缘计算 定位技术
ar景区导航导览开发方案:核心技术架构与功能设计
本方案针对传统景区导航吸引力弱、互动性差等问题,融合三维建模、多源定位与AR引擎技术,实现室内外精准导航与AR互动体验。支持AR寻宝等功能,提升游客体验与景区竞争力。
490 0
|
6月前
|
存储 消息中间件 NoSQL
跟着大厂学架构01:如何利用开源方案,复刻B站那套“永不崩溃”的评论系统?
本文基于B站技术团队分享的《B站评论系统的多级存储架构》,解析其在高并发场景下的设计精髓,并通过开源技术栈(MySQL、Redis、Java)复刻其实现。文章深入讲解了多级存储、数据同步、容灾降级等关键设计,并附有完整代码实现,助你掌握大厂架构设计之道。
296 0