分布式事务是指在分布式系统中,涉及多个资源或服务的操作需要被原子化处理。通常有两种处理模式:
一、二阶段提交协议(2PC)
2PC协议包含预提交和提交两个阶段:
-
事务协调者向所有参与节点发送预提交请求,参与节点预锁定资源并返回响应。
-
如果预提交都成功,协调者向所有参与节点发送正式提交请求,参与节点提交事务并释放锁。
如果任意一个节点预提交失败,协调者通知所有节点回滚事务。
适用场景:需要强一致性的场景,比如银行转账。
优点:提供了强一致性保证。
缺点:效率较低,单点故障问题明显。
二、事务消息模式
将每个事务操作抽象为消息,由消息队列进行顺序保证:
-
发起方将事务操作生成为消息发送到队列。
-
消息消费者依次消费消息,执行本地事务操作。
-
如果任意一个消费者失败,消息重新进入队列,保证最终一致性。
适用场景:需要较强一致性但允许最终一致的场景,比如订单系统。
优点:性能高效,无单点问题,支持异步处理。
缺点:一致性要求较低,需要自行实现重试等机制。
所以,选择何种模式需要根据业务场景考虑一致性需求和系统性能,两种模式各有优势。