这种能够容忍链路故障的双节点系统的leader选举算法是否可以被认为是一项重大创新?

问题描述

我和我的团队发明了一种方法解决工程中双节点系统的裂脑问题,并发布了paper。我们不是一个有名的团队,但是我们觉得这个方法很新很实用,所以想和大家讨论一下,看看大家是否认为这是一个重大创新。

我们试图解决的问题

让我先描述一下我们要解决的问题。在双节点分布式系统中,如果节点之间的链路发生故障,并且没有第三个节点,那么由这两个节点组成的系统就无法进行兼具可用性(活性)和一致性(安全性)的领导者选举。这使得设计一个两节点的分布式存储或数据库系统变得不可能。

为了解决这个问题,工程师想了很多办法。有些在两个节点之间使用更可靠的硬件来避免链路故障,有些使用第三个节点或共享介质进行仲裁。但这对硬件提出了额外的要求。

我们提出的解决方

在本文中,我们提出了一种新方法,它既不依赖于额外的第三个节点或共享介质,也不依赖于可靠的链接。这种方法被称为“基于级别的领导者选举算法”。但是论文中没有使用这个名字。

假设这是一个部分同步(或最终同步,或半同步)的分布式存储和数据库系统,由S个服务器节点组成。有 C 个客户端节点访问它们。

  • 当S>=3时,S服务器节点可以使用paxos、Raft等任何统一的共识算法来选举leader在这种情况下,可以保证可用性(活性,最终会选出领导者)和一致性(安全,任何时候都没有不同的领导者)。
  • 当S=1时,客户端节点也会参与leader选举过程。只要客户端节点数C>=1,总节点数不小于3,在部分同步系统中可以使用统一共识算法选举leader。但是,只有服务器节点有投票权和被选举权,而客户端节点只有投票权,没有被选举权。
  • 当S

请求

希望你能帮我们看看这个方法是否可以算是一个重大的创新。此外,我们计划将基于级别的领导者选举原语添加到当前的存储和数据库请求/响应协议中。如果有人有兴趣,请告诉我。

解决方法

我宁愿评论这个问题,但我没有声誉,所以我只能回答。

我认为这可能是一项很酷的创新,并且在某些应用程序中可能很有用,特别是那些服务器少于五台且客户端长期存在且不经常更改的应用程序。但是,我认为考虑状态机重配置算法文献可能会有用。特别是,如果您有一个包含三个节点的系统,您可以使用两个可用节点安全地重新配置为仅两个节点。但是,如果您有一个超过五个节点的系统,并且除了两个节点之外的所有节点都同时变得不可用,则不可能安全地重新配置为仅两个节点,因为您可能会错过其他大多数节点所同意的内容。

当太多客户端失败时也会发生类似的情况。首先,想象一下除了两台服务器之外的所有服务器都失败了,并且使用了三个或更多客户端来就某事达成一致。然后所有客户端失败/断开连接,所有服务器重新联机。这里无法仅使用两台服务器就新事物达成一致,也无法重新配置共识组以包含已重新启动的服务器或删除失败的客户端。在这种情况下,就会陷入僵局(至少在这些客户回来之前)。

最好的祝福, 迈克尔 :)