raft算法
2021-10-17 15:26:37 小德 算法 访问次数 86

一、简介

    raft算法是一个分布式一致性算法,一主多从的架构,通过同步日志的形式达到数据一致性,两段式提交类似TCC的形式同步日志,大部分节点成功即成功。

二、选主算法

    初始化:各分布式节点,按先到先得的方式竞争主,随后产生主从节点,和任期term  整型,主收到信息向从发出同步命令,从返回主成功,主向从发出提交信息命令,从提交完成返回主成功信息。

    主节点崩溃:主节点正常运行会定时向各从节点发送心跳,主崩溃则不能发送心跳,各从节点会有不同的定时器,距离最近一次收到主的心跳后会开始计时,如果定时器到期仍未收到心跳则向各节点发出选自己为主的信息,超过半数则选主成功,任期+1.

    如果同时多个节点同时发出选主 且各自得票相同,得等待下一次选主。

三、网络异常

    节点之间网络异常时可能导致产生两个主,但其任期是不同的,修复网络后,以任期大的为准,任务小的主从节点回滚网络异常时未提交的信息


参考:http://thesecretlivesofdata.com/raft/