什么是分布式系统中的领导者选举?

小夏 科技 更新 2024-01-28

领导者选举的目标是为分布式系统中的特定实体(如进程、主机、线程、对象或人员)授予特殊权力。 这些权力可能包括委派任务的能力、修改数据的能力或处理所有系统请求的责任。 领导者选举可以成为提高效率、最小化协调、简化架构和减少开销的有用工具,但它也可能引入额外的故障模式和扩展挑战,并使评估系统的有效性变得更加困难。

为了实现这一点,领导者选择一种算法来选择处理器来协调分布式系统的运行。 领导者通常是根据标准选择的,例如选择具有最高标识符的处理器。 选择主处理器后,其他处理器将进入终止状态。 在领导者选举算法中,终止状态分为选举状态和非选举状态。 一旦处理器进入选择性或非选择性状态,它就会始终保持该状态。

领导者选举算法必须满足安全性和活跃性条件才能有效。 活动条件指示每个处理器最终将进入选择性或非选择性状态。 安全条件规定,只允许一个处理器进入选择性状态,成为分布式网络的领导者。

在确定领导人选举是否合适时,需要考虑三种情况:

当每个节点大致相同并且没有明确的领导者竞争者永久分配时:在这种情况下,任何节点都可以被选为系统的领导者,并且没有单点故障。

当集群执行需要密切协作的复杂任务时:协调可能涉及划分工作、将工作分配给特定节点以及合并不同节点的结果。 例如,在确定蛋白质如何折叠的科学计算中,可能需要要求领导节点将每个节点分配给计算的特定部分,然后将结果组合在一起以获得完全折叠的蛋白质构型。

当系统对数据执行多次分布式写入并需要良好的一致性时:一致性意味着无论哪个节点处理请求,用户始终拥有最新版本的数据。 在这种情况下,领导者通过成为系统当前状态的真实**来确保一致性,并且领导者选举算法必须正确维护这一点。 例如,银行可能需要强一致性,以确保无论哪个服务器响应用户的网上银行请求,用户的银行账户余额都是准确的,并且同一银行账户上的多笔交易不会相互冲突。

领导者选举是分布式系统中的常见模式,因为它有几个好处:

考虑具有单个领导者的系统更容易,因为它整合了系统的所有并发性,降低了部分故障的风险,并为日志和指标提供了单个位置。

单个领导者可以更有效率,因为它可以简单地将更改传达给其他系统,而无需就这些更改达成共识。

单个领导者可以通过观察和控制系统状态的所有变化,轻松地为客户提供一致性。

单个领导者可以通过提供可同时使用的单个一致数据缓存来提高性能或降低成本。

为单个领导者编写软件可能比为仲裁编写软件更简单,因为单个领导者不需要考虑可能同时处于相同状态的其他系统。

领导人选举也存在一些重大弊端:

单个主节点会造成单点故障,因为如果系统无法检测或纠正有故障的主控制器,则整个系统可能会变得不可用。

单个领导者在数据大小和请求速率方面限制了系统的大小,如果系统需要扩展到单个领导者之外,则可能需要完全重新构建架构。

领导者代表单一的信任点,因为有问题的领导者可以在整个系统中迅速传播问题并产生巨大的影响(称为“半径”)。

领导者选举的系统可能难以部分部署,这在亚马逊的许多软件安全策略中使用,例如一体式、A-B 测试、蓝绿部署、具有自动回滚功能的增量部署等。

领导者选举算法引导集群集体同意一个节点作为领导者,并最大限度地减少来回交互。 通常,该算法为每个节点分配三种状态之一:领导者、追随者或候选者。 Leader 还需要定期通过“健康检查”或“心跳”,以便 Follower 节点可以判断 Leader 是否不可用或无效,并可以选出新的 Leader。

使用的领导者选举机制的类型取决于集群是同步的还是异步的。 在同步集群中,节点同步到相同的时钟,并按可能的顺序发送消息。 在异步集群中,消息无法在特定时间范围内或以任何特定顺序可靠地发送。

异步算法不能同时保证安全性(确保只选出一个领导者)和活动性(确保每个节点都被选出),因为异步集群中任意数量的节点都可能无限滞后。 在实践中,实现优先考虑安全性,因为它可能会对服务产生更严重的后果。

同步算法更易于理解,并且可能更可取,因为它们保证了安全性和活动性。 但是,同步集群需要对其运行方式施加额外的限制,这在实践中可能无法实现或不可扩展。

欺负算法是一种简单的同步领导者选举技术,它要求每个节点都有一个唯一的数字 ID,并且集群中的所有节点都知道彼此的 ID。 当节点启动或当前 leader 运行状况检查失败时,选举过程开始。

