曹胜利 12,7 Dubbo应用和实践 曹胜利

1. 1 Dubbo实践、演进、规划 ALIBABA - 曹胜利 dubbo.apache.org
2. 2 dubbo.apache.org
3. 个人介绍 3 曹胜利 2010-2018 阿里巴巴java工程师 专注于微服务领域,负责阿里巴巴内部Pandora Boot的开发 现专注于Dubbo等RPC框架 dubbo.apache.org
4. 目录 4 01 02 03 04 Dubbo 介绍 Dubbo 实践&演进 服务注册 配置中心 路由规则 服务测试 服务治理 Service Mesh Dubbo Dubbo 最新进展 未来规划 dubbo.apache.org
5. About Apache Dubbo 5 一款高性能、轻量级的开源Java RPC框架 github Star:22000+;Fork:15000+ 加入Apache孵化器 Registry 3. subscribe 4. notify Consumer 5. invoke 6. count Monitor 2. register Provider Container 1. start dubbo.apache.org
6. About Apache Dubbo 6 客户 Dubbo ⽤用户主要分为 3 类:互联⽹网企业、向互联⽹网架构转型的企业、⽤用互联⽹网架构做解决⽅方案的企业。当当、去哪⼉儿、微店、 阿⾥里里巴巴作为 Dubbo 进 Apache 孵化的初始成员。 dubbo.apache.org
7. 目录 7 01 02 03 04 Dubbo 介绍 Dubbo 实践&演进 服务注册 配置中心 路由规则 服务测试 服务治理 Service Mesh Dubbo Dubbo 最新进展 未来规划 dubbo.apache.org
8. 服务注册 8 Provider 1 Zookeeper 1 dubbo Consumer 1 dubbo://30.5.124.54:20880/org.apach e.dubbo.samples.api.GreetingService ?anyhost=true&application=dubbo- annotationprovider&default.timeout=1000&dub bo=2.0.2&generic=false&interface=o rg.apache.dubbo.samples.api.Greetin gService&methods=sayHello&pid=2 7780&side=provider&timestamp=15 43201372914 注册 provider dubbo://ip:port/服务… org.test.TestService consumer consumer://ip:port/服务… 订阅 注册 consumer://30.5.124.54/org.apache.d ubbo.samples.api.GreetingService?ap plication=dubbo-annotationconsumer&category=consumers&che ck=false&default.timeout=3000&dub bo=2.0.2&interface=org.apache.dubb o.samples.api.GreetingService&meth ods=sayHello&pid=27807&side=con sumer&timestamp=1543201852989 推送 … … … Provider N-1 Zookeeper Z-1 Consumer M-1 Provider N Zookeeper Z dubbo.apache.org Consumer M
9. 服务注册 9 Zookeeper场景 4000+ 服务, 100w+ 节点,发布日 网卡爆掉 服务推送延迟 注册服务失败 dubbo.apache.org
10. 服务注册 10 Analysis 性能 推送量大 存储数据量大 网络传输量大 延迟严重 参数分析 IP和端口,服务名是需要动态变化的 新需求 OPS-服务测试需要元数据信息 减少注册的数据量 减少推送次数 dubbo.apache.org
11. 服务注册 11 Provider 1 注册中心 Zookeeper 1 dubbo Consumer 1 dubbo://30.5.124.5 4:20880/org.apache .dubbo.samples.api .GreetingService?a nyhost=true&appli cation=dubboannotation- provider&default.ti meout=1000&dubb o=2.0.2&generic=f alse&interface=org .apache.dubbo.sam ples.api.GreetingSe rvice&methods=sa yHello&pid=27780 &side=provider&ti mestamp=1543201 372914 org.test.TestService provider 精简数据 dubbo://ip:port/服务名 consumer 精简数据 consumer://ip:port/服务名 写入元数据 KEY VALUE Merge 读取参数 元数据中心 dubbo.apache.org Redis 写入参数 服务 信息 获取 consumer://30.5.12 4.54/org.apache.dub bo.samples.api.Gree tingService?applicat ion=dubboannotationconsumer&category =consumers&check =false&default.time out=3000&dubbo=2 .0.2&interface=org. apache.dubbo.sampl es.api.GreetingServi ce&methods=sayHe llo&pid=27807&sid e=consumer&timest amp=15432018529 89
12. 服务注册 12 减少推送 推送开关 特殊时期关闭推送 白名单开通 应用级别服务发现 应用级别服务发现 可用服务列表查询 dubbo.apache.org 服务分组 可控制服务推送的范围 可减少服务调用连接数
13. 服务注册 13 注册中心 CAP 满足AP,以及最终一致性 去中心化 写瓶颈 跨城、跨机房 控制 推送频率控制 容量 支持单进程多服务的注册 解决方案: Eureka , Etcd , Consul Nacos ? 人人都在自研服务注册中心 dubbo.apache.org
14. 配置中心 14 01 应用接入Dubbo需要配置一大堆配置,烦! - 应用开发者 02 服务治理,路由规则存储在哪里合适? 急! - dubbo贡献者 03 应用已接入Etcd, 难道又得支持Nacos?慌! - 部门架构师 dubbo.apache.org
15. 运维工程师 统一运维 架构师 定制实现 配置中心 15 配置中心 -D参数 远程dubbo.properties 覆 盖 XML/API方式 dubbo.properties 规则定义 服务级别规则 服务治理规则 Dubbo开发者 历史服务规则 应用级别规则 Zookeeper实现 SPI定义 Apollo实 现 存 储 Zookeeper集群 Apollo集群 dubbo.apache.org Nacos实现 配置存储 Nacos集群
16. 三个中心 16 OPS 获取注册中心、 元数据中心地址 注册中心集群 获取注册中心、 元数据中心地址 配置中心集群 获取注册中心、 元数据中心地址 元数据中心 集群 Provider dubbo.apache.org Consumer
17. 1 应用级别 黑白名单 路由规则 17 2 来自某个消 费者的流量 隔离 3 根据方法的 入参路由 应用级路由 服务级路由 黑名单 TAG路由 路由规则池 方法级路由 条件路由 dubbo.apache.org
18. 18 全链路灰度发布怎么做? dubbo.apache.org
19. 路由规则 19 setTag(“canary”) HTTP请求 30.5.127.44 服务调用 根据 User 判断 进行 灰度 Zipkin + 路由 规则 传递tag 增加打标规则: tags: - name: canary addresses: [30.5.120.16:20880] 增加打标规则: tags: - name: canary addresses: [30.5.128.66:20880] 服务调用 30.5.120.26 30.5.128.55 30.5.120.16 Zipkin + 路由 规则 传递tag 30.5.128.66 30.5.128.77 Web集群 服务A集群 dubbo.apache.org 服务B集群
20. 路由规则 20 集群 消费者集群1 消费者集群2 服务分组 专属机器 业务服务隔离 灰度环境 生产者集群 dubbo.apache.org
21. 服务测试 21 Provider Dubbo Ops Dubbo Export Service Metadata Store Dubbo Invoker Ops 服务测试页面 页面输入 泛化调用 输入参数 服务测试 写入 读取 KEY xxx VALUE YYYYYYY dubbo.apache.org 元数据中心 - Redis
22. 服务测试 22 Document 需求 自动生成API文档 API可视化:非JSON和XML格式 Test 需求 可测试 自动化测试 dubbo.apache.org
23. 服务测试 23 Local Server Swagger UI Spring MVC Dubbo2Rest Dubbo服务 Swagger Springfox Swagger dubbo.apache.org
24. 服务治理 24 A:Hystrix停更了,好慌。 B:别慌,有resilience4j A:太好了,我也去试试。 B :听说Alibaba的Sentinel也开源了。 A :好吧,我晕了。 Sentinel: 多样化的流量控制 熔断降级 系统负载保护 实时监控和控制台 dubbo.apache.org
25. 服务治理 25 建议 不要默认配置重试 设置超时时间 不重试 隔离:实例隔离,线程隔离 可验证 设超时 服务治理 支持全链路跟踪,支持限流,支持服务降级、熔断等 支持单机灰度发布,支持全链路的灰度 可治理 可隔离 dubbo.apache.org
26. Java Dubbo 应用 Envoy Dubbo Filter Service Mesh 26 Spring MVC 应用 NodeJS 应用 Envoy Dubbo Filter Envoy Dubbo Filter 控制层 Istio 定制 dubbo.apache.org 数据层
27. 目录 27 01 02 03 04 Dubbo 介绍 Dubbo 实践&演进 服务注册 配置中心 路由规则 服务测试 服务治理 Service Mesh Dubbo Dubbo 最新进展 未来规划 dubbo.apache.org
28. Dubbo最新进展 28 关键特性 异步 支持新老两种方式支持 服务治理升级 拥抱社区 Metrics 路由规则 支持更多路由方式 服务路由更加精确 Dubbo Initializer 快速构建dubbo spring boot应用 dubbo.apache.org
29. Dubbo最新进展 29 Dubbo核心 版本 核心功能 Dubbo Ops &Spring Boot 新版Ops:整合monitor和Admin Spring Boot 集成 开源相关建设 相关网站 & 文档维护 维护社区 & 客户交流 & meetup 生态建设 多语言支持 相关开源组件支持 dubbo.apache.org 生态建设 开源相关建设 Dubbo Ops & Spring Boot Dubbo核心
30. Dubbo未来规划 30 1 2 3 4 5 社区投入 Issue & PR 等投入 meetup 客户交流 功能增强 核心功能继续增强 Ops整合版本 Spring boot升级 生态建设 多语言优胜劣汰 三方开源持续升级 Dubbo 3.0 和内部HSF整合 Service Mesh 内部场景孵化 dubbo.apache.org
31. 31 dubbo.apache.org
32. 32 dubbo.apache.org
33. 33 Thank You! 开源,我们是认真的! dubbo.apache.org