Raft将分布式一致性分解为多个子问题:Leader选举(Leader election)、日志复制(Log replication)、安全性(Safety)、日志压缩(Log compaction)等。本系列内容将逐个子问题进行介绍,欢迎大家关注和收藏,本系列不断有更新,请记得回头查阅!
1、服务器的三种角色
Raft算法中服务器主要分为三种角色:Leader、Follower、Candidate,并且三种角色相互独立,也就是服务器在同一时间内只可能扮演其中一种角色。
Leader:用于对所有用户的请求进行处理以及日志的复制等等。
Follower:不会主动发送消息,只响应来自Leader与Candidate的请求。
Candidate:用于选举新的Leader。
2、任期介绍
Raft 算法将时间划分成为任意不同长度的任期(term)。任期用连续的数字进行表示。每一个任期的开始都是一次选举(election),一个或多个候选人会试图成为领导人。如果一个候选人赢得了选举,它就会在该任期的剩余时间担任领导人。在某些情况下,选票会被瓜分,有可能没有选出领导人,那么,将会开始另一个任期,并且立刻开始下一次选举。Raft 算法保证在给定的一个任期最多只有一个领导人。
3、网络状态
网络状态分为两种情况:选举阶段,正常运行阶段。备注:网络状态还可能会有成员变化阶段,暂时先不考虑。