分布式中心化和去中心化思想
1.中心化思想:
* 一个领导多个干活的
* 领导负责将任务分配给合适的人
* 当领导发现某个干活的存在故障时,及时剔除该成员,并替换上候补成员
存在问题:领导发生故障,则系统崩溃
解决方案:master-slave
* 当master发生故障时,slave直接接管master的工作
2.去中心化思想:
* 没有领导和干活的区别,地位平等
* 当某个模块出现问题时,仅仅局限于当前模块,而不影响全局
脑裂
- master发生问题之后,自动恢复,此刻存在两个master,干活的不知道该听谁的
解决方案:
* 选举机制
- master和slave之间保持通信,如果master发生故障,slave接收消息并通知下面成员
- 成员跟master和slave保持通信,当master发生故障并接收到slave通知时,开启选举机制,票数大于总数的一半,则slave升级成master,并将master干掉
- 被替换的master被修复后,自动转换成slave
* 租赁机制
- 既然slave已经升级成了新的master了,将会重新获取lease(租赁)权
- 老的master的lease则过期,与monitor通信时,会失败