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

初识分布式事务

实际的开发中,分布式事务的产生的原因主要来源于 服务、存储的拆分

分布式事务的解决方案:

2pc

有一个节点作为协调者,其他节点是参与者

第一阶段先去锁定相应的事务资源,没问题的话 第二阶段再去执行

存在资源阻塞 && 协调者单点故障的问题

3pc

三个阶段:询问,锁定资源,真正执行

在协调者和参与者中都加入了超时机制

TCC

TCC 把事务运行过程分成 Try、Confirm / Cancel 两个阶段,每个阶段的逻辑由业务代码控制,避免了长事务,可以获取更高的性能。

基于业务层面的事务控制,每个事务分支(订单服务、库存服务)都需要自己去实现对应的try、confirm/cancel接口,侵入比较强。

TM: Transaction Manager,事务管理器,负责整个TCC事务的协调控制。

TC: Transaction Coordinator,事务协调者。

•Try阶段:调用try接口,尝试执行业务,完成所有的业务检查、预留业务资源。
订单服务,添加一个预备状态,修改为Updating,冻结当期订单的操作,而不是直接修改为支付成功。
库存服务,冻结库存,扩展字段,可以添加新的库存冻结表。
•Comfirm/Cancel阶段:两个是互斥的,只能执行其中的一个,都需要幂等性,要允许失败重试。
Comfirm:把前面的try阶段锁定的资源提交,类比数据库的Commit操作。在支付场景中,包括订单状态从更新中更新为支付成功。库存数据扣减在try冻结的库存。
Cancel:业务上的回滚操作。订单服务,撤销预备状态,还原为待支付状态或者取消状态,库存服务删除冻结的库存,添加到可用的库存中。

本地消息表:

优点:实现逻辑比较简单,开发成本比较低。
缺点:与业务场景绑定,高耦合。本地消息表与业务表在一个库中,占用业务系统资源,影响数据库性能。

MQ 事务消息方案

上一节 blog 已写

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

相关文章:

  • week5-[一维数组]归并
  • 数据结构与算法-算法-42. 接雨水
  • AI 如何 “看见” 世界?计算机视觉(CV)的核心技术:图像识别、目标检测与语义分割
  • Scrapy 框架实战:构建高效的快看漫画分布式爬虫
  • 试验铁地板在现代工业中的应用与特性
  • AI医疗影像诊断新突破:从肺部CT结节识别到眼底病变筛查,提升疾病早诊效率
  • MTK Linux DRM分析(十四)- Mediatek KMS实现mtk_drm_drv.c(Part.2)
  • 工业机器人如何通过Modbus TCP转CanOpen网关高效通信!
  • 机器学习基本介绍
  • 【练习九】Java实现加油站支付小程序:存款与消费
  • 健永科技RFID技术在高压电厂机器狗巡检中的应用
  • Access token(访问令牌:以JWT格式无状态存储)和Refresh token(刷新令牌:有状态存储于Redis/DB)区别与联系、Redis黑名单
  • C#-mqtt通讯,服务端和客户端,以及esp32-mqtt
  • 第二十节:3D文本渲染 - 字体几何体生成与特效
  • 神经网络 | 基于matlab的LSTM详解
  • 3D高斯溅射实现医疗影像内部场景渲染
  • 【论文阅读】Object Detection in Adverse Weather for Autonomous Driving through Data Merging and YOLOv8
  • ConceptGraphs: Open-Vocabulary 3D Scene Graphs for Perception and Planning
  • 第八章:《性能优化技巧》——深入讲解预分配容量、移动语义、避免频繁拼接等优化策略,以及C++17的`string_view`如何减少拷贝开
  • 三电平逆变器SVPWM控制(无解耦功能)与谐波分析
  • gpt-5生成圆柱blockmesh脚本
  • UDS NRC24
  • 修改win11任务栏时间字体和小图标颜色
  • Graphpad Prism Mac医学绘图工具
  • GraphRAG技术深度解析:重新定义智能问答的未来
  • 数据结构初阶:详解顺序表OJ题
  • CUDA 矩阵分块乘法
  • Rust Web开发指南 第六章(动态网页模板技术-MiniJinja速成教程)
  • Docker 核心技术:Union File System
  • 知微集:梯度下降详解