Dubbo2.7三大新特性简介
所属分类 dubbo
浏览量 539
2018.02.09 将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为 Apache 的孵化项目 Incubator
2019.05.21 成为 Apache 顶级项目
几个分支介绍
2.5.x 停止维护
2.6.x 长期支持的版本,是 贡献给 Apache 之前的版本, 包名前缀 com.alibaba,JDK 版本 1.6
3.x-dev 前瞻性的版本,对 Dubbo 进行一些高级特性的补充,如支持 rx 特性
master 长期支持的版本,版本号 2.7.x,贡献给 Apache 的开发版本,包名前缀 org.apache,JDK 版本 1.8
三个新特性
异步化改造
三大中心改造
服务治理增强
Dubbo2.7 使用 JDK1.8 提供的 CompletableFuture 对自身的异步化做了改进
CompletableFuture 可以支持 future 和 callback 两种调用方式
三大中心 注册中心 元数据中心 配置中心
2.7 之前的版本,只有注册中心,主流使用 zookeeper
服务治理中,例如服务接口名,重试次数,版本号等 都可以理解为元数据
2.7 之前,元数据全放在注册中心,造成了一系列的问题
推送量大 -> 存储数据量大 -> 网络传输量大 -> 延迟严重
生产者端注册 30+ 参数,有接近一半是不需要作为注册中心进行传递
消费者端注册 25+ 参数,只有个别需要传递给注册中心
元数据中心目前支持 redis(推荐),zookeeper
Dubbo 2.6 元数据
< dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
dubbo://192.168.0.9:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&interface=com.alibaba.dubbo.demo.DemoService& methods=sayHello& bean.name=com.alibaba.dubbo.demo.DemoService&dubbo=2.0.2&executes=4500&generic=false& owner=kirito&pid=84228&retries=7&side=provider×tamp=1552965771067
Dubbo 2.7 元数据
< dubbo:registry address=“zookeeper://127.0.0.1:2181” simplified="true"/>
dubbo://192.168.0.9:20880/org.apache.dubbo.demo.api.DemoService?application=demo-provider&dubbo=2.0.2&release=2.7.0×tamp=1552975501873
非必要的服务信息,全量存储在元数据中心
元数据中心的数据可以被用于服务测试,服务 MOCK 等功能
配置中心
分布式配置统一管理
动态变更推送
安全性
Spring Cloud Config, Apollo, Nacos 等分布式配置中心组件都对上述功能有不同程度的支持
2.7 之前的版本,在 zookeeper 中设置了部分节点:configurators,routers,
用于管理部分配置和路由信息,它们可以理解为 Dubbo 配置中心的雏形
在 Dubbo 中,配置中心主要承担两个作用
外部化配置 启动配置的集中式存储
服务治理 服务治理规则的存储与通知
< dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
注意配置覆盖优先级
系统变量 -Ddubbo.registry.address=zookeeper://127.0.0.1:2181
外部化配置 dubbo.registry.address=zookeeper://127.0.0.1:2181
spring RegistryConfig.setAddress("zookeeper://127.0.0.1:2181")
本地文件 dubbo.registry.address=zookeeper://127.0.0.1:2181
服务治理增强
标签路由 TagRouter
应用路由 和 服务路由
在服务治理中,路由层和负载均衡层的比较
Router:m 选 n,LoadBalance:n 选 1
路由可以叠加使用的,负载均衡只能配置一种
Dubbo 如何实现流量隔离和灰度发布 2.7 提供了标签路由
RpcContext.getContext().setAttachment("requestTag","red")
用户给请求打标,最典型的打标方式可以借助 attachment(可以在分布式调用中传递下去),
调用会优先请求那些匹配的服务端,集群中未部署 标签 节点,则会降级到普通节点
提供 RpcContext.getContext().setAttachment()
可以使用 SPI 扩展,或者 server filter 的扩展,对测试流量进行打标,引导进入隔离环境/灰度环境
Dubbo Admin 提供了标签路由配置项
dubbo简史
dubbo实例
dubbo面试题
上一篇
下一篇
windows使用技巧
Java identityHashCode
dubbo简史
zookeeper单机安装
Spring ProxyFactory 和 方法拦截器 MethodInterceptor
Spring AOP @Aspect