有两种可能的结果:

如果一个节点具有最高的 ID,它将声明自己为获胜者,并将此消息发送给其他节点。

如果一个节点的 ID 较低,它将向所有具有较高 ID 的节点发送消息。 如果它没有收到响应,则假定节点已失败或不可用,并声明自己为获胜者。

Paxos 是一种通用共识协议,可用于异步领导人选举。 Paxos算法背后的思想是在网络中的节点之间达成共识,哪个节点应该是领导者。 在算法中,一个节点将自己作为领导者,网络中的其他节点投票支持或反对它。 如果大多数节点投票支持该节点,则该节点将成为领导者。 否则,未能成为领导者的节点将重试。 该过程一直持续到节点获得多数票并成为领导者。

Raft 是 Paxos 的流行替代品,因为它更易于理解、实现和使用。 它是一种非阻塞算法,涉及 raft 共识中的每个节点,以跟踪当前的“选举期限”。 当领导者选举开始时,每个节点都会递增其术语编号的副本,并侦听来自其他节点的消息。 如果节点在随机间隔后没有收到任何消息,它将成为候选领导者并请求其他节点投票。

如果候选人赢得多数选票,他就会成为领导者。 如果具有较高任期编号的其他候选人发送消息,则原始候选人将确认。 如果发生选举或计时器超时而未达成共识,则算法将重新启动。 由于随机超时,重新启动很少见,这可以防止节点冲突。

Apache ZooKeeper 是一种“自分布式、高度可靠”的集中式编排服务。 它旨在帮助分布式系统处理协调任务。 Apache Zookeeper 背后的想法是协调是困难的,因此最好有一个共享的开源实现,其中包含所有必要的组件,这样服务就不必从头开始重新发明一切。 这在大型分布式系统中特别有用。

Apache ZooKeeper 使用 ZAB(ZooKeeper 原子广播)协议来管理领导者选举、复制顺序保证和节点恢复。 ZAB 是一种异步算法,它通过将状态更改从领导者“广播”到跟随者来确保写入一致并传播到所有节点。

领导者选举是一种强大的技术,可以在系统中使用,以帮助使系统更具容错性和更易于使用。 然而,当我们采用领导人选举时,我们会密切关注每个协议提供的保证,更重要的是,没有提供的保证。

优质作者名单

相似文章

    分布式矩阵系统

    分布式矩阵系统是基于分布式计算原理的矩阵计算框架。这样就把大规模的矩阵数据分成几个小块,把这些小块分发到不同的计算节点进行并行计算,从而实现快速矩阵计算和分布式计算。与普通矩阵系统相比,分布式矩阵系统在以下方面有所不同 处理大规模数据 分布式矩阵系统针对处理大规模矩阵数据进行了优化。为了并行计算大规...

    什么是分布式VPN?DataSky 是如何实现分布式 VPN 的?

    什么是分布式VPN?信达天航使用无线AP在分支节点和总部服务器之间形成内网。DataSky分布式VPN组网解决方案解决了分支节点连接总部的网络需求,具有以下优势 简单易用 分布式VPN是一种简单易部署的虚拟专用网络解决方案。客户可以使用 DSE 无线 AP 设备轻松地在分支节点和总部服务器之间建立安...

    如何快速检测分布式爬虫IP

    本文介绍如何快速检测分布式爬网程序IP IP地址。首先,我们需要了解分布式爬虫IP的特点和检测方法,然后介绍IP的基本概念和功能,最后是如何使用IP来检测分布式爬虫IP。 分布式爬虫IP的特点及检测方法。分布式爬虫IP是指在不同地域 不同网络环境下使用的IP地址,通常由多台服务器提供。由于这些 IP...

    操作系统是管理什么的系统软件

    操作系统是管理其本质的系统软件,操作系统 计算机资源的微妙管理器。在计算机科学领域,操作系统可以被视为一个高效 准确和全面的管家,负责管理和协调计算机的所有资源。这些资源包括硬件资源 如处理器 CPU 内存 存储设备以及输入和输出设备 以及软件资源 如系统程序和应用程序 首先,操作系统对硬件资源的管...

    齿轮油泵是液压系统中的重要部件

    齿轮油泵是液压系统中的重要元件,是将液压油从低压区输送到高压区的装置。它的工作原理和结构与齿轮泵相似,但具有更高的压力和效率。在液压系统中,齿轮油泵的主要作用是提供动力,将液压油从低压区输送到高压区,以实现液压系统的各种功能。齿轮油泵通常由一对相互啮合的齿轮组成,其中一个齿轮负责吸入液压油,另一个齿...