手撸分布式选举

以下出现的非专业大白话完全是个人为了方便记忆.

1. 命中注定(ServerID)选举法

生来就已经约定了谁当leader .
在项目启动前, 给每个项目做好编号.
我的代码因为是在本机启动5个服务模拟集群环境,所以用了端口号作为编号. 谁的端口号最大.谁就是leader,其他人是follower.
过程也很简单.
1.初始化的时候没有leader.所有人都可以毛遂自荐.但是只需要发送给比自己大的人 毛遂自荐 消息即可. 等待他们回复他们是否'健在'.
2.当收到'健在'回复后, 就老老实实等待比自己大的人'登基',并等待接收'登基成功并在位'的消息.
3.如果发起毛遂自荐后,比自己大的无回复,自动登基, 并发送所有服务,自己'登基成功并在位'的消息
4.如果超过设定时间收不到'在位者'消息,开始重复步骤1.

代码初步构思思路

项目结构

  • demo 模拟应用
  • util 选举模式的工具包

源码地址:

https://gitee.com/Bowen-Lee/distributed-election

2. 谁干活多(事务ID)选举法

// TODO

3. 票数过半选举法

// TODO

posted @ 2022-12-30 19:39  博文43231  阅读(24)  评论(0编辑  收藏  举报