0

我一直在研究基于Quorums概念的分布式互斥算法。分布互斥:Coterie形成

报价: 一个小团C被定义为一组集合,其中每个集合g∈C称为一个法定数。

以下属性持有用于在小集团法定人数:

1)交性质:对于每一个仲裁G,H∈C,G∩H =∅。 例如,集合{1,2,3},{2,5,7}和{5,7,9}不能成为小组中的法定人数,因为第一组和第三组没有公共元素。 2)最小属性:在小圈C中不应有定额g,h,例如 即g⊇h。例如,集合{1,2,3}和{1,3}不能成为小组中的定额,因为第一组是第二组的超集。

我想知道,给定分布式系统中的一组节点,这样的节点或这些节点组成的集合是如何形成的? 什么是算法或技术来做到这一点?

UPDATE: 为了把这个问题 - 换句话说 “鉴于‘N’节点,什么是形成‘K’法定人数,使得他们中的任何两个有共同的节点的‘J’号的最好方法是什么? “

回答

0

用于读取或写入的简单算法是,必须从法定数中的每个节点读取并写入法定数中的每个节点。通过这种方式,您可以确保系统中的每个其他方都将读取最新的书面项目。

由于您的标题是关于相互排除的,系统中的对等方可以要求法定人数中的每个节点锁定资源。由于第一条规则,没有其他同伴可以从整个法定人数中获得锁定。

就我所知,您在实践中联系随机节点并将其用作法定人数n/2 + 1,但正如您所看到的,您还可以定义更复杂的分布,使您可以拥有更小的法定人数,从而再次提高性能。

更新:这种法定人数9个服务器

例子可以是以下各项:

  • 2法定人数:服务器1-5是一个定额和5-9将是另一个(简单多数)
  • 3个法定人数:服务器1,2,3,4; 4,5,6,7;并且7,8,9,1可以是3个不同的法定人数
  • 更多法定人数:服务器1,2,3; 3,4,5; 5,6,1; 6,7,3; 8,3,1; 9,3,1;可能是6个不同的法定人数。但是在这里您可以看到服务器1和3每个都是4个法定人数的一部分,因此需要处理更多的流量。
  • 您可能也会创建类似1,2的法定人数; 1,3; 1,4; 1,5; 1,6; 1,7; 1,8; 1,9;但是这与仅仅具有服务器1相同。
+0

我想知道如何定义这些“复杂的分布”。感谢您的回复,但这仍然无法解决我的问题。 – sg1

+0

我已经为9台服务器添加了一些设置示例,最简单的方法是将它们绘制在纸上,以便更好地查看定额数,以及为什么会起作用。 – peter

+0

谢谢。我明白。但是,您是否知道任何研究论文/算法/参考资料,我可以通过更有条理的方式了解如何形成这样的法定人数?例如:给定'N'个节点,将它们分成'K'个集合,使得任何两个集合都有'J'个节点通用...(可能还有一些约束条件)... – sg1