领导人选举模式 Leader Election Pattern
描述#
通过协调合作,在分布式应用程序的任务实例集合中,选举一个实例作为管理的其他实例的领导者。这个模式可以有助于确保任务实例不互相冲突,避免争用共享资源。
背景和问题#
一个分布式应用包括很多任务。这些任务可以是相同代码,或者访问相同资源,或者并行工作。这些工作的运行需要相互协调,确保它们不发生冲突,避免争用共享资源。
解决方案#
任务实力集合中的其中一个任务实例充当领导者,协调其他任务实例完成任务。选举过程必须谨慎,防止在同一个时间有多个实例接管领导者的角色。
监控策略#
下属者通过轮询或者心跳机制监控领导者,如果领导者意外终止或者网络故障,那么下属者会选出新的领导者。
选举策略#
- bully 算法
- 环算法
- Paxos 算法
注意事项#
- 需要有检测领导失败或变成不可用的机制。
- 关闭一些下属任务,可能会导致领导者终止。
- 使用一个专用进程的领导者是一个比较简单的方法。
何时使用#
多个任务,并且需要协调各个任务完成工作。
推荐文章: