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

SpringCloud微服务保护与分布式事务知识点总结

🛡️ SpringCloud微服务保护与分布式事务知识点总结

一、微服务保护

1.1 雪崩问题及解决方案

❄️ 雪崩问题定义:微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况,形成级联失败。
在这里插入图片描述

🛠️ 常见解决方案

  • 🚧 舱壁模式/线程隔离:限定每个业务能使用的线程数,避免耗尽整个Tomcat资源

在这里插入图片描述

  • ⚡ 熔断降级/断路器:统计业务执行的异常比例,超出阈值则熔断该服务

在这里插入图片描述

  • 📊 请求限流:限制业务访问的QPS,避免服务因流量激增而故障

在这里插入图片描述

1.2 Sentinel框架

🚀 Sentinel简介:阿里巴巴开源的一款微服务流量控制组件,具有以下特征:

  • 丰富的应用场景,承接了阿里巴巴近10年的双十一大促流量
  • 广泛的开源生态,与Spring Cloud、Dubbo等框架整合
  • 完善的SPI扩展点

📊 核心功能对比

功能SentinelHystrix
隔离策略信号量隔离线程池隔离/信号量隔离
熔断降级策略基于慢调用比例或异常比例基于失败比率
流量整形支持慢启动、匀速排队不支持
系统自适应保护支持不支持
控制台开箱即用不完善

1.3 流量控制

🌊 流控模式

  • 📱 直接模式:对当前资源直接进行流量控制
  • 🔗 关联模式:当关联资源达到阈值时,限制当前资源
  • 🔗 链路模式:只针对某条链路进行管控

⚡ 流控效果

  • 🚫 快速失败:超过阈值直接拒绝请求
  • 🔥 Warm Up:预热模式,允许流量阈值逐渐上涨
  • ⏳ 匀速排队:严格控制请求通过的间隔时间

1.4 熔断降级

⚡ 熔断策略

  • 🐌 慢调用比例:统计慢调用比例,超过阈值触发熔断
  • ❌ 异常比例:统计异常请求比例,超过阈值触发熔断
  • 📊 异常数:统计异常请求数量,超过阈值触发熔断

在这里插入图片描述

🔄 熔断器状态转换

  • 🟢 关闭状态:正常调用
  • 🔴 打开状态:触发熔断,直接返回降级结果
  • 🟡 半开状态:尝试放行少量请求进行探测

二、分布式事务

2.1 分布式事务理论基础

在这里插入图片描述

📚 CAP定理:分布式系统有三个指标,但只能同时满足两个:

  • ✅ 一致性(Consistency):所有节点数据一致
  • ✅ 可用性(Availability):每个请求都能得到响应
  • ✅ 分区容错性(Partition Tolerance):网络分区时系统仍能工作

🔄 BASE理论:对CAP的补充,包含三个思想:

  • 🟢 基本可用(Basically Available):允许损失部分可用性
  • 🟡 软状态(Soft State):允许出现中间状态
  • ✅ 最终一致性(Eventually Consistent):最终达到数据一致

2.2 Seata框架

🚀 Seata简介:阿里巴巴开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

在这里插入图片描述

👥 三大核心角色

  • 📊 TC(Transaction Coordinator):事务协调者,维护全局事务状态

  • 👨‍💼 TM(Transaction Manager):事务管理器,定义全局事务范围

  • 🔧 RM(Resource Manager):资源管理器,管理分支事务

在这里插入图片描述

2.3 Seata事务模式

2.3.1 XA模式

✨ 核心原理:XA模式基于X/Open组织制定的分布式事务处理(DTP)标准,该模式利用数据库自身对XA协议的支持,通过两阶段提交(2PC)协议来保证分布式事务的强一致性。

  • 第一阶段 - 准备阶段:事务协调者(TC)通知所有参与者(RM)执行分支事务(执行SQL),但不进行提交。各参与者将事务状态报告给TC。

  • 第二阶段 - 提交/回滚阶段:TC根据所有参与者的反馈决定全局事务的最终结果。如果所有参与者都准备成功,则通知所有参与者提交事务;如果任何一个参与者准备失败,则通知所有参与者回滚事务。

在这里插入图片描述

🔄 执行流程

  1. 执行阶段:RM向TC注册分支事务,执行业务SQL但不提交,并将执行状态报告给TC。
  2. 完成阶段:TC检查所有分支事务状态。若全部成功,通知所有RM提交事务;若有任一失败,通知所有RM回滚事务。
