首页  

Dubbo2.7三大新特性简介     所属分类 dubbo 浏览量 531
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