啥是2PC?在架构设计中有什么用? | 架构师之路(13)
科技
2024-11-25 12:06
北京
二阶段提交2PC(Two phase Commit)是指,在分布式系统里,为了保证所有节点在进行事务提交时保持一致性的一种协议算法。在分布式系统里,每个节点都可以知晓自己操作的成功或者失败,却无法知道其他节点操作的成功或失败。因此,当一个事务跨越多个节点时,为了保持事务的原子性与一致性,可行引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)的操作结果,并指示它们是否要把操作结果进行真正的提交(commit)或者回滚(rollback)。2PC的实施思路可概括为:投票阶段(voting phase)与提交阶段(commit phase):(2)提交阶段:收到参与者的通知后,协调者再向参与者发出通知,根据反馈情况决定各参与者是否要提交还是回滚。答:在算法执行过程中,所有节点都处于阻塞状态,所有节点所持有的资源(例如数据库数据,本地文件等)都处于封锁状态。(1)某一个参与者确认之前,所有参与者以及协调者都处于阻塞状态;(2)在协调者确认之前,所有参与者都处于阻塞状态;另外,如有协调者或者某个参与者出现了崩溃,为了避免整个算法处于一个完全阻塞状态,往往需要借助超时机制来将算法继续向前推进,总的来说,2PC是一种比较保守的算法。甲乙丙丁四人要组织一个会议,需要确定会议时间,不妨设甲是协调者,乙丙丁是参与者。(4)丙迟迟不回复,此时对于这个活动,甲乙丙均处于阻塞状态,算法无法继续进行;(1)协调者甲将收集到的结果反馈给乙丙丁(什么时候反馈,以及反馈结果如何,在此例中取决于丙的时间与决定);可以看到,当出现极端情况时,如果不借助超时,整个活动的推进非常的低效。其二,协调者有明确的控制权,而不像paxos算法各节点平等,自选举,自推进,不可控。明确可控在工程系统中相当重要;其三,能切实地解决微服务架构中,很多本地逻辑与远程数据库,缓存,MQ分布式事务的实际问题;https://www.geeksforgeeks.org/two-phase-commit-protocol-distributed-transaction-management/第二阶段
==全文完==
以实践为主线,结合讲解架构知识点,几十个小时视频内容,已完结。以架构知识点为主线,结合讲实践。讲解形式:短视频+图文+直播+星球社群,免费,欢迎感兴趣的童鞋关注。置顶标星,日更好文不错过。若有收获,点赞,转发,在看三连。感谢!