分布式事务2PC3PCTCCRoc

这篇文章将介绍分布式事务中的多种实现方案,及各种分布式事务方案的实现原理、事务执行过程、优缺点,读完这篇文章相信你会对2PC、3PC、TCC、MQ事务消息有个详细的了解

分布式事务的处理方法有哪些?

XA协议:基于分布式事务协议,主要由事务管理器和本地资源管理器组成,事务管理器是一个全局调度者,负责本地资源管理器统一的提交或回滚事务。mysql、oracle均已支持XA协议

2PC(两阶段提交)

在这里插入图片描述

基本流程:

Prepare预备阶段:予执行需要执行的sql,但不提交事务

Commit提交阶段:提交事务

不足:

数据不一致:在事务管理器向所有服务发送提交事务Commit阶段时,某些参与者可能发生网络抖动,无法正常接收到Commit请求,从而导致每个参与者的数据不一致

超时导致同步阻塞:当有一个参与者出现通信超时,其余所有参与者将一直阻塞无法释放资源

单点故障风险:如图可知,资源管理器统一协调所有参与者,一旦资源管理器出现故障,则参与者无法完成Commit操作,会一直处于阻塞状态。尽管资源管理器会重新选举,当还是无法解决之前遗留的阻塞问题。

性能问题:所有参与者在事务提交阶段处于同步阻塞状态,占用系统资源,容易导致性能瓶颈

3PC(三阶段提交)

在这里插入图片描述

基本流程:

CanCommit:协调者向所有参与者发送CanCommit命令,,询问是否可以执行事务提交操作。如果全部响应YES则进入下一个阶段

PreCommit:预提交事务操作,询问是否可以进行事务的预提交操作,参与者接收到PreCommit请求后,如参与者成功的执行了事务操作,则返回Yes响应,进入最终


转载请注明:http://www.aierlanlan.com/cyrz/8471.html