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

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《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月前
|
人工智能 搜索推荐 前端开发
从代码到心灵对话:我的CodeBuddy升级体验之旅(个性化推荐微服务系统)
本文分享了使用CodeBuddy最新版本的深度体验,重点探讨了Craft智能体、MCP协议和DeepSeek V3三大功能。Craft实现从对话到代码的无缝转化,大幅提升开发效率;MCP协议打通全流程开发,促进团队协作;DeepSeek V3则将代码补全提升至新境界,显著减少Bug并优化跨语言开发。这些功能共同塑造了AI与程序员共生的未来模式,让编程更高效、自然。
522 15
|
12月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
217 2
|
监控 JavaScript 测试技术
从单体应用迁移到微服务的最佳实践
【8月更文第29天】随着软件架构的发展,越来越多的企业开始考虑从传统的单体应用迁移到微服务架构。虽然迁移可以带来诸如更好的可扩展性、更高的灵活性等优势,但这一过程也可能充满挑战。本文将详细介绍如何顺利地进行这一转变,并提供一些实用的步骤和示例代码。
391 1
|
开发框架 IDE .NET
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
169 0
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
|
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 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
299 101
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
169 0
|
7月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
106 0
|
11月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
304 2
|
12月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
468 9
Apache IoTDB进行IoT相关开发实践

热门文章

最新文章

推荐镜像

更多