分布式事务的解决方案
CAP理论
C: Consistency 一致性
A: Availability 可用性
P: Partition tolerance 分区隔离
BASE理论
BA: Basically Available 基本可用
S: Soft state 软状态
E: Eventually consistent 最终一致性
2pc协议
2阶段提交协议 准备阶段和提交阶段
实现方案
- XA解决方案 是由开源组织指定的一套标准 各大数据库(oracle mySql)实现其接口来实现分布式事务
此解决方案不足
-
依赖与关系型数据库 需实现XA协议
-
会在准备阶段将数据进行锁定 再提交阶段再将数据释放 降低了执行效率
- AT解决方案: seata 由alibaba开源的中间件
TCC协议
1.seata
2.EasyTransaction
3.hmily
可靠消息最终一致性
通过mq的消息订阅机制使发送方的消息可以通知到接收方
RocketMQ RocketMQLocalTransactionListener
-
executeLocalTransaction(Message msg,Object arg)
当发送方将消息发送到中间件后执行事务操作
-
checkLocalTransaction(Message msg)
通过本地执行日志的transactionID来判断本地事务的执行状态
-
事务返回状态:COMMIT:提交, ROLLBACK:回滚, UNKNOW:回调