• 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.dubbogroupId>
      <artifactId>dubbo-spring-boot-starterartifactId>
    dependency>
    
    
    
    
    <dependency>
      <groupId>org.apache.dubbogroupId>
      <artifactId>dubbo-registry-zookeeperartifactId>
    dependency>
           
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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>dubboartifactId>
        <groupId>com.alibabagroupId>
      exclusion>
    exclusions>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    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"

    解决方法:

    
    
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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 方式配置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    参考文档

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

    — END —
    感谢阅读

  • 相关阅读:
    [附源码]Python计算机毕业设计Django面向高校活动聚App
    Kafka保证消息幂等以及解决方案
    MySQL 9.0创新版发布!功能又进化了!
    Sentinel
    【LeetCode】滑动窗口题解汇总
    面向万物智联的云原生网络
    排序归纳 Java版
    SpringBoot SSMP整合案例
    vim操作教程,看这一篇绝对足够啦~
    企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
  • 原文地址:https://blog.csdn.net/fxbin123/article/details/125904249