本项目提供公司如何进行dubbo迭代的模板。这是基于一个基于大规模生产实践的做法。
在大规模的生产实践中,我们使用了基于该模板迭代的方式,进行了对dubbo的定制,使得500+的dubbo的应用,平滑的从2.5.3版本升到了内核为2.7.4.1版本
理论上你可以利用该模板,对dubbo做任何定制化的开发,无论是硬编码还是SPI扩展。
-
下载源码,编译执行
mvn clean install -Dmaven.test.skip=true -Dmaven.javaDoc.skip=true
-
使用依赖
<dependency> <groupId>com.wrapper.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.4-SNAPSHOT</version> </dependency>
- 便捷的追踪开源代码方式
- 避免开发者对dubbo本身的修改
- 复杂的定制可行性
- 模板突破了框架的内部的扩展机制,不仅限于SPI本身
- 迭代future吸收
- 随时随地的吸收bugfix,补丁。不需要和dubbo官方版本进行绑定。
- 轻易版本升级
- 模板控制了dubbo内核版本(当前2.7.4.1),提供了一个选项即可完成内核版本的升级。
- 极小的技术负债
- 避免人员流动对项目本身造成安全隐患
- dubbo
- 最终的打包jar
- dubbo-cluster
- 简单的定义一个集群也就是cluster的实现,来指导读者在dubbo框架中自定义cluster
- dubbo-common
- 放置一些公共类
- dubbo-compitable
- dubbo-compitable-spring
- 用于构建一层适配转换如果你在容器中获得是org.apache的dubbo的bean
- dubbo-compitable-zk
- 用于兼容如果业务显示的使用了dubbo框架中的api去操作zk的
- dubbo-compitable-spring
- dubbo-exchanger
- dubbo-exchanger-version
- 用于更改由Request-Response模型下的的dubbo的version的问题
- dubbo-exchanger-version
- dubbo-filter
- dubbo-filter-statistics
- 简单的定义一个Filter实现,来指导读者在dubbo框架中自定义Filter。
- dubbo-filter-statistics
- dubbo-inner
- 核心的魔改代码,提供了一些dubbo框架兼容性不好的类,以及一些被删除的类,但是业务方可能会使用
inner作为最为核心的模块,本质上通过覆盖的策略,去过滤掉来自dubbo的类。
- 通过魔改来自dubbo原生的代码,植入自己的业务代码(不推荐这种方式,请先考虑SPI扩展实现)。
- 修复dubbo中不满足的逻辑。
- 增强dubbo的兼容逻辑,典型用于公司内部从低版本升级到高版本。
- other待补充
同开源版本,仅仅更换坐标即可
请参考社区
java人士一枚,擅长开源定制,技术负债弱化。欢迎交流