Youtube视频 Raft lecture (Raft user study)

地址:https://www.youtube.com/watch?v=YbZ3zDzDnrw

Joint Consensus

多边(联合)共识

The solution is to use two phases to change the configuration. Raft switches first to an intermediate phase called joint consensus. During this phase, the cluster consists of all of the servers in both the new and the old configuration(so the union of those configurations). But decisions such as elections and commitment require a separate majority separate agreement from both the old configuration and the new configuration.

解决方案是使用两个阶段来更改配置。Raft首先切换到称为多边共识的中间阶段。在此阶段,群集由新配置和旧配置中的所有服务器组成。但是如选举和提交的决策,需要在新旧两个配置状态下分别达成一致。

Let me show you how this works. So we start off in an existing configuration, i will call Cold on the slide. And the way a configuration change is initiated that a client makes a request of the leader just like it would for any other state machine operation. When the server receives that request then the leader adds an entry to its log describing this joint configuration, which i will call Cold+new, that’s just a log entry like any other log entry. The server puts it in its log and then the leader propagates it out to the other servers in the cluster using AppendEntries RPC just like any other log entry. The only thing different about the configuration changes is that they take effect immediately, so soon as server places a new configuration into its log. It begins living by that configuration entry. It doesn’t wait for the configuration entry but for the log entry to become committed before applying it like it would for normal log entries. So back to our timeline here, leader places the new configuration entry in its log and then as far as that leader is concerned that’s the configuration in effect, so that leader makes all of its decisions according the old plus new configuration that means that for example for any log entry to be committed it must be logged majority of the machines in the old cluster and a majority of machines in the new configuration. Now, for a while until that entry becomes replicated or reached a point of being committed, it’s possible that decisions might be made either with Cold or Cold+new.1 For example if the leader crashes shortly after logging the new configuration entry, it’s possible that some other machine is still operating under the old, could be elected and take over the cluster but at some point this new configuration entry will become committed Cold+new. Once that happens now it’s not possible for any machine to make a decision based purely on Cold.

我来告诉你这是怎么工作的。所以我们从现有的配置开始,我称之为幻灯片上的Cold。配置更改的方式是客户端向领导者发出请求,就像其他状态机操作一样。当服务器收到该请求时,领导者在其日志中添加一个条目来描述这个联合配置,我将称之为Cold+new,就像任何其他日志条目一样只是一个日志条目。服务器将其放入其日志中,然后领导者使用AppendEntries RPC将其传播到集群中的其他服务器,就像其他日志条目一样。配置更改的唯一不同之处在于,只要服务器将新配置放入其日志中,它们就会立即生效。一旦服务器将新配置记录到日志中,那么它就立刻生效,它不会等待配置条目在应用之前提交(就像普通日志条目一样)。所以回到时间轴2,领导者将新的配置条目放到其日志中,然后就这个领导者而言,Cold+new就是实际上的配置,以便领导者根据旧的加上新的配置做出所有决定,这意味着对于要提交的任何日志条目,要求该条目分别在新旧配置服务器下同时都成为大多数。现在,在该条目被复制或到达提交点之前,可能会使用Cold或Cold+new作出决定。例如,如果领导者在记录新配置记录后就发生崩溃,有可能某些其他旧配置的机器仍然处于工作状态,被选举成领导者管理集群。但在某个时间点,Cold+new会变为已提交的状态3,在此种状态下,任何机器就无法只根据Cold来做出决策。


  1. 52:28 ↩︎

  2. -w537 ↩︎

  3. -w536 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值