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

本文涉及的产品
云原生网关 MSE Higress,422元/月
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 带你读《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

相关文章
|
5月前
|
存储 自然语言处理 BI
|
23天前
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
|
6月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
5月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
116 2
|
17天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
Apache RocketMQ ACL 2.0 全新升级
|
6月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
17天前
|
消息中间件 人工智能 Apache
Apache RocketMQ 中文社区全新升级!
Apache RocketMQ 中文社区全新升级!
|
17天前
|
存储 消息中间件 人工智能
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
|
18天前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
|
4月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。

推荐镜像

更多