Raft实现报告(13)

简介: Raft实现报告(13)

Raft实现报告(13)

集群中的角色转换 part2

上期说到我们的实现要把,配置变更集成到算法当中去,为了让配置更改安全,那么在过度期间不可能在同一任期选举出两个leader,但是,如果服务器直接从旧的配置,切换到新的配置的任何方法都是不安全的。通过一次原子的切换所有服务器是不可能的,因此,集群可能会在过渡期分成两个独立的部分。

为了确保安全,配置更改必须使用两阶段方法。有多种方法可以实现这两个阶段。例如,一些系统使用第一阶段禁用旧的配置,使得他无法处理客户端的请求;然后二阶段启动新的配置。在Raft中,集群首先切换到我们称之为联合共识的过度配置;一旦提交了联合共识,系统就会转换到我们的新的配置,联合共识结合了新旧配置:

  • 日志条目会被复制到两种配置的所有的服务器中
  • 来自任意配置的任何服务器都能充当leader
  • 用于选举和条目提交的协议需要从新旧配置中分开多数

联合共识允许单个服务器在不同时间在配置之间进行转换,而不会影响安全性。此外,联合共识允许集群在更改配置期间继续为客户端请求提供服务。


相关文章
|
存储 算法
Raft实现报告(12)
Raft实现报告(12)
|
Linux
Raft实现报告(18)
Raft实现报告(18)
|
存储 索引
Raft实现报告(16)
Raft实现报告(16)
|
存储 算法
Raft实现报告(六)
Raft实现报告(六)
|
存储 安全 算法
Raft实现报告(一)
Raft实现报告(一)
105 0
|
开发工具 git
Raft实现报告(四)
Raft实现报告(四)
|
存储 索引
Raft实现报告(15)
Raft实现报告(15)
|
安全 C++
Raft实现报告(20)
Raft实现报告(20)
|
存储 算法
Raft实现报告(七)
Raft实现报告(七)