什么是事务?
事务提供一种机制,能将一个活动涉及的所有操作纳入到一个不可分割的执行单元,所有的操作均正常执行的情况下方能提交,只要任一操作失败,都将导致事务整体回滚。
什么是分布式系统?
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
什么是分布式事务?
当事务的参与者、支持事务的服务器、资源服务器、事务管理器,都在分布式系统的不同节点上时,就是分布式事务。
分布式理论
- CAP定理:web服务无法同时满足以下3个属性
- 一致性:客户端知道的一系列操作都会同时生效
- 可用性:每个操作都必须以可预期的响应结束
- 分区容错性:即使某单个组件无法可用,操作依然可以完成。
- BASE理论(对CAP定理进一步扩充):每个应用可以根据自身的业务特点采用适当的方式使系统达到最终一致性
- 基本可用
- 软状态
- 最终一致性
目前业界提供的分布式事务解决方案
- 多阶段提交(2PC、3PC):需要额外的资源管理器来协调事务,数据一致性强,但是实现方案复杂,性能较差,不适用于高并发。如阿里开源的fescar。
- 补偿事务(TCC):每个事务操作都需要提供三个操作:尝试、确认、撤销。数据一致性的强度比多阶段提交方案低,但实现的复杂度较低,缺点:每个业务需要实现3个操作可能出现过多的补偿代码。
- MQ事务消息:RocketMQ支持事务消息,事务执行流程包括:发送预消息、执行本地事务、确认消息发送成功。它的消息中间件存储了下游无法消费成功的消息,并不断重试推送下游消费消息。生产者需要实现一个check接口,RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。保证了消息发送与本地事务同时成功或同时失败。
以上参考:https://mp.weixin.qq.com/s/7HKRkzTDu3AVP0UbeHb-zw、https://mp.weixin.qq.com/s/v7rqlz4erRC9ZvEZk6mwvg