Spring Cloud Alibaba 学习 —— 简单了解常用技术栈

news2025/6/2 10:33:47

Spring Cloud Alibaba

官网:https://sca.aliyun.com/

什么是 Spring Cloud Alibaba

Spring Cloud Alibaba 是 Spring Cloud 规范在阿里生态的扩展实现,结合了阿里自研组件与开源生态,提供面向云原生场景的微服务解决方案。其核心功能可概括为:

服务治理 + 流量管控 + 分布式能力增强

主要解决微服务架构中的服务发现、配置管理、限流降级等核心问题。

核心组件与组成

组件名称功能描述技术特点
Nacos服务注册与配置中心支持动态配置推送、AP/CP 模式切换1
Sentinel流量控制与熔断降级基于 QPS/线程数的实时监控与规则动态生效4
RocketMQ分布式消息队列高吞吐量、顺序消息、事务消息支持
Seata分布式事务解决方案AT/TCC/SAGA 多种模式可选
DubboRPC 通信框架(可选)高性能二进制协议、服务网格集成

Nacos 服务注册于发现

官网:https://nacos.io/

github:https://github.com/alibaba/nacos

什么是 Nacos

Nacos是阿里巴巴开源的动态命名与配置服务,专为云原生微服务架构设计,提供服务发现、配置管理、服务元数据管理等核心功能。其核心目标是通过动态化能力简化微服务架构中的服务治理与配置管理,支持企业快速构建弹性高可用的分布式系统。

核心功能详解

  1. 服务注册与发现
    • 服务注册:微服务启动时向 Nacos 注册自身信息(IP、端口、健康状态等)。
    • 服务发现:消费者通过 Nacos 查询依赖服务的实时地址列表,实现流量路由。
    • 健康检查:基于心跳机制自动剔除异常节点,保障服务可用性。
  2. 动态配置管理
    • 配置统一存储:支持 YAML、JSON 等格式的配置集中管理。
    • 动态推送:配置变更时实时通知所有相关服务,无需重启。
    • 多环境隔离:通过命名空间(Namespace)实现开发、测试、生产环境的配置隔离。
  3. 服务元数据管理
    • 支持为服务添加自定义标签(如版本、区域),用于实现灰度发布、流量染色等高级场景。
  4. 流量管理
    • 与 Sentinel 集成实现服务路由权重调整,支持金丝雀发布。

技术架构与实现原理

Nacos 的服务领域模型分为三层:

  1. 命名空间(Namespace):用于隔离不同租户或环境的配置与服务。
  2. 集群(Cluster):物理隔离的部署单元,如不同机房。
  3. 服务(Service):微服务的逻辑分组,如订单服务、支付服务。

其核心架构采用 AP(高可用)与 CP(强一致性)模式可切换 的设计:

  • AP 模式:优先保证服务可用性,适用于注册中心场景。
  • CP 模式:优先保证数据一致性,适用于配置中心场景。

在微服务中的具体应用

  1. 服务注册发现流程

    注册
    拉取地址
    调用
    服务提供者
    Nacos Server
    服务消费者
  2. 动态配置示例

    # Nacos 配置中心存储的配置
    database:
      url: jdbc:mysql://${DB_HOST:localhost}:3306/app
      username: ${DB_USER:root}
    

    服务通过注解 @RefreshScope 实现配置热更新:

    @RefreshScope
    @RestController
    public class ConfigController {
        @Value("${database.url}")
        private String dbUrl;
    }
    
  3. 典型场景

    • 电商系统:通过动态配置调整商品库存阈值。
    • 金融系统:利用命名空间隔离不同区域的交易服务配置。
    • 物联网平台:管理百万级设备连接的元数据。

优势对比

对比项NacosEurekaConsul
配置管理✔️ 原生支持❌ 需额外组件✔️ 支持
一致性协议AP/CP 可切换APCP
性能单机支持 104 节点注册单机约 5 ×103 节点约 3×103 节点

Sentinel 服务熔断与限流

github:https://github.com/alibaba/Sentinel

官网:https://sentinelguard.io/zh-cn/

什么是 Sentinel

Sentinel 是一款面向分布式系统的流量控制、熔断降级与系统保护组件,专注于保障微服务架构的稳定性。其核心价值在于通过多维度的流量治理手段,防止服务因突发流量、依赖故障或系统过载而崩溃,提升分布式系统的容错能力弹性

