当前位置: 首页 > news >正文

Spirng Cloud Alibaba主流组件

一、 服务发现与配置管理 (Service Discovery & Configuration)

1. ​Nacos

这是 Spring Cloud Alibaba 的基石组件,它集成了两个最关键的功能:

  • 服务发现与服务健康检查 (Naming Service)​: 替代了 Netflix Eureka 和 Consul。服务提供者向 Nacos 注册自己的服务实例,消费者从 Nacos 拉取服务列表,实现服务的寻址和负载均衡。它支持对服务实例进行健康检查,自动剔除故障实例。

  • 动态配置管理 (Config Service)​: 替代了 Spring Cloud Config。允许您在所有环境中集中管理应用程序的配置。配置变更时,Nacos 能实时通知到应用,使其动态刷新配置,无需重启。完美支持 @RefreshScope

核心特点​:一个组件解决两大核心问题,AP/CP模式切换,UI管理界面友好,易于使用。


二、 服务容错与限流降级 (Resilience & Flow Control)

2. ​Sentinel

替代了 Netflix Hystrix,是面向分布式服务架构的流量控制和熔断降级组件

  • 流量控制: 针对不同的调用关系、资源、运行指标(如 QPS、线程数、系统负载)进行流量控制,防止系统被瞬间流量冲垮。

  • 熔断降级: 当某个资源(服务或接口)响应时间过长或异常比例过高时,自动进行熔断,避免级联故障,并提供 fallback 降级逻辑。

  • 系统自适应保护: 保护系统在高压情况下的稳定性。

  • 实时监控: 提供开箱即用的控制台,可以实时查看服务调用情况和限流降级状态。

核心特点​:功能强大,配置粒度细,支持多种规则(流控、降级、热点、授权、系统),控制台功能丰富。


三、 分布式事务 (Distributed Transaction)

3. ​Seata

阿里巴巴开源的分布式事务解决方案,提供了高性能且易于使用的分布式事务服务。

  • 核心模式:

    • AT 模式 (默认)​: 对业务代码几乎无侵入,通过拦截 SQL 自动生成回滚日志,实现最终一致性。适用于绝大多数场景。

    • TCC 模式: 通过代码手动实现 Try、Confirm、Cancel 三个操作,强一致性,适用于对一致性要求极高或有特殊业务的场景(如金融)。

    • Saga 模式: 长事务解决方案,通过状态机定义一系列提交和补偿操作,适用于业务流程长、需要保证最终一致性的场景。

  • 角色:

    • TC (Transaction Coordinator) - 事务协调器: Seata 服务器,独立部署,负责维护全局事务和分支事务的状态。

    • TM (Transaction Manager) - 事务管理器: 定义事务的边界,开启、提交或回滚全局事务(通常位于发起全局事务的服务中)。

    • RM (Resource Manager) - 资源管理器: 管理分支事务处理的资源,负责向 TC 注册分支事务和报告状态(通常位于每一个微服务中)。


四、 API 网关 (API Gateway)

4. ​Spring Cloud Gateway

虽然这不是 Spring Cloud Alibaba 独创的,但它是 Spring Cloud 官方推荐的第二代网关,通常与 Alibaba 其他组件配合使用,替代了 Netflix Zuul。

  • 路由转发: 将所有请求路由到正确的微服务。

  • 断言 (Predicates)​: 定义路由匹配规则(如路径、请求头、时间等)。

  • 过滤器 (Filters)​: 在请求发出前或响应返回后,对请求和响应进行修改,实现鉴权、限流、日志、跨域等功能。

  • 集成性: 可以很方便地与 Sentinel 集成实现网关限流,与 Nacos 集成实现动态路由。


五、 消息驱动与事件溯源 (Messaging & Event Sourcing)

5. ​RocketMQ

阿里巴巴开源的分布式消息中间件。Spring Cloud Stream 为它提供了封装,使其可以以消息驱动的方式轻松地集成到微服务架构中。

  • 应用解耦: 异步通信,提高系统吞吐量和响应速度。

  • 流量削峰: 应对突发流量,保护后端系统。

  • 顺序消息: 保证消息被顺序消费。

  • 事务消息: 实现分布式事务的最终一致性(与 Seata 可协同工作)。


