分布式系统和分布式一致性问题
分布式系统,即运行在多台不同的网络计算机上的软硬件系统,并且仅通过消息传递来进行通信和协调。
分布式一致性问题,即相互独立的节点之间如何就一项决议达成一致的问题。
2PC(Two-Phase Commit 二阶段提交)
二阶段提交,是指将事务提交分成两个部分:准备阶段和提交阶段。事务的发起者称之为协调者,事务的执行者称为参与者。
阶段一:准备阶段
由协调者发起并传递带有事务信息的请求给各个参与者,询问是否可以提交事务,并等待返回结果。
个 参与者执行事务操作,将Undo和Redo放入事务日志中(但是不提交)
如果参与者执行成功就返回YES(可以提交事务),失败NO(不能提交事务)
阶段二:提交阶段
此阶段分两种情况:所有参与者均返回YES,有任何一个参与者返回NO
所有参与者均反馈YES时,即提交事务。
任何一个参与者反馈NO时,即中断事务。
提交事务:(所有参与者均反馈YES)
1、协调者向所有参与者发出正式提交事务的请求(即Commit请求)。
2、参与者执行Commit请求,并释放整个事务期间占用的资源。
3、各参与者向协调者反馈Ack完成的消息。
4、协调者收到所有参与者反馈的Ack消息后,即完成事务提交。
中断事务:(任何一个参与者反馈NO)
1、协调者向所有参与者发出回滚请求(即Rollback请求)。
2、参与者使用阶段1中的Undo信息执行回滚操作,并释放整个事务期间占用的资源。
3、各参与者