Skip to content

Latest commit

 

History

History
62 lines (34 loc) · 2.47 KB

README.md

File metadata and controls

62 lines (34 loc) · 2.47 KB

RAFT_TTC

交科赛

Authored by Aczy156

针对项目的分析:

RAFT协议中的元素[节点的状态]:

  • 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 接受投票的申请

RAFT协议中的几种动作/传达的信息,也就是要做的事情

  • base [基础],相当于选择性接口,下面三个的任何一个信息传达的动作都可以通过base来实现部分方法
  • append_entries [追加条目]
  • request_vote [请求投票]每个点向除自己以外的其他点发送消息的情况
  • response [回应]

RAFT协议中的几个board记录类,用于记录

  • base[基础],选择性接口,下面的实现其中的部分方法
  • redis_board:键值对key-value存储数据库,一种支持string hash list set zset
  • memory_board:用于记录内存

RAFT协议中当需要对整个体系进行修改某个节点的值的时候

  • 需要通过一个client对此时的leader进行投递请求

项目在运行过程中,大致过程是通过调用方法来模拟,然后所有的信息都会体现在board记录类中。