Spring Cloud Alibaba是非常重要的微服务解决方案,也是大厂重点考察对象,下面我就全面来详解Spring Cloud Alibaba@mikechen
Spring Cloud Alibaba
Spring Cloud Alibaba是”阿里巴巴“研发的微服务中间件,提供了一套完整的”微服务架构解决方案“,是目前的主流微服务解决方案。
Spring Cloud Alibaba涵盖了:服务发现、配置管理、流量控制、分布式事务……等多个方面的”微服务方案“。
如下图所示:
Spring Cloud Alibaba 是基于 Spring Cloud 的增强版本,是微服务的”第二代实现“。
Nacos
Nacos(Dynamic Naming and Configuration Service)是一个用于服务发现、配置管理、和服务管理的组件。
Nacos 提供服务注册和发现的功能,允许服务实例将自身注册到 ”Nacos“ 中,其他服务可以通过 ”Nacos “查找到这些服务实例并进行调用。
Nacos架构,如下图所示:
主要会涉及,如下步骤:
- 服务注册:服务实例启动时,将自身的信息(如 :IP 地址、端口、服务名称……等)注册到 Nacos 服务中心;
- 服务心跳:服务实例定期发送心跳到 Nacos 服务中心,报告自身的健康状态;
- 服务发现:消费者服务通过 Nacos 服务中心查询可用的服务实例列表,并根据负载均衡策略选择一个实例进行调用;
- 健康检查:Nacos 服务中心对注册的服务实例进行健康检查,如果某个实例无法正常响应心跳或健康检查失败,将其标记为不可用,从服务列表中剔除。
Sentinel
Sentinel 是一个的流量控制、熔断降级、和系统负载保护库,由阿里巴巴开发。
Sentinel 专注于解决分布式系统中的流量控制问题,为微服务架构提供了强大的服务保护能力。
主要解决以下问题:
1、流量控制
Sentinel 提供了丰富的流量控制策略,如:限流、熔断、降级…..等,帮助开发人员有效控制系统的请求流量,防止系统过载。
2. 熔断降级
Sentinel 支持熔断降级机制,当系统出现异常或超负荷时,自动熔断部分服务,保护核心服务的稳定性。
Sentinel 使用状态机模式对服务的熔断状态进行管理,包括关闭状态、半开状态和打开状态。
根据系统的负载情况和异常情况,自动调整熔断器的策略,包括熔断阈值、熔断时间窗口等。
3. 系统负载保护
Sentinel 提供系统负载保护功能,可以根据系统的负载情况进行动态调整,确保系统在高负载时仍然能够正常运行。
RocketMQ
RocketMQ 是由阿里巴巴的分布式消息中间件,支持分布式事务、顺序消息、和消息轨迹等功能。
RocketMQ 的架构主要包括四个核心组件:NameServer、Producer、Broker 和 Consumer。
如下图所示:

- NameServer:负责维护整个集群的元数据信息,包括主题(Topic)和队列(Queue)的路由信息。
- Producer:消息的生产者,负责将消息发送到 Broker。
- Broker:消息的存储和传递中心,负责接收、存储和传递消息。
- Consumer:消息的消费者,负责从 Broker 拉取消息并进行处理。
应用场景:
- 实现分布式系统之间的消息通信;
- 用于解耦系统间的业务逻辑;
- 支持消息的异步处理和批量处理;
- 提供了消息轨迹和消息追踪功能,方便排查问题和监控系统。
Seata
Seata,Simple Extensible Autonomous Transaction Architecture,是一个分布式事务解决方案。
Seata 的架构主要包括三个核心组件:Transaction Coordinator(TC)、Transaction Manager(TM)和 Resource Manager(RM)。
如下图所示:
- Transaction Coordinator(TC):负责全局事务的协调和管理,维护全局事务的状态。
- Transaction Manager(TM):负责全局事务的发起和提交,控制全局事务的生命周期。
- Resource Manager(RM):负责管理分支事务的提交和回滚,维护分支事务的状态。
Seata 可以应用于各种需要分布式事务支持的场景,特别是在微服务架构中,常见的应用场景包括:
- 订单系统:确保订单的创建、支付和物流等操作的一致性。
- 支付系统:确保支付流程的原子性,避免重复扣款、或遗漏支付。
- 账务系统:确保账务操作的原子性,避免资金错乱、或异常数据。
Dubbo
Dubbo 是一个高性能的 RPC(Remote Procedure Call)框架,用于实现分布式服务之间的远程调用。
Dubbo 的架构包括三个核心角色:Provider、Consumer 和 Registry。
如下图所示:
- Provider:服务的提供者,负责暴露服务接口并处理客户端的请求。
- Consumer:服务的消费者,负责调用 Provider 提供的服务接口。
- Registry:服务的注册中心,负责维护服务的注册信息和路由规则,提供服务的注册和发现功能。
Dubbo 的工作原理基于面向接口的远程调用,通过代理模式实现服务的远程调用。
如下图所示:
Dubbo 的工作流程可以简要概括为以下几个步骤:
- 服务提供者注册服务:
- 服务提供者启动后,将自己提供的服务注册到注册中心(Registry)。
- 服务消费者订阅服务:
- 服务消费者启动后,向注册中心订阅需要消费的服务。
- 服务调用过程:
- 当服务消费者需要调用某个服务时,它会根据服务接口生成动态代理对象。
- 消费者通过负载均衡策略选择一个提供者实例。
- 消费者将请求发送给提供者实例。
- 远程调用过程:
- 消费者发送请求到提供者的过程,会经过网络传输,如 TCP 或 HTTP 协议。
- 请求到达提供者后,提供者通过反射调用对应的服务方法。
- 返回结果:
- 提供者将处理结果返回给消费者。
- 消费者接收到结果并返回给调用方。
- 调用结果处理:
- 调用方收到提供者返回的结果,进行相应的处理。
- 如果调用失败或超时,Dubbo 提供了多种集群容错机制,如重试、快速失败等。
Spring Cloud Alibaba总结
总之,SpringCloudAlibababa提供了一系列的微服务解决方案,包括:服务注册与发现、配置中心、分布式事务等。
Spring Cloud Alibaba 的核心组件,大部分都在阿里巴巴在生产环境中经过验证,能够满足各种复杂场景下的需求。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》