关于微服务架构方案选型
推荐优先采用
Spring Cloud Alibaba
方案
概述
目前业界对 Spring Cloud 使用最广的就是 Spring Cloud Netflix 了。
2018年12月12日 Spring Cloud Netflix项目宣布已经进入维护模式
什么是维护模式?
将模块置于维护模式意味着Spring Cloud团队将不再向该模块添加新功能。我们将修复阻止程序错误和安全性问题,还将考虑并审查社区的一些小请求。
这意味着继续使用它再也没有新功能福利了;
推荐替代品
服务熔断 | Hystrix | |
监控 | Hystrix Dashboard / Turbine | Micrometer + Monitoring System |
负载均衡 | Ribbon | Spring Cloud Loadbalancer |
路由网关 | Zuul | Spring Cloud Gateway |
分布式配置 | Archaius | Spring Boot external config + Spring Cloud Config |
Spring Cloud Netflix
Spring Cloud Netflix功能:
- 服务发现:可以注册Eureka实例,并且客户端可以使用Spring托管的Bean发现实例
- 服务发现:可以使用声明性Java配置创建嵌入式Eureka服务器
- 断路器:Hystrix客户端可以使用简单的注释驱动的方法装饰器构建
- 断路器:具有声明性Java配置的嵌入式Hystrix仪表板
- 声明式REST客户端:Feign创建一个用JAX-RS或Spring MVC注释修饰的接口的动态实现。
- 客户端负载均衡器:功能区
- 外部配置:从Spring Environment到Archaius的桥梁(使用Spring Boot约定启用Netflix组件的本机配置)
- 路由器和过滤器:Zuul过滤器的自动重新注册,以及用于反向代理创建的简单配置约定
Spring Cloud Alibaba
Spring Cloud Alibaba 特征:
- 流量控制和服务降级:使用Sentinel进行流量控制,断路和系统自适应保护。
- 服务注册和发现:实例可以在Nacos上注册,客户可以使用Spring管理的bean发现实例。支持通过Spring Cloud Netflix的客户端负载均衡器Ribbon。
- 分布式配置:使用Nacos作为数据存储
- 事件驱动:构建与Spring Cloud Stream RocketMQ Binder连接的高度可扩展的事件驱动微服务
- 消息总线:使用Spring Cloud Bus RocketMQ链接分布式系统的节点
- 分布式事务:支持高性能且易于使用的Seata分布式事务解决方案
- Dubbo RPC:通过Dubbo RPC扩展Spring Cloud服务到服务调用的通信协议
- 阿里云对象存储:OSS的Spring资源抽象。阿里云对象存储服务(OSS)是一种加密,安全,经济高效且易于使用的对象存储服务,可让您在云中存储,备份和存档大量数据
对比
Spring Cloud Netflix | Spring Cloud Alibaba | Spring Cloud | Dubbo + Zookeeper | |
注册中心 | Eureka | Nacos | —— | Zookeeper |
服务熔断 | Hystrix | Sentinel | —— | —— |
服务调用 | Feign(内置Ribbon) | Dubbo Rpc | OpenFeign RestTemplate | —— |
服务路由 | Zuul | Dubbo PROXY | Spring Cloud Gateway | —— |
分布式消息 | —— | RocketMQ | RabbitMQ | —— |
负载均衡 | Ribbon | Dubbo LB | —— | —— |
分布式事务 | —— | Seata | —— | —— |
分布式配置 | Archaius | Nacos | Spring Cloud Config | Zookeeper |
Dubbo 与 Spring Cloud 性能比较
Spring Cloud alibaba 技术架构
建议
- Spring Cloud和Dubbo + Zookeeper属于自行组装。
- Spring Cloud Netflix 系列技术栈进入维护模式(不再添加新特性)
- Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案(全家桶)。并且已经贡献给Spring
推荐优先采用 Spring Cloud Alibaba
方案