0
点赞
收藏
分享

微信扫一扫

dubbo 2.5.3 升级记录 to 2.7.10


PS: 当前经验源于一年前(2021.7),文章是整理之前的零散记录

升级过程 2.7.8, 2.7.9, 2.7.10,一路踩坑,直到2.7.10 方才成功

dubbo 版本选择 :​​https://www.anquanke.com/post/id/245429​​

springboot 版本 2.3.10.RELEASE
springcloud 版本 Hoxton.SR11
springcloud alibaba 版本 2.2.5.RELEASE

建议升级步骤

  1. 依赖关系维护整理,理论上,xxx-service-api module 至多只有部分注入 lombok, hutool-all, guava 等工具性质的依赖,以及 entity 的依赖; 避免其它项目引用时产生的依赖冲突问题
  2. springboot 版本升级,为引入 springcloud alibaba 做准备,nacos 的使用,依据之前的经验来看,最少需要使用 1.4.2 版本; 如果想要获得更好的权限控制体系的话,最低需要 2.0.1

dubbo版本升级步骤(from 2.5.3 to 2.7.10)

1. 新增 maven 依赖

<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>


<!-- 注册中心按需选择,这里使用的是zookeeper, 其它请自行引入 -->
<!--
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
</dependency>

2. 修改dubbo的xml配置文件中的schema地址

将所有​​[http://code.alibabatech.com/schema/dubbo](http://code.alibabatech.com/schema/dubbo)​​​ 替换为 ​​[http://dubbo.apache.org/schema/dubbo](http://dubbo.apache.org/schema/dubbo)​

3. 修改包名

​com.alibaba.dubbo​​​ 修改为 ​​org.apache.dubbo​

其它问题记录

版本冲突问题

  1. 需排除​​com.alibaba.dubbo​​ 的依赖

<exclusions>
<exclusion>
<artifactId>dubbo</artifactId>
<groupId>com.alibaba</groupId>
</exclusion>
</exclusions>

  1. 日志建议使用 spring-boot-starter-log4j2, 不再额外维护日志的N多组件

序列化问题

升级版本可解决, 2.7.7/2.7.8 可能会遇到序列化问题, 升级2.7.9/2.7.10 可以解决

issue 列表:​​https://github.com/apache/dubbo/milestone/34?closed=1​​

dubbo 2.7.10 问题记录

​Invalid name="org.apache.dubbo.config.ProtocolConfig#0"​

解决方法:

<!--    <dubbo:application name="demo-provider"/>-->

<!-- <dubbo:provider filter="assetExceptionFilter"/>-->

<!-- <dubbo:registry id="xxx-service" address="${zk.url}" check="false"/>-->

<!-- <dubbo:protocol name="dubbo" dispatcher="all" port="-1" threadpool="cached" threads="1500"/>-->

dubbo:
application:
id: xxx-service
name: ${dubbo.application.id}
protocol:
name: dubbo
dispatcher: all
port: -1
threadpool: cached
threads: 1500
provider:
filter: assetExceptionFilter
registry:
id: demo
address: ${zk.url}
check: false


### 一个更友好的建议, 相同公共配置提取到配置中心,同时增加 spring.application.name 属性配置,
### dubbo.application.id/name 可以统一读取 spring.application.name
### 其次,建议废弃 xml 方式的配置,改用 application.yml 方式配置

参考文档

​​https://dubbo.apache.org/zh/docs/v2.7/user/versions/version-270/​​

— END —
感谢阅读


举报

相关推荐

0 条评论