核心功能

  1. 流量控制
    • QPS/并发数控制:限制单位时间内的请求量或并发线程数,防止突发流量击穿系统。
    • 流量整形:支持匀速排队模式,将突发流量转换为平滑请求,避免系统负载剧烈波动。
    • 集群流控:通过 Token Server 实现跨节点的全局流量控制,适用于大规模分布式场景。
  2. 熔断降级
    • 熔断策略:基于慢调用比例、异常比例或异常数自动熔断不稳定服务,避免级联故障。
    • 降级规则:可配置降级后的默认响应(如返回兜底数据),保障核心业务链路的可用性。
  3. 系统自适应保护
    • Load 保护:根据系统 CPU 使用率、平均 RT 等指标动态调整流量入口阈值。
    • 并发线程数控制:防止线程池耗尽导致服务雪崩。
  4. 实时监控与告警
    • 秒级监控:展示接口级别的 QPS、RT、异常比例等关键指标。
    • 动态规则推送:支持通过 Nacos、ZooKeeper 等配置中心实时更新规则。

技术架构与实现原理

  1. 核心模块

    通过
    拒绝
    资源定义
    Slot 处理链
    规则检查
    业务逻辑
    降级处理
    • Slot 链机制:通过责任链模式依次执行统计、熔断检查、流控等逻辑。
    • 滑动窗口算法:实现高精度 QPS 统计,支持毫秒级流量控制。
  2. 扩展能力

    • 动态数据源:支持与 Nacos、Apollo 等配置中心集成,实现规则持久化。
    • 自定义 Slot:开发者可扩展自定义流量控制策略。

典型应用场景

  1. 电商秒杀场景

    // 定义资源并设置流控规则
    @SentinelResource(value = "seckill", blockHandler = "handleBlock")
    public String seckill(String itemId) {
        // 业务逻辑
    }
    
    • 通过集群流控限制每秒订单创建量,防止库存超卖。
  2. 微服务熔断

    # Spring Cloud Alibaba 配置示例
    spring:
      cloud:
        sentinel:
          datasource:
            ds1:
              nacos:
                server-addr: localhost:8848
                dataId: sentinel-rules
    
    • 当支付服务异常比例超过 50% 时自动熔断,降级返回“支付通道维护中”提示。
  3. 系统过载保护

    • 当系统 CPU 使用率超过 80% 时,自动拒绝低优先级请求,保障核心交易链路。

优势对比

对比项SentinelHystrixResilience4j
流量控制✔️ 支持 QPS、并发数、集群流控❌ 仅线程隔离✔️ 有限流控
熔断策略✔️ 慢调用+异常多维判断✔️ 仅异常比例✔️ 类似 Hystrix
监控能力✔️ 实时接口级监控❌ 需集成 Turbine❌ 需额外配置
扩展性✔️ 动态数据源+Slot 扩展❌ 有限✔️ 模块化设计

Seata 分布式事务

github:https://github.com/apache/incubator-seata

官网:https://seata.apache.org/zh-cn/docs/overview/what-is-seata

什么是 Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

核心功能与模式

  1. 事务模式

    • AT 模式(Auto Transaction)

      • 自动补偿机制:通过解析 SQL 生成反向回滚日志(undo_log),实现事务的自动提交与回滚。

      • 两阶段提交:

        Phase1: 分支事务注册+本地提交
        Phase2: 全局提交/回滚

        适用于大多数基于关系型数据库的场景,对业务代码侵入性低。

    • TCC 模式(Try-Confirm-Cancel)

      • 三阶段控制:通过 Try 阶段预留资源,Confirm/Cancel 阶段确认或释放资源,适用于高并发、需自定义补偿逻辑的场景(如积分兑换)。
    • Saga 模式

      • 长事务管理:通过状态机编排服务调用,支持异步事务和自定义补偿策略,适用于跨系统、执行时间较长的业务流程(如电商订单履约)。
  2. 核心组件

    组件角色说明功能示例
    TC事务协调器(Transaction Coordinator)全局事务的发起、提交与回滚
    TM事务管理器(Transaction Manager)定义全局事务边界(@GlobalTransactional)
    RM资源管理器(Resource Manager)分支事务注册、状态报告与锁管理

技术原理剖析

  1. 全局事务生命周期

    // TM 开启全局事务
    @GlobalTransactional
    public void purchase() {
        // 调用服务A(RM1)
        reduceStock();
        // 调用服务B(RM2)
        deductBalance();
    }
    
    • 事务启动:TM 向 TC 注册全局事务,生成唯一 XID2
    • 分支注册:RM 执行本地事务前向 TC 注册分支,并记录 undo_log。
    • 提交/回滚:TC 根据整体状态触发 Phase2 操作,RM 根据指令提交或回滚。
  2. AT 模式实现细节

    • SQL 解析:通过 JDBC 代理拦截 SQL,解析表结构、操作类型(INSERT/UPDATE/DELETE)。
    • 数据快照
      • 前置镜像:用于回滚时恢复原始数据。
      • 后置镜像:用于提交时验证数据一致性(防脏写)。
    • 锁机制:通过全局锁(global_lock)避免多个事务同时修改同一行数据。

