带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 平滑升级到Dubbo3版本(上)

简介: 带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 平滑升级到Dubbo3版本(上)

迁移到Dubbo3

 

一、 平滑升级到Dubbo3版本

 

1. 升级到Dubbo3的收益

 

Dubbo3依旧保持了2.x的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理(如地址发现、流量管理等)能力来更好的管控微服务集群;Dubbo3对原有框架的升级是全面的,体现在核心Dubbo特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。

image.png


 

通用的通信协议全新的RPC协议应摒弃私有协议栈,以更通用的HTTP/2协议为传输层载体,借助HTTP协议的标准化特性,解决流量通用性、穿透性等问题,让协议能更好的应对前后端对接、网关代理等场景;支持Stream通信模式,满足不同业务通信模型诉求的同时给集群带来更大的吞吐量。

 

面向百万集群实例,集群高度可伸缩。随着微服务实践的推广,微服务集群实例的规模也在不停的扩展,这得益于微服务轻量化、易于水平扩容的特性,同时也给整个集群容量带来了负担,尤其是一些中心化的服务治理组件;Dubbo3需要解决实例规模扩展带来的种种资源瓶颈问题,实现真正的无限水平扩容。

 

全面拥抱云原生。

 

2. 升级前的兼容性检查

 

在跨版本升级的过程中,存在的风险点从大到小分别有:直接修改Dubbo源码->基于Dubbo SPI扩展点进行扩展->基于API或者Spring的使用方式。

 

1) 直接修改Dubbo源码

 

对于直接修改Dubbo源码这部分的需要修改方自行判断是否在高版本中正常工作,对于这种非标准行为,Dubbo无法保证其先前的兼容性。此外,通过javagent或者asm等通过运行时对Dubbo的修改也在此范围内。此类修改大部分可以通过后文提供的扫描工具检测出来。

 

2) SPI扩展

 

a) 不兼容项

 

对于SPI扩展的,除了应用级服务方向和EventDispatcher两个机制在3.x中做了破坏性的修改,在2.7.x中提供的绝大多数的扩展在3.x中也都提供。此部分需要关注的有两个方面:

 

事件总线:出于事件管理的复杂度原因,EventDispatcher和EventListener在Dubbo 3.x的支持已经删除。如果有对应扩展机制的使用请考虑重构为对应Dubbo功能的扩展。

 

应用级服务发现:Dubbo 2.7中的应用级服务发现的整体机制在Dubbo 3.x中已经被完整重构,功能的性能与稳定性有了很大程度上的提高。因此我们建议您不要使用Dubbo 2.7中的应用级服务发现机制,如果有对应的扩展可以在升级到Dubbo 3.x之后基于新的代码重新验证实现(绝大多数应用级服务发现的API是向前兼容的)。

 

b) 优化项(可选)

 

此外,Dubbo 3.x中对部分扩展点的工作机制进行了优化,可以较大程度上提升应用的性能。

 

拦截器机制

 

Dubbo中可以基于Filter拦截器对请求进行拦截处理。在Dubbo 2.7中支持在路由选址后再对请求进行拦截处理。Dubbo 3.x中抽象了全新的ClusterFilter机制,可以在很大程度上降低内存的占用,对与超大规模集群有较大的收益。

 

如果您有一些Consumer侧的拦截器是基于Filter机制实现的,如果没有和远端的IP地址强绑定的逻辑,我们建议您将对应的org.apache.dubbo.rpc.Filter SPI扩展点迁移到org.apache.dubbo.rpc.cluster.filter.ClusterFilter这个新的SPI扩展点。两个接口的方法定义是完全一样的。

 

Router->StateRouter

 

Dubbo中提供了Router这个可以动态进行选址路由的能力,同时绝大多数的服务治理能力也都是基于这个Router扩展点实现的。在Dubbo 3.x中,Dubbo在Router的基础上抽象了全新的StateRouter机制,可以在选址性能以及内存占用上有大幅优化。关于StateRouter的更多介绍我们会在后续的文档中发布。

 

3) API/Spring使用

 

对于基于API或者Spring的使用,Dubbo 3.x和2.7.x的使用方式是对齐的,在Dubbo 3.x中对部分无效的配置进行了强校验,这部分异常会在启动过程中直接报错,请按照提示修改即可。

 

总体上来说,在地址注册与发现环节,3.x是完全兼容2.x版本的,这意味着,用户可以选择将集群内任意数量的应用或机器升级到3.x,同时在这个过程中保持与2.x版本的互操作性。

 

如关心迁移背后工作原理,请参考迁移规则详情与工作原理


《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3—— 一、 平滑升级到Dubbo3版本(下):https://developer.aliyun.com/article/1223615

相关文章
|
消息中间件 存储 人工智能
Apache RocketMQ for AI 战略升级,开启 AI MQ 新时代
Apache RocketMQ 顺应AIGC浪潮,针对长时会话、稀缺算力调度及AI Agent协作等挑战,推出专为AI时代打造的消息引擎。通过“会话即主题”的Lite-Topic机制,实现百万级队列动态管理,保障会话连续性与断点续传;结合智能资源调度能力,如定速消费与优先级队列,提升算力利用率与服务公平性;同时构建高效异步通信枢纽,支撑Agent-to-Agent及AI工作流的非阻塞协同。已在阿里集团与阿里云多个AI产品中大规模验证,助力开发者构建稳定、高效、可扩展的AI应用基础设施。
|
12月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
977 0
|
11月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
1188 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
593 110
|
12月前
|
SQL 存储 JSON
Apache Doris 2.1.10 版本正式发布
亲爱的社区小伙伴们,Apache Doris 2.1.10 版本已正式发布。2.1.10 版本对湖仓一体、半结构化数据类型、查询优化器、执行引擎、存储管理进行了若干改进优化。欢迎大家下载使用。
506 5
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
1335 131
|
存储 SQL Java
Apache Doris 2.1.9 版本正式发布
Apache Doris 2.1.9 版本正式发布,欢迎使用~
483 4
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
Apache RocketMQ ACL 2.0 全新升级
826 8

热门文章

最新文章

推荐镜像

更多