1、什么是raft算法
raft算法是分布式系统中的保持数据一致性的算法
2、raft算法怎么保证数据的一致性
raft有三种角色:
leader:管理节点,负责告诉其他节点如何处理数据或者消息
candidate:候选节点,用于选举
follower:跟随节点,负责处理leader和candidate的请求
所有一致性算法都会涉及到状态机,而状态机保证系统从一个一致的状态开始,以相同的顺序执行一些列指令最终会达到另一个一致的状态。
其中集群的各节点的状态转化如下:
a、所有节点初始状态都是Follower角色
b、超时时间内没有收到Leader的请求则转换为Candidate进行选举
c、Candidate收到大多数节点的选票则转换为Leader;发现Leader或者收到更高任期的请求则转换为Follower
d、Leader在收到更高任期的请求后转换为Follower
3、raft算法的任期
每个任期都由一次选举开始,若选举失败则这个任期内没有Leader;如果选举出了Leader则这个任期内有Leader负责集群状态管理。
4、raft算法的状态
5、raft算法背后的逻辑支撑可以认为是拜占庭将军问题,解决分布式的信任问题
Raft 在实际应用场景中的一致性更多的是体现在不同节点之间的数据一致性,客户端发送请求到任何一个节点都能收到一致的返回,当一个节点出故障后,其他节点仍然能以已有的数据正常进行。在选主之后的复制日志就是为了达到这个目的
实现 Raft 算法两个最重要的事是:选主和复制日志