从 2.5.3 到 当下
从 2.5.3 到 当下
2012.10.23 2.5.3
2017.09.07 2.5.4
2017.09.12 2.5.5
2017.10.12 2.5.6
2017.11.04 2.5.7
2017.12.12 2.5.8
2018.01.08 2.6.0
2018.01.25 2.5.9
2018.03.14 2.5.10
2018.04.02 2.6.1
2018.06.07 2.6.2
2018.09.11 2.6.3
2018.10.08 2.6.4
2018.11.23 2.6.5
2019.02.28 2.6.6
2019.07.15 2.6.7
2019.01.29 2.7.0
2019.02.28 2.6.6
2019.03.26 2.7.1
2019.05.31 2.7.2
2019.07.19 2.7.3
资料
https://github.com/apache/dubbo
http://dubbo.apache.org/zh-cn/
https://dubbo.gitbooks.io/dubbo-user-book/content/
https://legacy.gitbook.com/@dubbo
https://github.com/apache/dubbo-admin
https://github.com/apache/dubbo-spring-boot-project
https://github.com/apache/dubbo-samples
https://github.com/alibaba/spring-cloud-alibaba
https://github.com/spring-cloud-incubator
https://github.com/spring-cloud
https://github.com/spring-projects/spring-boot
https://mercyblitz.github.io/2018/01/01/Dubbo-%E6%B3%A8%E8%A7%A3%E9%A9%B1%E5%8A%A8/
2.5.x 版本
2012.10.23 2.5.3
老版本
2017.09.07 2.5.4
问题修复
- 优雅关闭
- MonitorFilter 阻塞RPC流程
- 动态配置:无法指定消费端ip, 服务端配置无法删除.
- 路由规则解析问题
- 异步影响到下行RPC调用.
- 服务端流控优化.
- 社区提交的一些问题的修复.
详情请见 问题列表
依赖升级
依赖 | 当前 | 目标 | 影响 |
---|---|---|---|
spring | 3.2.16.RELEASE | 4.3.10.RELEASE | schema parse;Http RPC |
zookeeper | 3.3.3 | 3.4.9 | registry |
zkclient | 0.1 | 0.10 | zookeeper client framework |
curator | 1.1.16 | 2.12.0 | zookeeper client framework |
commons-logging | 1.1.1 | 1.2 | Logger |
hessian | 4.0.6 | 4.0.38 | hessian RPC |
jedis | 2.1.0 | 2.9.0 | redis registry;redis RPC |
httpclient | 4.1.2 | 4.5.3 | hessian uses http connection pool |
validator | 1.0.0 | 1.1.0.Final | java validation |
cxf | 2.6.1 | 3.0.14 | webservice |
jcache | 0.4 | 1.0.0 | jcache |
优化
- 代码格式化
- 修改没有可用服务端时的客户端提示信息.
2017.09.12 2.5.5
- 兼容JDK1.6以及更高版本,2.5.4要求JDK1.8+.
2017.10.12 2.5.6
问题修复
- 修复 PojoUtils 问题: 枚举类型,私有成员.
- 在服务端线程池耗尽时,RejectException 无法被传到客户端.
- 在符合满载时,避免不必要的应答传输.
- Slf4jLogger 能够反映出真实的行号.
- 延迟暴露时,并发问题导致意外的多端口绑定
- 没有服务端时Mock不生效的问题.
- 一些优化:OverrideListener、停止服务端不必要的心跳、主启动流程, 等等
- 一些问题修复:动态配置无法删除,telent调用支持json参数、监控统计问题,等等
新特性支持
2017.11.04 2.5.7
发行说明
- 一个全新的注解配置实现,修复了旧注解版本报告的所有缺点。(
dubbo-spring-boot-starter
将在稍后发布);更多细节参考Dubbo Annotation-Driven - 支持读取ip和端口以从环境变量注册和绑定。
- 调整一些XML配置项:dump.directory等。
- 无法连接注册表时阻止Bootstrap。
- 当第一次调用
MonitorService
时,当无法连接ZK
时,MonitorService 会阻止RPC进程
。#672 - 不推荐使用标记内部JSON序列化,而是使用
fastjson
进行代替 - RMI协议支持附件传递。
- EnumSet 类型支持
hessian2
序列化。 - 修正了一些错误和优化。
重要说明
请注意以下不兼容性或警告,但不要担心,此版本对核心RPC进程没有影响。您只需添加依赖项或遵循配置规则即可避免所有潜在影响。
- 如果您使用的是
AccesslogFilter
,Telnet
或Mock
,请记住将fastjson添加为第三方依赖项。 - 如果您已经在使用注解配置,我们强烈建议您升级到2.5.7,其中我们已经更改了注解的使用方式,并且还更改了实现。
- 如果
check = true
且无法在启动阶段连接注册表,则仍可通过降级使用注册表缓存来成功启动项目。 - 当 MonitorService 尚未就绪时,当前版本将丢弃监视器统计信息。
2017.12.12 2.5.8
发行说明
- Dubbo 编程模型增强。
修复了2.5.7中报告的一些错误。更多细节参考Dubbo Annotation-Driven
外部配置 EnableDubbo
,EnableDubboBindings
,也准备添加到Spring-Boot-Starter。更多细节请参阅Dubbo外部化配置
- 通过
telnet
和http
方式提供更强大的OPS:在此版本中仅支持在线,离线,以下版本中将提供更多功能 - 默认情况下,路由规则不应每次都运行
- 调整春季活动表现
- 修复了使用
curator
时的 NPE 路径问题 - 修复了dubbo-admin报告的一些错误
- Redis注册表支持身份验证
2018.01.25 2.5.9
问题修复
- 向后兼容RMI协议 #911
- Hessian序列化:
为java.util.Time类型添加null检查, #1118
恢复 hessian 的覆盖序列化,子类的字段应该覆盖父类的覆盖,而不是相反,#932 - Redis和多播注册表无法脱机。
增强功能
- 注解增强,#1205。
dubbo-spring-boot-starter
也已根据此版本发布。 - 为
qos
添加开关:dubbo.application.qos.enable = true/false
。请注意
我们配置qos
的新方法,例如,dubbo.qos.port
已更改为dubbo.application.qos.port
。#1189 - 优雅关闭,在注册表取消注册和线程池关闭之间添加额外的等待时间。#1021
- 通过避免使用低效的
synchronized
来提高hessian
序列化的性能。#1196 - 参数验证失败时避免重试。#1031
- 条件路由器还应检查默认值。#1204
漏洞补丁
- 在此版本中,我们将检查从网络接收的序列化ID(仅当id标识JDK序列化时)是否与当前实例中的序列化ID匹配。如果无法匹配,则拒绝反序列化过程。
由于最初的JDK反序列化存在安全问题,因此我们这样做是为了防止意外篡改序列化类型,例如:从hessian2
到java
。
2018.03.14 2.5.10
问题修复
- FutureAdapter中的TimeUnit 转换失败问题, #1303.
- docker部署中,服务端调用服务失败的问题, #1289.
- Hessian序列化short 和 byte 类型时失败, #1232.
- 移除注册中心的 isdestrory() 检查, 保证关闭时的取消注册生效, #1313
- 引用注解支持注解类型
2.6.x 版本
2018.01.08 2.6.0
发行说明
在这个版本中,我们主要合并了dangdang
贡献的dubbox分支
,突出了以下功能(另见#1001):
- REST支持(通过集成resteasy)
- 高性能序列化框架:kryo,FST
- 嵌入式tomcat支持
我们尝试保留原始分支,同时进行以下小调整:
- 升级了一些依赖项的版本:kryo,FST和tomcat
- 删除了对核心RPC协议的更改以避免兼容问题
重要说明
- 依赖
由于此版本中的所有新功能都是可选的,因此添加到此版本的依赖项不具有传递性,因此您在使用新版本时不必担心引入任何依赖性问题。这反过来意味着每当您决定使用此版本中的任何新功能时,您必须向项目添加必要的依赖项。
2018.04.02 2.6.1
重构
- 将dubbo-admin, dubbo-monitor 等OPS模块剥离到一个单独的工程仓库中, #1209.
- 重构工程依赖和包结构: 序列化作为一个单独的模块,所有的子模块可以单独部署到远程仓库中, #1322.
功能增强 & 问题修复
- 支持在
java 9
中的构建, #1283. - 避免在高并发场景中,hessian序列化的阻塞问题, #1196.
- 将默认的ZK客户端替换为 “
curator
”, #1186. - 在参数校验失败时避免重试, #1031.
- 在spring bean销毁流程中去除dubbo销毁逻辑.
- 增加 “oninvoke” 解析, #1353.
- 其它问题修复.
2018.06.07 2.6.2
- Hessian-lite 序列化: 兼容性考虑,恢复了前一版本中修改的locale序列化, #1413
资产转移至Apache软件基金会
,包括pom,license,免责声明等等, #1491- 引入新的dispatcher策略: EagerThreadpool, #1568
- 监控数据按照组别和版本号分离, #1407
- Spring Boot 增强, #1611
- 优雅关闭功能增强
移除 AnnotationBean 中的出口销毁逻辑.
通过检查通道状态在客户端等待注册中心通知. - 简化RpcContext中的消费端/服务端检查, #1444.
2018.09.11 2.6.3
功能增强/新特性
- 支持从服务端到客户端的隐式
attachments
传递, #889 - 支持根据bean类型将spring bean注入
SPI
, #1837 - 增加对
http
&hessian
协议的泛化调用和attachments
支持, #1827 - 通过增加泛化调用的真实方法名获取来支持
一致性哈希
, #1872 - 移除消费者端的服务端校验key, #1386
- 引入 Bootstrap 作为Dubbo启动和资源销毁的统一入口, #1665
- 在
Netty 3
中打开TCP_NODELAY
, #1746 - 优雅下线优化(统一Servlet和Spring的生命周期), #1820, #2126
- 增加消费者端的线程池支持, #2013
- 在服务端增加特定的代理类型, #1873
- 支持redis中的
dbindex
, #1831 - 升级tomcat到8.5.31, #1781
问题修复
- ExecutionDispatcher 行为符合文档描述用户文档, #1089
- 移除Netty日志环境中,Dubbo自定义日志的副作用, #1717
- 修复 isShutdown() 判断在Dubbo业务线程池中总是返回true的问题, #1426
- 在只有两个节点的临界条件下,invoker节点选择的问题, #1759
- 使用ZK作为注册中心时,监听器在取消订阅过程中无法被移除的问题, #1792
- URL中包含用户定义的’@'时的解析问题, #1808
- CacheFilter中的空值检查来避免空指针问题, #1828
- 修复DUbboProtocol中潜在的死锁问题, #1836
- 修复在Dubbo内建重试机制触发时,RpcContext中的attachment没有被更新的问题, #1453
性能调优
- ChannelState中的分支预测优化. #1643
- 优化AtomicPositiveInteger, 减少内存和计算消耗, #348
- 引入内建的Threadlocal 来替代JDK的实现, #1745
Hessian-lite
- Hessian反序列化优化, #1705
- 支持 Locale 类型, #1761
2018.10.08 2.6.4
功能增强/新特性
- 支持通过密码访问Redis, #2146
- 在GenericService中支持char数组类型, #2137
- 在服务端异常时直接返回, #2451
- 增加qos启动失败时的错误日志,方便问题排查, #2455
- PojoUtil 增加对java.util.Date类型子类的支持, #2502
- 在MonitorService中增加IP和服务名, #2166
- 新的ASCII logo, #2402
问题修复
- 将客户端重试次数从0次改成2次, #2303
- 修复重试时attachment丢失的问题, #2024
- 修复telnet拿到空参数时的空指针问题, #2453
单元测试稳定性
- 通过更换端口,设置超时为3000ms来提高稳定性, #2501
2018.11.23 2.6.5
功能增强 / 新特性:
- 重构@service的BeanName的生成规则 #2235
- 为ServiceBean的导出引入新的Spring ApplicationEvent #2251
- [功能]在window系统下获取负载的方式优化 #1641
- 为dubbo-all增加javadoc #2600
- [功能]优化LeasActiveLoadBalance: 没有进行预热和修复历史bug #2540
- Round Robin的负载均衡优化 #2578 #2647
- 为sub-properties解决placeholders的bug #2297
- 增加SPI自动注入的开关,特别是泛化对象的注入。#2681
Bug修复:
- 解决@service(register=false)不能工作。 #2063
- 解决序列化id超出最大值的问题。 #1903
- 解决当高QPS的时候,消费端抛出了RpcException的问题。 #2016
- 增强@reference注解,针对不能支持导出同步异步的设置问题。 #2194
- 解决ReferenceAnnotationBeanPostProcessor#generateReferenceBeanCacheKey的一个bug。#2522
- 解决在2.6.x下Spring Event的bug。#2256
- 解决dubbo-serialization模块的不正确描述. #2665
- 解决打包source tgz包的时候,产生的一个空目录问题. #2560
- 解决2.6.x下doConnect的时候,没有使用getConnectTimeout获取超时时间的问题. #2622
- 解决@service不支持placeholder替换的问题. #1755
Issues and Pull Requests, check milestone-2.6.5.
2019.02.28 2.6.6
功能增强 / 新特性:
- 新增标签路由功能. #3065
- 升级默认Netty版本到Netty4. #3029
- kyro序列化时,支持JDK8中的Date/Time类型 #3519
- 支持在协议中配置telnet #3511
- MethodConfig和ArgumentConfig中增加注解驱动 #2603
- 增加对Nacos的支持 #3296
- @Rerefence中增加protocol属性 #3555
- @service 增加对多层接口的支持 #3251
- 改变@EnableDubboConfig.multiple()的默认行为 #3193
- 内联spring-context-support代码 #3192
- 简化Dubbo Protocol name的外部化配置 #3189
Bug修复:
- 升级hessian-lite到2.3.5, 修复不必要的类加载 #3538
- 修复客户端销毁时无法unregister的问题 #3502
- 过滤META-INF/dubbo/internal下配置文件重复的问题 #3315
- 修复高QPS的情况下,客户端在RegistryDirectory通知后抛出异常的问题 #2016
- 修复Spring boot中测试DUbbo服务,@reference 注解报空指针异常 #3429
- 修复provider 抛出的异常,consumer 捕获到的总是 java.lang.reflect.UndeclaredThrowableException #3386
- 修复DubboConfigConfigurationSelector 优先级过高的问题 #2897
- 修复@Rerefence#parameters()不工作的问题 #2301
2019.07.15 2.6.7
https://github.com/apache/dubbo/releases/tag/dubbo-2.6.7
2.7.x 版本
2019.01.29 2.7.0
环境要求:需要Java 8及以上版本支持
请在此处了解关于升级2.7.x版本的注意事项和兼容性问题
New Features
-
服务治理规则增强。
-
外部化配置。支持读取托管在远程的集中式配置中心的
dubbo.properties
,实现应用配置的集中式管控。 -
更精炼的注册中心URL,进一步减轻注册中心存储和同步压力,初步实现地址和配置的职责分离。
-
新增服务元数据中心,负责存储包括服务静态化配置、服务定义(如方法签名)等数据,默认提供Zookeeper, Redis支持。此功能也是OPS实现服务测试、Mock等治理能力的基础。
-
异步编程模式增强(限定于Dubbo协议)
- 原生CompletableFuture签名接口支持
- 服务端异步支持
- 异步Filter链
-
新增Protobuf序列化协议扩展
-
新增ExpiringCache缓存策略扩展
Enhancements / Bugfixes
- 负载均衡策略优化,包括ConsitentHash(#2190) 、LeastActive(#2171)、Random(#2597) 、RoundRobin(#2586) (#2650)
- 升级第三方依赖:默认通信框架为netty 4、默认ZK客户端为Curator、Jetty 9
- 增加地址读取时对
IPV6
的支持(#2079) - 性能优化,链接关闭的情况下使得Consumer快速返回 (#2185)
- 修复Jdk原生类型在kryo中的序列化问题 (#2178)
- 修复Provider端反序列化失败后,没有及早通知Consumer端的问题 (#1903)
升级与兼容性
此次版本发布我们遵循了保持和老版本兼容的原则,尤其是在保证与低版本互操作性的问题上,2.7.0版本是能做到完全兼容的。对于2.7.0的默认行为,最容易带来兼容性问题的此次发布版本内容中的package重命名,但这类问题是显示的,即能在升级后的编译期发现并予以解决。了解更多升级和兼容性注意事项。
2019.03.26 2.7.1
https://github.com/apache/dubbo/releases/tag/dubbo-2.7.1
2019.05.31 2.7.2
https://github.com/apache/dubbo/releases/tag/dubbo-2.7.2
2019.07.19 2.7.3
https://github.com/apache/dubbo/releases/tag/dubbo-2.7.3
…