一、基本概念
- ACID理论:关系型数据库的事务满足 ACID 的特性,具有 ACID 特性的数据库支持数据的强一致性,保证了数据本身不会出现不一致。适用于传统的单体架构。
- CAP理论:在分布式系统下, 包含三个要素:Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),并且三者不可兼得。分布式系统要求保证分区容错性,只能在数据强一致性(C)和可用性(A)之间做平衡,即选择CP或者AP。比如Zookeeper为CP系统保证强一致性牺牲一定的可用性;Eureka为AP系统保证较高可用性牺牲一定的一致性。另外,CAP理论中是忽略网络延迟,也就是当事务提交时,从节点A复制到节点B,但是在现实中这个是明显不可能的,所以总会有一定的时间是不一致。所以CAP一般适用于局域网系统的理论基础。
- BASE理论:解决 CAP 理论中分布式系统的可用性和一致性不可兼得的问题,提出最终一致性。即,最终数据是一致的就可以了,而不是实时保持强一致。例如,支付成功,订单也成功,但增加积分失败,此时,不应回滚支付和订单,而应通过一些 补偿方法来让积分得以正确地增加。
二、解决方案
方案 | 解决思路 | 适用场景 | 说明 |
---|---|---|---|
本地事务 |
|
|
|
两阶段提交 |
|
|
|
三阶段提交 |
|
|
|
可靠消息模式 |
|
|
|
可靠消息变种 |
|
|
|
|
|||
SAGA方案 |
|
|
|
阿里GTS |
|
|
|
总结建议 |
|
三、参考资料
- 再有人问你分布式事务,把这篇扔给他:https://mp.weixin.qq.com/s/W7XeNKIwB-JxnyStq0xD6g
- GTSDemo介绍:https://help.aliyun.com/document_detail/57267.html?spm=a2c4g.11174283.3.5.6eea735d9NoIS6
- ByteTCC:https://github.com/liuyangming/ByteTCC/
- GTS解密--GTS的原理、架构与特点:https://zhuanlan.zhihu.com/p/32684212
- 分布式事务系列:https://blog.csdn.net/qq_27384769/article/details/79305402
四、GitHub相关项目
- https://github.com/HasonHuang/distributed-transaction-process
- https://github.com/QNJR-GROUP/EasyTransaction
- https://github.com/vvsuperman/coolmq
- https://github.com/yu199195/myth
- https://github.com/yu199195/hmily
- https://github.com/1991wangliang/tx-lcn
- https://github.com/codingapi/tx-lcn
- https://github.com/prontera/spring-cloud-rest-tcc
- https://github.com/QNJR-GROUP/EasyTransaction
原文地址:https://www.cnblogs.com/junneyang/p/9736746.html
时间: 2024-10-02 20:48:01