Distributed System 笔记 - Synchronization 和 ACID

本文详细介绍了分布式系统中的选举算法,包括Bully算法和环算法,以及实现互斥的集中式、分布式算法如Richardt和Agrawala算法、令牌环算法。此外,还探讨了分布式事务的ACID特性及其在并发控制中的应用,如2PL协议。
摘要由CSDN通过智能技术生成

学习资源:

CMU 15440 Lecture note: http://www.andrew.cmu.edu/course/15-440-f14/applications/ln/lecture7.html

分布式系统原理与范型, chap5


5.4 选举算法

许多分布式算法需要有一个进程充当协调者,发起者或者其他特殊角色。这里讨论选举出一个协调者(用于协调的进程)的算法。

假定每个进程有一个唯一的编号(例如它的网络地址)。通常,选举算法会试着找出进程号最大的进程,将它指定为协调者。

另外,假定每个进程都知道其他进程的进程号,但不知道当前有哪些进程正在运行,而哪些进程已经崩溃。选举算法的目的是确保发起选举以后,所有的进程都同意选举出的新协调者,则选举结束。

5.4.1 Bully算法

当任何一个线程P发现当前的协调者已经不再响应请求的时候,它就发起一次选举(P主持选举):

1)P向所有编号比它大的进程发送一个election消息

2)如果无人响应,则P自己获胜,成为协调者

3)如果有编号比P大的进程响应,则那个响应的线程接管了P的选举工作,P的选举工作到此完成

由上面的步骤可以看出,任何时刻,一个进程只能从编号比它小的进程处得到election消息。这个进程(election的接受者)发回一个OK消息给发送者(响应election),表面它仍然在运行,并接管选举工作。以此步骤进行下去,最终只有一个编号最大的线程在举行选举,而其他线程都已经放弃选举或者无法响应,这个最大的线程就是新的协调者。它赢得了选举并把获胜的消息(coordinator消息)发送给所有线程,通知它们自己是新的协调者。因此可见,最大的线程总是获胜,因此称为bully。


需要注意的是,可以有多个进程同时举行选举工作。4发起选举后,同时向5和6都发送了election消息,当然5和6也都回响应。此时4得到响应后,停止了自己的选举工作。但是5和6都在同时举行选举工作。这并不是问题。因为5会向6发送election消息并得到6的响应,从而放弃主持选举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值