首页IT科技dubbo版本号怎么查(dubbo2升级到dubbo3实践)

dubbo版本号怎么查(dubbo2升级到dubbo3实践)

时间2025-05-05 11:00:51分类IT科技浏览3454
导读:dubbo当前版本 2.7.3 期望升级到 3.0.11。 升级过程 maven依赖变更...

dubbo当前版本 2.7.3 期望升级到 3.0.11           。

升级过程 maven依赖变更 <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.0.11</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>3.0.11</version> </dependency> dubbo2 升级到dubbo3兼容性配置

服务端

dubbo.application.register-mode 服务端提供者服务的注册模式 可选值有

instance 只注册实例应用级 all 接口级+应用级均注册 interface 只注册接口级

升级到3.x之后在不修改配置的情况下默认是 all配置 开启接口级+应用级注册

消费端/客户端

服务有注册模式 那么消费端肯定也有服务订阅发现模式设置

dubbo.application.service-discovery.migration 消费端订阅模式可选值有

APPLICATION_FIRST 双订阅 即接口模式/应用级模式 智能决策 一般用于2.7.x与3.x 升级中 共存阶段 也是3.x版本默认的订阅模式 FORCE_APPLICATION 仅应用级订阅模式 FORCE_INTERFACE 仅接口级订阅模式

关于兼容这一步如果项目升级的时候没有用户使用 不做兼容性升级也没问题           ,这里主要是介绍保障逐步把2.7.x版本升级到3.x 而不是全部停机后重新部署                。

红色虚线框部分是3.x版本的部分升级后实例                ,左边是原始的2.7.x版本实例     。大概操作流程如下

1           、逐步把部分Provider替换为3.x 服务端注册模式为all应用级+接口级     ,这样2.7.x的消费端也能够根据接口服务发现

2                、逐步把部分Consumer替换为3.x 消费订阅模式为APPLICATION_FIRST 双订阅模式

3     、观察3.x版本 服务端与消费端情况      ,如果异常就回滚到2.7.x      。没啥问题的话就可以逐步全部切换到3.x版本

4      、到了这一步说明当前所有实例均为3.x版本                ,下次再更新的时候就把服务端注册模式设置为instance           ,消费端订阅模式设置为 FORCE_APPLICATION 就完美切换到3.x版本 并且是应用级服务发现                。

踩坑问题

3.0.11其实也没有太多问题 好多问题都在之前版本就修复了      ,主要就是由于自身项目编码问题导致进了一个坑

由于原来项目编码不是很规范                ,在本地服务的接口中用到@Autowired                、本服务内部调用有的又用到了 @DubboReference 这种情况启动的时候就会报错           ,在2.7.x却不报错           。这是因为3.x把Reference的bean代理也注入到spring容器中去了      。本身的@DubboService Bean也会注册到Spring容器中去                。就会导致出现2个类型一样的springBean,导致使用Autowired                ,由于属性name不规范的时候就会报错           。

Field demoService in org.apache.dubbo.springboot.demo.provider.DemoService2 required a single bean, but 2 were found: - demoServiceImpl: defined in file [D:\opensource\dubbo-samples\1-basic\dubbo-samples-spring-boot\dubbo-samples-spring-boot-provider\target\classes\org\apache\dubbo\springboot\demo\provider\DemoServiceImpl.class] - demoServiceRemote: defined in null 3.x主要新特性 服务注册与发现改版 由接口级别改为应用级 云原生更好的支持 如native image                ,dubbo proxyless Mesh, 可视化的dubbo-admin服务治理能力 全新通信协议Triple 让跨语言RPC迈了一大步           ,支持点对点调用           、stream 流式调用。写proto IDL 文件可生成各类客户端代码                ,完全兼容grpc 让java与go`成为后端深度合作伙伴 3.x小版本更新

3.0.x升级到3.1.x

变动不大就只是针对nacos的group进行了对齐                。如果配置中填写的nacos的地址带了group参数的话      ,需要客户端和服务端保持一致的group                。

当然也可以强制去掉group分组隔离功能 dubbo.nacos-service-discovery.use-default-group=false 全局属性值忽略该功能

3.1.x升级到3.2.x

最大的变更是默认序列化的变了           ,dubbo协议默认序列化由hessian2变更为 fastjson2                ,原因就是fastjson2性能更高也能兼容hessian2 也支持jdk17 和Native 。

triple协议支持自定义异常回传           。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
紫牙乌石榴石的功效与作用(石榴石的功效与作用)