-
state[基础],充当其他的选择性接口,可以实现其中的任意的类型
中心调度On_message:一有消息就调度响应的函数去响应
- 消息数量问题:
- 当种类为追加条目/发动选举/接受选举结果/回复消息
-
Leader [领导人给所有其他的follow发送信息,然后其他的在接受到之后,要追加条目,所以follower有追加条目的操作]
-
[message/append_entries]给其他的follower发送刷新心跳的操作,以保证告诉其他节点当前的leader没有宕机。
-
[message/append_entries]接收所有follower返回来的追加条目。
-
Candidate :继承了leader,[message/request_vote]选举人要发布投票,然后投票人返回给信息,在其他的投票人接收到选举人发布的投票时,每个接收者都会心跳重置
-
- request_vote 发出投票的申请
- receive_vote 接受投票的申请
-
-
voter[是选民,给candidiate投票的]
-
[message/request_vote],当接受到需要给别人投票的请求的时候作出响应
-
[message/request_vote]-》被上一步调用的,作出响应的同时send_响应的内容
-
Follower:继承了voter,append_entries增加条目
-
Candidate :继承了voter,[message/request_vote]选举人要发布投票,然后投票人返回给信息,在其他的投票人接收到选举人发布的投票时,每个接收者都会心跳重置
- request_vote 发出投票的申请
- receive_vote 接受投票的申请
-
- base [基础],相当于选择性接口,下面三个的任何一个信息传达的动作都可以通过base来实现部分方法
- append_entries [追加条目]
- request_vote [请求投票]每个点向除自己以外的其他点发送消息的情况
- response [回应]
- base[基础],选择性接口,下面的实现其中的部分方法
- redis_board:键值对key-value存储数据库,一种支持string hash list set zset
- memory_board:用于记录内存
- 需要通过一个client对此时的leader进行投递请求
项目在运行过程中,大致过程是通过调用方法来模拟,然后所有的信息都会体现在board记录类中。