2.3.2 AT模式(自动补偿)

✨ 特点

  • 无侵入式,对业务代码零改造

  • 基于支持本地ACID事务的关系型数据库

  • 一阶段提交业务数据和回滚日志

  • 二阶段异步提交或回滚
    在这里插入图片描述

🔄 执行流程

  1. 一阶段:执行业务SQL,生成before image和after image,提交本地事务
  2. 二阶段提交:删除回滚日志
  3. 二阶段回滚:根据回滚日志进行反向补偿
2.3.3⚖️ XA模式 vs AT模式:核心差异总结
特性维度XA模式AT模式
一致性级别强一致最终一致
性能表现较低(一阶段锁定资源)较高(一阶段提交释放锁)
业务侵入性无侵入无侵入
实现机制基于数据库XA协议,两阶段提交基于SQL解析,生成反向补偿日志
回滚方式依赖数据库事务回滚机制依赖数据快照(undo_log)进行反向补偿
资源锁定期长(从一阶段开始到二阶段结束)(仅一阶段本地事务期间)
适用场景金融转账、对一致性要求极高的场景电商、互联网应用等大部分业务场景

2.4 Seata部署与集成

🚀 部署步骤

  1. 下载Seata Server
  2. 创建所需数据库表(global_table、branch_table、lock_table、undo_log)
  3. 修改配置文件(registry.conf、file.conf)
  4. 启动Seata Server

🔧 项目集成

  1. 添加Seata依赖
  2. 配置数据源代理
  3. 添加Seata配置项
  4. 使用@GlobalTransactional注解开启分布式事务

三、实践应用

3.1 服务保护实践

🔧 Sentinel整合步骤

  1. 引入Sentinel依赖
  2. 配置控制台地址
  3. 在簇点链路中配置流控规则
  4. 编写降级逻辑

3.2 分布式事务实践

🛒 电商下单场景

  • 订单服务:创建订单
  • 库存服务:扣减库存
  • 账户服务:扣减余额
  • 使用Seata AT模式保证事务一致性

⚙️ 配置要点

  • 确保所有微服务使用相同的事务分组
  • 配置正确的Seata Server地址
  • 数据库需要创建undo_log表
  • 使用@GlobalTransactional注解标注事务入口

四、总结

微服务保护和分布式事务是微服务架构中的核心问题。**通过Sentinel实现服务保护,可以有效防止雪崩效应;通过Seata实现分布式事务,可以保证跨服务的数据一致性。**在实际项目中,需要根据业务场景选择合适的保护策略和事务模式,在系统稳定性和性能之间找到最佳平衡点。

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

相关文章:

  • Kubernetes脉络:从基础概念到核心架构的认知框架
  • Ascend C核函数执行全流程深潜:从rtKernelLaunch到硬件执行的完整解密
  • 海澜之家的网站建设目标中文官网资源
  • 食品 网站源码外贸出口公司网站建设方案
  • 沈阳建网站如何建设企业人力资源网站
  • 精准计算,终结经验主义:钢丝绳智能选型重塑吊装安全
  • 汽车智能驾驶 超声波雷达、毫米波雷达和激光雷达
  • 网站开发所需要的条件icp备案号是什么意思
  • 幂数加密(攻防世界)
  • DMA 实践拾遗
  • K8S重启之后无法启动故障排查 与 修复
  • 咸阳专业学校网站建设深圳建筑设计找工作哪个招聘网站
  • 企业营销网站建设规划江西 网站 建设 开发
  • 快速CAD转到PPT的方法,带教程
  • 分布式系统中处理跨服务事务的常见方案
  • 浙江网站建设企业江苏省建设厅 标准化网站
  • html网站开发实例教程做网站的网页
  • 生活用品:为生活量身定制的温柔
  • wordpress手机端网站网站建设知识文章
  • 网站关键词优化是什么郑州关键词排名外包
  • 3dmax物体分段分离切片及转换虚线
  • 注册网站建设开发文件上传网站源码
  • 深入理解 AVL 树:自平衡二叉搜索树的原理与实现
  • py day33 异常处理
  • 网站开发 相册网站备案 地域
  • 基于asp网站开发 论文装潢设计网站
  • 算法763. 划分字母区间
  • JVM组件协同工作机制详解
  • 使用 FastAPI+FastCRUD 快速开发博客后端 API 接口
  • 网站底部版权信息网页游戏开服表大全