技术文摘
一文读懂分布式事务(图文并茂)
2025-01-15 03:26:39 小编
一文读懂分布式事务(图文并茂)
在当今互联网大规模应用场景下,分布式系统无处不在,而分布式事务也随之成为开发者必须面对和理解的重要课题。
什么是分布式事务
分布式事务,简单来说,是指在一个分布式系统中,涉及多个不同服务节点的一组操作,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。比如,在一个电商系统中,下单操作可能涉及到订单服务记录订单信息、库存服务扣减库存、支付服务完成收款等多个服务节点的操作,这就需要分布式事务来保障整个流程的正确性。
分布式事务产生的问题
- 网络问题:不同节点间通过网络通信,网络的不稳定可能导致部分操作成功,部分失败。例如库存扣减成功,但支付服务因网络延迟未收到请求,就会造成数据不一致。
- 节点故障:某个节点出现故障,可能导致事务执行中断,影响整体事务的原子性。
分布式事务的解决方案
两阶段提交(2PC)
它是一种经典的分布式事务解决方案。第一阶段是准备阶段,协调者向所有参与者发送事务请求,参与者执行事务操作并记录日志,然后向协调者反馈准备结果;第二阶段是提交阶段,如果所有参与者都准备成功,协调者就会向所有参与者发送提交请求,参与者收到后正式提交事务。若有任何一个参与者准备失败,协调者则发送回滚请求。(可在此处插入 2PC 流程的简单示意图)
三阶段提交(3PC)
在 2PC 基础上进行了改进,增加了预提交阶段。协调者先询问参与者是否可以进行事务操作,参与者回复可以后进入预提交阶段,之后再进行提交或回滚。相比 2PC,3PC 提高了系统的容错性。
TCC 模式(Try - Confirm - Cancel)
TCC 将事务分成三个阶段。Try 阶段尝试执行业务,预留资源;Confirm 阶段确认提交事务,真正执行业务;Cancel 阶段若出现问题则回滚释放资源 。(用简单的流程图展示 TCC 模式)
分布式事务的处理极为复杂,每种解决方案都有其优缺点,开发者需要根据具体业务场景,选择合适的方式来确保系统的数据一致性和可靠性。
- 教你轻松查找字符串中的多个元素
- 2022 年前端的五大发展趋势
- 面试官:怎样中断已发出的请求?
- 21 个 JavaScript 循环遍历方法,你是否知晓?
- Python 机器学习对黄金价格的预测
- 2021 年 React、Vue、Svelte 与元宇宙领域的动态
- Vue 开发的十二个性能优化技巧
- Eslint 能检查和修复格式问题,Babel 为何不能
- Apache Ambari 顶级项目因无人开发即将退役
- Sentry 开发者贡献之测试技巧指南
- 元宇宙技术的实践及发展探索:MetaCon 元宇宙技术大会 2022
- 数据结构与算法中的背包问题之滚动数组
- 可爱简约且轻量的 Pinia,你真不用?
- IDEA 自带数据库插件,魅力无限
- 静态与动态代码分析乃互为补充之技术