1、raft算法是什么? 答:共识算法
2、raft算法有什么用? 答:维持不同机器的强一致性
3、raft算法通过什么方式来维持不同机器的强一致性? 答:传递log日志 ,按照官方的说法日志里面包含命令,每台机器执行相同的命令,结果应该是一样的
4、raft算法如何传递日志? 答:Raft算法通过Leader节点来传递日志。当一个客户端发送一条请求给Leader节点时,Leader节点会将该请求作为一条日志条目添加到自己的日志中,并将该日志条目复制到其他节点的日志中。接收到日志条目的节点会对其进行持久化,并向Leader节点发送确认消息(心跳)。一旦Leader节点收到大多数(超过半数)节点的确认消息,该日志条目就被认为是已提交的,然后Leader节点会将该日志条目应用到状态机,并将执行结果返回给客户端。
5、raft算法是如何选举leader的? 答:vote 出来的,每个机器都可以接受投票,也可以投对面,但是每台机器只有一张票,奇数的机器的大多数获得票的人会成为leader ,其他机器称为follower,在投票的时候,被投的机器叫做候选人 比如说7台机器 只要有一台候选人拿到了4票,则那个候选人则为leader 如果是偶数的机器,候选人的票数一样,则会等时间,时间一过继续举行投票,直到选出leader为止 。
6、假如有五台机器,选leader的时候,如果两台和另外三台因为网络等原因断开了,该是什么样的情况?
答:这种情况下,会从两台和三台中各选一名leader ,因为这两坨断开了,所以并不知道对面都存在了一名leader,两台中会按照leader来传送日志,三台中会按照另一个leader来传送日志,同样它们的follower也会发送心跳来告诉leader,这种情况下会有两个client客户端,一个leader对应一个client客户端,这个时候他们都不会真正的提交,等网络重连之后,会按照优先级也就是票数,两台的leader会主动放弃,这个时候,两台机器都会回滚到网络刚断开的时候,然后由真正的leader领导,继续发送日志给其他机器
本文仅个人理解,如若讲错,各位尽可评论