六、 其他辅助组件

  • Spring Cloud Alibaba Cloud SMS / OSS: 提供了对阿里云其他服务(如短信服务 SMS、对象存储服务 OSS)的便捷集成 Starter,让你在代码中轻松调用云服务。

  • Dubbo Spring Cloud: 虽然 Spring Cloud Alibaba 默认使用 OpenFeign 进行 HTTP 调用,但它也支持集成 Apache Dubbo 作为 RPC 框架,实现高性能的二进制远程调用。


总结与关系图

一个典型的 Spring Cloud Alibaba 微服务架构如下所示:

graph TDA[外部请求/用户] --> G[Spring Cloud Gateway];subgraph “微服务集群”B[服务A] -->|注册/发现| N(Nacos Server);C[服务B] -->|注册/发现| N;D[服务C] -->|注册/发现| N;B -->|远程调用| C;C -->|远程调用| D;B -->|配置管理| N;C -->|配置管理| N;D -->|配置管理| N;B -->|限流降级| S(Sentinel Dashboard);C -->|限流降级| S;D -->|限流降级| S;B -.->|分布式事务| T(Seata TC Server);C -.->|分布式事务| T;D -.->|分布式事务| T;B -->|发送消息| R(RocketMQ);C -->|消费消息| R;endG --> B;G --> C;G --> D;

最佳实践流程​:

  1. 所有微服务启动后,都向 ​Nacos​ 注册自己,并从 Nacos 获取配置。

  2. 外部请求通过 ​Gateway​ 网关进入,网关根据路由规则转发到具体服务。

  3. 服务之间通过 OpenFeign 或 Dubbo 进行调用,调用前从 Nacos 获取服务实例列表。

  4. 在调用过程中,​Sentinel​ 负责监控流量,一旦超过阈值则进行限流或熔断,保护系统。

  5. 涉及跨服务的数据修改时,由 ​Seata​ 来保证分布式事务的一致性。

  6. 需要异步解耦或削峰填谷的场景,使用 ​RocketMQ

希望这份详细的梳理能帮助你全面了解 Spring Cloud Alibaba 的生态系统!

http://www.dtcms.com/a/348881.html

相关文章:

  • 【ElasticSearch】springboot整合es案例
  • 企业出海第一步:国际化和本地化
  • springBoot如何加载类(以atomikos框架中的事务类为例)
  • JavaScript数据结构详解
  • Docker知识点
  • 【数据分享】中国地势三级阶梯矢量数据
  • 【无标题】对六边形拓扑结构中的顶点关系、着色约束及量子隧穿机制进行严谨论述。
  • 深度剖析Spring AI源码(七):化繁为简,Spring Boot自动配置的实现之秘
  • MySQL--基础知识
  • 基础篇(下):神经网络与反向传播(程序员视角)
  • 多机多卡微调流程
  • Node.js依赖管理与install及run命令详解
  • 【文献阅读】生态恢复项目对生态系统稳定性的影响
  • CI/CD持续集成及持续交付详解
  • Jwt令牌设置介绍
  • 关于熵减 - 电子圆柱
  • feat(compliance): 添加电子商务法技术解读
  • PCB电路设计学习4 PCB图布局 PCB图布线
  • Python - 100天从新手到大师:第十五天函数应用实战
  • HTTP 接口调用工具类(OkHttp 版)
  • 如何用单张gpu跑sglang的数据并行
  • Java全栈开发面试实战:从基础到高并发场景的深度解析
  • MATLAB 与 Python 数据交互:数据导入、导出及联合分析技巧
  • `free` 内存释放函数
  • 【蓝桥杯 2024 省 C】挖矿
  • K8s 实战:六大核心控制器
  • yggjs_rlayout框架v0.1.2使用教程 01快速开始
  • python---类
  • 服装生产跟单系统是什么?主要功能有哪些?
  • 【51单片机按键控制LED按下位移】2022-11-12