Raft学习笔记
Contents
关于Raft
的学习记录。如有疑问欢迎指正,也欢迎讨论。
paxos
的思想理解起来很困难,只是简单地理解了一下,连着看了几天都不能真正理解,跳过先看《In Search of an Understandable Consensus Algorithm》。
个人感觉学习这两个算法就不要想着 10 分钟学会的那种文章了,越长越好,毕竟论文 18 页?
#摘要
Raft
是一个共识算法,为了解决paxos
难以理解的问题,解决方式是将一些共识算法中的一些概念分离,并通过safety
来约束这些之间的关系。具体有四个方面,leader election
、log replication
、safety
和membership changes
。
#Raft
raft 通过选举出一位 leader 来实现共识,所有的日志复制和管理都由 leader 来全权负责。
leader 的工作内容:
- 接收来自客户端的指令,并将其复制给其他的服务器(Followers)。
- 告诉这些服务器什么时候可以应用(提交)这些指令到状态机。
#Raft basics
一个Raft
集群由多台服务器组成,5 台机器的集群允许 2 台机器 down 掉(另外 3 个可以满足大多数这个需求)。
任意时刻,每个服务器只拥有以下状态之一的状态:leader
,follower
,candidate
。
follower
:对leader
和candidate
的请求作出回应。
leader
:接收所有来自客户端的请求。(如果客户端请求了一个follower
,该请求会被重定向给leader
)