图 10:直接从?一种配置转到新的配置是?十分不不安全的,因为各个机器器可能在任何的时候进?行行转换 。在这个例例?子中,集群配额从 3 台机器器变成了了 5 台 。不不幸的是,存在这样的?一个时间点,两个不不同的领导?人在同?一个任期?里里都可以被选举成功 。?一个是通过旧的配置,?一个通过新的配置 。为了了保证安全性,配置更更改必须使?用两阶段?方法 。?目前有很多种两阶段的实现 。例例如,有些系统在第?一阶段停掉旧的配置所以集群就不不能处理理客户端请求;然后在第?二阶段在启?用新的配置 。在 Raft 中,集群先切换到?一个过渡的配置,我们称之为共同?一致;?一旦共同?一致已经被提交了了,那么系统就切换到新的配置上 。共同?一致是?老老配置和新配置的结合:
? ?日志条?目被复制给集群中新、?老老配置的所有服务器器 。? 新、旧配置的服务器器都可以成为领导?人 。? 达成?一致(针对选举和提交)需要分别在两种配置上获得?大多数的?支持 。
共同?一致允许独?立的服务器器在不不影响安全性的前提下,在不不同的时间进?行行配置转换过程 。此外,共同?一致可以让集群在配置转换的过程?人依然响应客户端的请求 。集群配置在复制?日志中以特殊的?日志条?目来存储和通信;图 11 展示了了配置转换的过程 。当?一个领导?人接收到?一个改变配置从 C-old 到 C-new 的请求,他会为了了共同?一致存储配置(图中的 C-old,new),以前?面描述的?日志条?目和副本的形式 。?一旦?一个服务器器将新的配置?日志条?目增加到它的?日志中,他就会?用这
个配置来做出未来所有的决定(服务器器总是使?用最新的配置,?无论他是否已经被提交) 。这意味着领导?人要使?用 C-old,new 的规则来决定?日志条?目 C-old,new 什什么时候需要被提交 。如果领导?人崩溃了了,被选出来的新领导?人可能是使?用 C-old 配置也可能是 C-old,new 配置,这取决于赢得选举的候选?人是否已经接收到了了 C-old,new 配置 。在任何情况下,C-new 配置在这?一时期都不不会单?方?面的做出决定 。?一旦 C-old,new 被提交,那么?无论是 C-old 还是 C-new,在没有经过他?人批准的情况下都不不可能做出决定,并且领导?人完全特性保证了了只有拥有 C-old,new ?日志条?目的服务器器才有可能被选举为领导?人 。这个时候,领导?人创建?一条关于 C-new 配置的?日志条?目并复制给集群就是安全的了了 。再者,每个服务器器在?见到新的配置的时候就会?立即?生效 。当新的配置在 C-new 的规则下被提交,旧的配置就变得?无关紧要,同时不不使?用新的配置的服务器器就可以被关闭了了 。如图 11,C-old 和 C-new 没有任何机会同时做出单?方?面的决定;这保证了了安全性 。
图 11:?一个配置切换的时间线 。虚线表示已经被创建但是还没有被提交的条?目,实线表示最后被提交的?日志条?目 。领导?人?首先创建了了 C-old,new 的配置条?目在?自?己的?日志中,并提交到 C-old,new 中(C-old 的?大多数和 C-new 的?大多数) 。然后他创建 C-new 条?目并提交到 C-new 中的?大多数 。这样就不不存在 C-new 和 C-old 可以同时做出决定的时间点 。在关于重新配置还有三个问题需要提出 。第?一个问题是,新的服务器器可能初始化没有存储任何的?日志条?目 。当这些服务器器以这种状态加?入到集群中,那么他们需要?一段时间来更更新追赶,这时还不不能提交新的?日志条?目 。为了了避免这种可?用性的间隔时间,Raft 在配置更更新的时候使?用了了?一种额外的阶段,在这个阶段,新的服务器器以没有投票权身份加?入到集群中来(领导?人复制?日志给他们,
- 人生低谷的时候,怎么寻找出路?
- 我的世界大全 我的世界
- 网上怎样找女朋友 网上找人上哪个网站怎么寻找亲人
- 87%以上新兵拥有大专学历,低学历当兵如何寻找出路?
- 寻找尸源女 玩尸女的看法
- 超级巨星游戏下载
- 寻找那遗失的年味
- 寻找乡村的味道
- 寻找心灵的故乡
- 创业扶持项目 如何寻找创业项目
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
