Dubbo 2.7.0 围绕异步支持优化、元数据改造,支持配置中心,路由规则优化和引入JDK8的特性等方面提升服务调用和服务治理的效率,以及可扩展性。经过社区投票,该版本已于近日发布。
一、新特性
1. 服务治理规则增强
- 更丰富的服务治理规则,新增应用级别条件路由、Tag路由等;
- 治理规则与注册中心解耦,增加对Apollo等第三方专业配置中心的支持,更易于扩展;
- 新增应用级别的动态配置规则;
- 规则体使用更易读、易用YAML格式;
2. 外部化配置。支持读取托管在远程的集中式配置中心的dubbo.properties,实现应用配置的集中式管控。
3. 更精炼的注册中心URL,进一步减轻注册中心存储和同步压力,初步实现地址和配置的职责分离。
4. 新增服务元数据中心,负责存储包括服务静态化配置、服务定义(如方法签名)等数据,默认提供Zookeeper, Redis支持。此功能也是OPS实现服务测试、Mock等治理能力的基础。
5. 异步编程模式增强(限定于Dubbo协议)
- 原生CompletableFuture签名接口支持;
- 服务端异步支持;
- 异步Filter链;
6. 新增Protobuf序列化协议扩展。
7. 新增ExpiringCache缓存策略扩展。
二、优化和bugfixes
- 负载均衡策略优化,包括ConsitentHash(#2190) 、LeastActive(#2171)、Random(#2597) 、RoundRobin(#2586) (#2650)
- 升级第三方依赖:默认通信框架为netty 4、默认ZK客户端为Curator、Jetty 9k
- 增加地址读取时对IPV6的支持(#2079)
- 性能优化,链接关闭的情况下使得Consumer快速返回 (#2185)
- 修复Jdk原生类型在kryo中的序列化问题 (#2178)
- 修复Provider端反序列化失败后,没有及早通知Consumer端的问题 (#1903)
三、升级与兼容性
此次版本发布我们遵循了保持和老版本兼容的原则,尤其是在保证与低版本互操作性的问题上,2.7.0版本是能做到完全兼容的。对于2.7.0的默认行为,最容易带来兼容性问题的此次发布版本内容中的package重命名,但这类问题是显示的,即能在升级后的编译期发现并予以解决。
四、Dubbo OPS
Dubbo OPS v0.1也已发布,支持了Dubbo 2.7.0中服务治理的新特性。
1. 功能
- 支持服务搜索,包括服务名,应用名,支持通配符
- 服务详情展示(Dubbo 2.7支持元数据展示)
- 路由规则和动态配置(包括黑白名单,权重和其他配置)
- 支持标签路由(Dubbo 2.7版本)
- 路由规则和动态配置均支持应用维度(Dubbo2.7版本)
- 支持配置管理
- 支持服务测试
2. 兼容性
所有的服务治理功能面向Dubbo 2.7的yaml格式,向Dubbo 2.6的URL格式兼容,发布的配置在Dubbo 2.6版本的客户端上可以正确解析。
转自 https://www.oschina.net/news/104190/apache-dubbo-2-7-0