典型应用场景

  1. 电商订单支付

    -- 订单服务(RM1)
    UPDATE order SET status = 'paid' WHERE id = 1001;
    -- 库存服务(RM2)
    UPDATE stock SET count = count - 1 WHERE item_id = 'SKU123';
    
    • 通过 AT 模式保证订单状态与库存扣减的原子性3
  2. 金融账户转账

    • 使用 TCC 模式实现跨行转账:
      • Try:冻结转出账户资金,记录操作日志。
      • Confirm:实际扣减转出金额,增加转入金额。
      • Cancel:解冻资金,删除日志。
  3. 物流状态更新

    • Saga 模式协调订单系统、仓储系统和物流系统,通过状态机定义补偿逻辑(如超时自动触发退货流程)。

优势对比

对比项Seata ATXA 协议基于消息队列
侵入性低(无代码改造)高(依赖数据库驱动)中(需消息监听)
性能高(本地事务优先提交)低(两阶段锁阻塞)中(异步最终一致性)
一致性强一致强一致最终一致
适用场景高并发 OLTP传统银行系统异步处理场景

扩展与优化

  1. 高可用部署
    • TC 集群化:通过注册中心(如 Nacos)实现 TC 节点发现与负载均衡。
    • 数据持久化:支持将事务日志存储至 MySQL、Redis 等数据库,避免单点故障。
  2. 性能调优
    • 异步化提交:Phase2 异步批量处理全局提交请求,降低网络延迟影响。
    • 锁优化:设置合理的全局锁超时时间,避免长时间锁竞争。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2393914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧工厂整体解决方案

该方案围绕智能工厂建设,阐述其基于工业 4.0 和数字化转型需求,通过物联网、大数据、人工智能等技术实现生产自动化、数据化管理及联网协同的特点。建设步骤包括评估现状、设定目标、制定方案、测试调整、实施计划及持续改进,需整合 MES、ERP 等软件系统与传感器、机器人等硬…

秋招Day12 - 计算机网络 - TCP

详细说一下TCP的三次握手机制 TCP的三次握手机制是为了在两个主机之间建立可靠的连接,这个机制确保两端的通信是同步的,并且在开始传输数据前,双方都做好了要通信的准备。 说说SYN的概念? SYN 是 TCP 协议中用来建立连接的一个标…

vueflow

自定义节点&#xff0c;自定义线&#xff0c;具体细节还未完善&#xff0c;实现效果&#xff1a; 1.安装vueflow 2.目录如下 3. index.vue <script setup> import { ref } from vue import { VueFlow, useVueFlow } from vue-flow/core import { Background } from vue-…

LearnOpenGL-笔记-其十一

Normal Mapping 又到了介绍法线贴图的地方&#xff0c;我感觉我已经写了很多遍了... 法线贴图用最简单的话来介绍的话&#xff0c;就是通过修改贴图对应物体表面的法线来修改光照效果&#xff0c;从而在不修改物体实际几何形状的前提下实现不同于物体几何形状的视觉效果。 因…

openppp2 -- 1.0.0.25225 优化多线接入运营商路由调配

本文涉及到的内容&#xff0c;涉及到上个发行版本相关内容&#xff0c;人们在阅读本文之前&#xff0c;建议应当详细阅读上个版本之中的VBGP技术相关的介绍。 openppp2 -- 1.0.0.25196 版本新增的VBGP技术-CSDN博客 我们知道在现代大型的 Internet 网络服务商&#xff0c;很多…

详细到用手撕transformer下半部分

之前我们讨论了如何实现 Transformer 的核心多头注意力机制&#xff0c;那么这期我们来完整地实现整个 Transformer 的编码器和解码器。 Transformer 架构最初由 Vaswani 等人在 2017 年的论文《Attention Is All You Need》中提出&#xff0c;专为序列到序列&#xff08;seq2s…

【Sqoop基础】Sqoop生态集成:与HDFS、Hive、HBase等组件的协同关系深度解析

目录 1 Sqoop概述与大数据生态定位 2 Sqoop与HDFS的深度集成 2.1 技术实现原理 2.2 详细工作流程 2.3 性能优化实践 3 Sqoop与Hive的高效协同 3.1 集成架构设计 3.2 数据类型映射处理 3.3 案例演示 4 Sqoop与HBase的实时集成 4.1 数据模型转换挑战 4.2 详细集成流程…

MySQL + CloudCanal + Iceberg + StarRocks 构建全栈数据服务

