今天学习2PC相关知识,结合论文概念和具体的例子理解。之后会编程自己实现一下。
全文关键词:提交协议、原子性、协调者、阻塞、关键缺点。
P.S. 通过右侧自动目录查找相关内容更方便噢~
2PC概念
两阶段提交(two-phase commit,2PC)是一种保证分布式事务原子性的提交协议。
回顾一下原子性:事务的所有动作要么全被执行,要么全都不执行。
在数据一致性中的含义是:要么所有副本(备份数据)同时修改某个数值,要么都不更改,以此来保证数据的强一致性。
协议内容简单概括为:每个参与者(participant)将自己的操作成败通知协调者(coordinator),再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是取消操作。
在分布式系统中,每个节点只知道自己操作的成功或者失败。因此当一个事务跨越多个节点时,为了保持ACID特性,引入协调者和参与者机制。协调者是该事务的起源站点,负责协调所有参与者并决定是否提交事务。协调者遵循全局提交规则进行全局决策。
2PC站点间通信方法
集中式2PC通信
当通信只存在于协调者和参与者之间,参与者之间不通信时。
线性2PC通信
无并行性,性能较低。
分布式2PC通信
每个参与者在第一阶段结束的时候就会依据全局提交规则做出自己的决策,故不需要线性2PC的第二阶段。
每个参与者需要知道其他参与者,故协调者发送“prepare”消息时应附加一个所有参与者的列表。
2PC具体内容
状态转移图:(左协调者,右参与者)
流程