纯干货 | 细说分布式事务两阶段提交
事务的概念在 这篇文章 中描述过,在分布式系统中,读写位于多个节点的数据,如果依旧想保证ACID特性,就必须实现分布式事务。而其实现关键则是适当的提交协议,目前最简洁,且使用最广泛的无疑是两阶段提交协议(2PC)。 1.实现分布式事务关键组件 单机系统通过 事务管理器(transaction manager,TM) 实现本地事务。分布式系统中,需要协调多个节点的事务管理器,共同提交成功或失败,因此需要 事务协调者(transaction coordinator,TC) 。一个分布式事务管理器,可以粗略地划分为这两个子系统。这两个子系统根据自己在事务执行中扮演的角色,也可称之为 参与者 与 协调者 。 本地事务管理器负责本机事务并发控制和异常恢复等功能,事务协调者负责开启事务,将事务划分为多个子事务分发到相应的节点执行,并协调事务完成(一起提交成功或失败)。在实现中,TM和TC可以实现在同一个进程中,也可以部署在不同的节点。 2.经典两阶段提交协议 两阶段提交的流程比较简单。当分布式事务T执行完成,即事务执行的各节点都告知协调者TC,事务已经执行完成,TC便开启两阶段提交流程。 Phase 1 Prepare: 1.TC写本地日志,并持久化。TC向所有参与者发送Prepare T消息。 2.各参与者TM收到Prepare T消息,根据自身情况,决定是否提交事务。 如果决定提交