Spring Cloud 微服务架构
一个典型的 Spring Cloud 微服务架构部署图:

Spring Cloud 微服务架构常用组件:
- 服务发现与注册中心
- Eureka:Netflix 开源的服务发现组件。
- Consul:HashiCorp 提供的服务网络解决方案,支持服务发现、配置等。
- Zookeeper:Apache 的一个分布式协调服务,也可用于服务注册与发现。
- 客户端负载均衡
- Ribbon:Netflix 提供的负载均衡客户端,目前已停止维护。
- Spring Cloud LoadBalancer:Ribbon 的替代品。
- 声明式 REST 客户端
- Feign / OpenFeign:简化了 HTTP 客户端的编写。
- API 网关
- Zuul:Netflix 提供的一个网关解决方案。
- Spring Cloud Gateway:Spring 官方提供的新一代网关,是 Zuul 的替代品。
- 断路器(熔断器)
- Spring Cloud Circuit Breaker:一个抽象层,旨在为不同的断路器实现提供统一的编程模型,使得开发者可以在不改变代码逻辑的情况下切换不同的断路器实现(比如 Resilience4j、Hystrix 等)。
- Hystrix:防止故障传播,实现服务降级。
- Resilience4j:现代轻量级容错库,还提供了限流、重试等功能,是 Hystrix 的替代品。
- 配置管理
- Spring Cloud Config:提供配置中心化管理。
- 消息总线
- Spring Cloud Bus:用于广播状态更改或事件,通常与配置管理一起使用。
- 分布式追踪
- Spring Cloud Sleuth:提供链路跟踪的功能。
- Zipkin 或 Jaeger:分布式追踪系统,通常与 Sleuth 结合使用。
Spring Cloud 框架组件对比
- Spring Cloud 社区:提供了一套用于构建微服务架构的工具和库的标准集合,支持多种不同的实现方案,旨在为开发者提供灵活的选择。
- Spring Cloud Netflix:曾经是 Spring Cloud 最主要的组件集之一,提供了诸如 Eureka(服务发现)、Hystrix(断路器)、Zuul(API网关)等经典组件,但部分组件现已进入维护模式,不再积极开发新特性。
- Spring Cloud Alibaba:作为 Spring Cloud 的另一实现,它带来了包括 Nacos(服务发现与配置管理)、Sentinel(流量控制与熔断)、RocketMQ(消息队列)等在内的组件,专注于提供更符合云原生趋势以及满足国内市场需求的解决方案。
功能模块 | Spring Cloud 社区 | Spring Cloud Netflix | Spring Cloud Alibaba | 其他 |
---|---|---|---|---|
配置中心 | Spring Cloud Config | Nacos | Zookeeper / Apollo / Disconf / Consul | |
服务注册与发现 | Spring Cloud Netflix Eureka | Eureka 1.x, |
Nacos | Zookeeper / Consul |
客户端负载均衡 | Spring Cloud LoadBalancer | Dubbo / Spring Cloud LoadBalancer | ||
服务调用 | Spring Cloud OpenFeign | Feign | Dubbo | |
API 网关 | Spring Cloud Gateway | Spring Cloud Gateway | Nginx + Lua | |
熔断器 | Spring Cloud Circuit Breaker + Resilience4j | Sentinel | Resilience4j | |
消息队列 | Spring Cloud Stream + RabbitMQ / Kafka | RocketMQ | RabbitMQ / Kafka | |
链路追踪 | Spring Cloud Sleuth + Zipkin | Zipkin / SkyWalking | ||
分布式事务 | 不直接支持 | 不直接支持 | Seata | |
事件总线 | Spring Cloud Bus + RabbitMQ / Kafka | RocketMQ |