简述 在业务数据快速膨胀的今天&#xff0c;企业对 低成本存储 与 实时查询分析能力 的需求愈发迫切。 本文将带你实战构建一条 MySQL 到 Iceberg 的数据链路&#xff0c;借助 CloudCanal 快速完成数据迁移与同步&#xff0c;并使用 StarRocks 完成数据查询等操作&#xff0c…

截屏精灵:轻松截屏,高效编辑

在移动互联网时代&#xff0c;截图已经成为我们日常使用手机时的一项基本操作。无论是记录重要信息、分享有趣内容&#xff0c;还是进行学习和工作&#xff0c;一款好用的截图工具都能极大地提升我们的效率。截屏精灵就是这样一款功能强大、操作简单的截图工具&#xff0c;它不…

【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议

目录 1. 基本概念1.1 基本概念1.2 web应用程序1.3 静态web1.4 动态web 2. web服务器3. tomcat详解3.1 安装3.2 启动3.3 配置3.3.1 配置启动的端口号3.3.2 配置主机的名称3.3.3 其他常用配置项日志配置数据源配置安全配置 3.4 发布一个网站 4. Http协议4.1 什么是http4.2 http的…

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)

云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09; 目录 云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09;1、虚拟机VMware安装Rocky2、Linux命令行3、Linux Rocky修改字体大小和背景颜…

在 ODROID-H3+ 上安装 Win11 系统

在 ODROID-H3 上安装 Windows 11 系统。 以下是完整的步骤&#xff0c;包括 BIOS 设置、U 盘制作、安装和驱动处理&#xff0c;全程不保留之前的系统数据。 ✅ 准备工作 1. 准备一个 ≥8GB 的 USB 启动盘 用另一台电脑制作 Windows 11 安装盘。 &#x1f449; 推荐工具&…

使用el-input数字校验,输入汉字之后校验取消不掉

先说说复现方式 本来input是只能输入数字的&#xff0c;然后你不小心输入了汉字&#xff0c;触发校验了&#xff0c;然后这时候&#xff0c;你发现校验取消不掉了 就这样了 咋办啊&#xff0c;你一看校验没错啊&#xff0c;各种number啥的也写了,发现没问题啊 <el-inputv…

Docker容器启动失败的常见原因分析

我们在开发部署的时候&#xff0c;用 Docker 打包环境&#xff0c;理论上是“我装好了你就能跑”。但理想很丰满&#xff0c;现实往往一 docker run 下去就翻车了。 今天来盘点一下我实际工作中经常遇到的 Docker 容器启动失败的常见原因&#xff0c;顺便给点 debug 的小技巧&a…

立志成为一名优秀测试开发工程师(第七天)——unittest框架的学习

目录 unittest框架的学习 一、测试类的编写 创建相关测试类cal.py、CountTest.py 二、常见断言方法 使用unittest单元测试框架编写测试用例CountTest.py 注意&#xff1a;执行的时候光标一定要放在括号后面&#xff0c;鼠标右键运行 三、对测试环境的初始化和清除模块…

论坛系统(4)

用户详情 获取用户信息 实现逻辑 ⽤⼾提交请求&#xff0c;服务器根据是否传⼊Id参数决定返回哪个⽤⼾的详情 1. 不传⽤⼾Id&#xff0c;返回当前登录⽤⼾的详情(从session获取) 2. 传⼊⽤⼾Id&#xff0c;返回指定Id的⽤⼾详情(根据用户id去查) 俩种方式获得用户信息 参…

力扣面试150题--二叉树的层平均值

Day 54 题目描述 思路 初次做法&#xff08;笨&#xff09;&#xff1a;使用两个队列&#xff0c;一个队列存放树的节点&#xff0c;一个队列存放对应节点的高度&#xff0c;使用x存放上一个节点&#xff0c;highb存放上一个节点的高度&#xff0c;sum存放当前层的节点值之和…

【Doris入门】Doris初识:分布式分析型数据库的核心价值与架构解析

目录 1 Doris简介与核心价值 2 Doris架构深度解析 2.1 Frontend&#xff08;FE&#xff09;架构 2.2 Backend&#xff08;BE&#xff09;架构 3 Doris核心概念详解 3.1 数据分布模型 3.2 Tablet与Replica 3.3 数据模型 4 Doris关键技术解析 4.1 存储引擎 4.2 查询执…

数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP

数据结构与算法学习笔记----动态规划区间DP author: 明月清了个风 first publish time: 2025.5.26 ps⭐️区间DP的特征在于子结构一般是一个子区间上的问题&#xff0c;涉及到的问题也非常多&#xff0c;如环形区间&#xff0c;记录方案数&#xff0c;高精度&#xff0c;二维…

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南摘要引言一、数据集构…