阿里巴巴 小马哥 Dubbo Spring Cloud 重新定义微服务治理

CodeWarrior

2019/07/08 发布于 编程 分类

GIAC2019 

文字内容
1. Dubbo Spring Cloud 重塑微服务治理 ⼩马哥(mercyblitz) Apache Dubbo PMC
2. 自我介绍 l 小马哥(@mercyblitz) l 父亲,Java 劝退师,Apache Dubbo PMC、Spring Cloud Alibaba 项目架构师,《Spring Boot 编程思想》的作者 l 个人主页: https://mercyblitz.github.io/
3. 自我介绍 l 小马哥(@mercyblitz) l 父亲,Java 劝退师,Apache Dubbo PMC、Spring Cloud Alibaba 项目架构师,《Spring Boot 编程思想》的作者 l 个人主页: https://mercyblitz.github.io/
4. 主要议程 • Java 微服务框架 - Spring Cloud • Dubbo 迈向 Spring Cloud 之路 • Dubbo Spring Cloud 对微服务治理的提升
5. Java 微服务框架 - Spring Cloud • Spring Cloud 功能特性 • Spring Cloud 组件架构 • Spring Cloud 整合架构 • Spring Cloud 整合现状 • Spring Cloud 未来走向
6. Spring Cloud 功能特性 • 分布式配置 - Distributed/versioned configuration • 服务注册与发现 - Service registration and discovery • 服务路由 - Routing • 服务调用 - Service-to-service calls • 负载均衡 - Load balancing • 服务熔断 - Circuit Breakers • 分布式消息 - Distributed messaging 参考:https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_features
7. Spring Cloud 组件架构
8. Spring Cloud 整合架构
9. Spring Cloud 整合现状 Netflix OSS 在 Spring Cloud 整合现状 功能特性 Netflix OSS 组件 官方首选 状态 分布式配置 Archaius Git ⚠ 维护 服务注册与发现 Eureka 是 ⚠ 维护 服务路由 Zuul Spring Cloud Gateway ⚠ 维护 服务调用 无 是 活跃 负载均衡 Ribbon 是 ⚠ 维护 服务熔断 Hystrix 是 ⚠ 维护 分布式消息 无 RabbitMQ 或 Kafka 活跃
10. Spring Cloud 整合现状 官方处于维护状态的 Netflix 模块 • • • • • • • • • spring-cloud-netflix-archaius spring-cloud-netflix-hystrix-contract spring-cloud-netflix-hystrix-dashboard spring-cloud-netflix-hystrix-stream spring-cloud-netflix-hystrix spring-cloud-netflix-ribbon spring-cloud-netflix-turbine-stream spring-cloud-netflix-turbine spring-cloud-netflix-zuul 参考:https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_modules_in_maintenance_mode
11. Spring Cloud 整合现状 Netflix OSS 开源现状 • Eureka - 1.x 仍在维护,2.0 不会继续 • Ribbon - 维护状态 • Hystrix - 维护状态 • Zuul - 1.x 被 2.x 替代 维护到淘汰只有一步之遥,未来的选型将何去何从?
12. Spring Cloud 未来走向 • 选项一:Spring Cloud Zookeeper • 选项二:Spring Cloud Consul • 选项三:Spring Cloud Kubernetes • 选项四:Spring Cloud Alibaba • 选项五:Spring Cloud 退化,仅剩 Spring Boot
13. Spring Cloud 未来走向 Spring Cloud 技术栈对比 功能特性 Spring Cloud Netflix Spring Cloud Zookeeper Spring Cloud Consul Spring Cloud Kubernetes Spring Cloud Alibaba 分布式配置 Archaius Zookeeper Consul ConfigMap + Nacos 服务注册与发 现 Eureka Zookeeper Consul API Server + Nacos 服务路由 Zuul Gateway Gateway Gateway + Dubbo Proxy 服务调用 OpenFeign OpenFeign OpenFeign OpenFeign + Dubbo 负载均衡 Ribbon Ribbon Ribbon Ribbon + Dubbo LB 服务熔断 Hystrix Hystrix Hystrix Hystrix + Dubbo Sentinel 分布式消息 RabbitMQ 或 Kafka RabbitMQ 或 Kafka RabbitMQ 或 Kafka RabbitMQ 或 Kafka + RocketMQ
14. Spring Cloud 未来走向 Spring Cloud 未来形势严峻 • Spring Cloud 特性强依赖于 Netflix OSS,后者大量组件却处于维护状态,Spring Cloud 的命运存在着不确定性 • Spring Cloud Zookeeper 和 Consul 的实现不完整,大部分依赖于 Netflix OSS 组 件,难当大任 • Spring Cloud Kubernetes 被 Spring Cloud 限制了原生能力,否则 Spring Cloud 就没有存在的必要 • Spring Cloud Alibaba 实现了 Spring Cloud 特性的全集(实际上是超集),其中 Dubbo 丰富了 Spring Cloud 服务治理的生态(如:Dubbo Admin) • Dubbo 并不是 Spring Cloud 的竞争者,很可能成为它的救赎者
15. Dubbo 迈向 Spring Cloud 之路 重大更新 • Dubbo 2.5.4 - 依赖更新以及阻碍性问题修复 • Dubbo 2.5.7 - 引入 Dubbo Spring 注解驱动 • Dubbo 2.5.8 - 引入 Dubbo Spring 外部化配置 • Dubbo 2.5.9 - 引入 Dubbo Spring Boot(兼容 1.x 和 2.0 版) • Dubbo 2.6.x - 支持 Nacos、Consul 等注册中心 • Dubbo 2.7.0 - re-package “org.apache.dubbo” • Dubbo 2.7.1 - 引入 Dubbo Spring Cloud (兼容 F 和 G 版) • Dubbo 2.7.2 - 成为 Apache 顶级项目 • Dubbo 2.7.4 -Cloud Native 注册机制 + 服务自省(兼容 Spring Cloud 注册中心)
16. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring 注解驱动
17. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring 外部化配置
18. Dubbo 迈向 Spring Cloud 之路 简化 Dubbo Spring 注解驱动 + 外部化配置
19. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring Boot • 简介 Dubbo Apache Dubbo™ 是一款高性能 Java RPC框架。 Spring Boot 应用场景的开发,同时也 整合了 Spring Boot 特性: • 自动装配 (比如: 注解驱动, 自动装配等). • Production-Ready (比如: 安全, 健康检查, 外部化配置等). • 版本 最新 2.7.1,兼容 Spring Boot 1.x 和 2.x • 项目 https://github.com/apache/dubbo-spring-boot-project • 示例 https://github.com/apache/dubbo-spring-boot-project/blob/master/dubbo-springboot-samples
20. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring Boot • Endpoints ID Enabled HTTP URI HTTP Method Description Content Type dubbo true /actuator/dubbo GET Exposes Dubbo's meta data application/json dubboproperties true /actuator/dubbo /properties GET Exposes all Dubbo's Properties application/json dubboservices false /dubbo/services GET Exposes all Dubbo's ServiceBean application/json dubboreferences false /actuator/dubbo /references GET Exposes all Dubbo's ReferenceBean application/json dubboconfigs true /actuator/dubbo /configs GET Exposes all Dubbo's *Config application/json dubboshutdown false /actuator/dubbo /shutdown POST Shutdown Dubbo services application/json
21. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring Cloud • 简介 Dubbo Spring Cloud 基于 Dubbo Spring Boot 2.7.x 和 Spring Cloud 2.x 开发,无论开发人员是 Dubbo 用户还是 Spring Cloud 用户, 都能轻松地驾驭,并以接近“零”成本的代价使应用向上 迁移。Dubbo Spring Cloud 致力于简化 Cloud Native 开发成本,提高研发效能以及提升应用 性能等目的。 • 版本 Dubbo Spring Cloud 首个 Preview Release,随同 Spring Cloud Alibaba 0.2.2.RELEASE 和 0.9.0.RELEASE 一同发布, 分别对应 Spring Cloud Finchley 与 Greenwich 。
22. Dubbo 迈向 Spring Cloud 之路 Dubbo Spring Cloud • 功能 由于 Dubbo Spring Cloud 构建在原生的 Spring Cloud 之上,其服务治理方面的能力可认为是 Spring Cloud Plus, 不仅完全覆盖 Spring Cloud 原生特性,而且提供更为稳定和成熟的实现, 特性比对如下表所示: 功能组件 Spring Cloud Dubbo Spring Cloud 分布式配置(Distributed configuration) Git、Zookeeper、Consul、JDBC Spring Cloud 分布式配置 + Dubbo 配 置中心 服务注册与发现(Service registration and discovery) Eureka、Zookeeper、Consul Spring Cloud 原生注册中心 + Dubbo 原生注册中 负载均衡(Load balancing) Ribbon(随机、轮询等算法) Dubbo 内建实现(随机、轮询等算法 + 权重等特性) 服务熔断(Circuit Breakers) Spring Cloud Hystrix Spring Cloud Hystrix + Alibaba Sentinel 等 服务调用(Service-to-service calls) Open Feign、RestTemplate Spring Cloud 服务调用 + Dubbo @Reference 链路跟踪(Tracing) Zipkin、opentracing 等 Spring Cloud Sleuth[10] + Zipkin[11]
24. Dubbo Spring Cloud 对微服务治理的提升 • 实现 Dubbo 与 Spring Cloud 服务互通 • 完善负载均衡实现 • 多种通讯协议支持 • 提升服务执行性能 • 丰富服务治理
25. Dubbo Spring Cloud 对微服务治理的提升 实现 Dubbo 与 Spring Cloud 服务互通
26. Dubbo Spring Cloud 对微服务治理的提升 完善负载均衡实现 负载均衡实现 Spring Cloud Dubbo 随机 支持(无权重) 支持(权重) 轮训 支持(无权重) 支持(权重) 响应时间 支持(权重) 不支持 最可用(不活跃) 支持(无权重) 支持(权重) 一致性 Hash 不支持 支持(权重) ...
27. Dubbo Spring Cloud 对微服务治理的提升 多种通讯协议支持 通讯协议 Spring Cloud Dubbo REST 支持 支持 Hession 不支持 支持 Thrift 不支持 支持 RSocket 不支持 支持 HTTP 不支持 支持 ...
28. Dubbo Spring Cloud 对微服务治理的提升 提升服务执行性能 指标 Spring Cloud Dubbo 容器 Servlet 或 Reactive Web Netty(首选) 传输 HTTP(短连接) 长连接、短连接 序列化 REST Java、Hession、Kryo 协议 文本 二进制、文本 客户端 Feign(HttpClient) Dubbo
29. Dubbo Spring Cloud 对微服务治理的提升 丰富服务治理
30. 书籍推荐 关注公众号获得 更多案例实践
31. 欢迎关注msup微信公众账号 关注大会微信公共账号,及时了解大会动态、 日程及每日更新的案例! 关注公众号获得 更多案例实践