raft(1)
这篇文章会按这样的顺序来简单介绍raft算法: 第一部分 从整体上看raft算法是基于怎样的context(原论文的词汇,我的理解其实就是类似与数据结构一样的东西),即 replicated state machine上运行 假设在没有任何异常情况(没有任一一个节点挂掉,没有网络故障,所有节点的log正常插入,且follower与leader一致)下的集群是怎样运转的。 在进入第二部分之前,会简单介绍raft中的基础概念和基础结构 第二部分将会把假设的理想情况,即没有任何异常的条件去掉,看看在有节点异常挂掉或者由网络故障导致的节点失联,或者有节点之前挂掉后重连,结果log与leader的log有冲突的情况下,raft算法会怎样工作,其实主要是靠: leader election log replication 第三部分会基于第二部分继续探究,这样raft是不是就能确保一致性了呢?No,No,No,其实还没有,所以这部分会探讨safety: election restriction committing entries from previous terms safety argument follower and candidate crashes timing and availability 第四部分cluster membership changes 第五部分Log compaction 1. Overview raft是一个解决日志一致性和分区容错的算法。这个算法依赖于replicated state machine这个数据结构,而replicated state machine本身也由这样三部分构成:...