我一直在研究基于Quorums概念的分布式互斥算法。
引用:小圈子C是集合的集合,其中每个集合g∈C称为定数。
以下属性适用于小圈子中的仲裁:
1)交集性质:对于每个quorum g,h∈C,g∩h=∅。例如,集合{1,2,3},{2,5,7}和{5,7,9}不能作为小圈子中的仲裁,因为fi第一个和第三个集合没有公共元素。
2)最小性质:在小圈子C中不应该有定额g,h使得g⊇h。例如,集合{1,2,3}和{1,3}不能是小圈子中的定数,因为fi第一个集合是第二个集合的超集。
我想知道,给定分布式系统中的一组节点,这样的coteries或quorum集是如何由这些节点组成的?有什么算法或技术可以做到这一点?
更新:换句话说,“给定'N‘个节点,什么是形成'K’个定额的最好方法,这样它们中的任何两个节点都有'J‘个公共节点?”
发布于 2014-03-05 22:52:10
读取或写入的简单算法是,您必须从quorum中的每个节点读取,并向quorum中的每个节点写入。这样,您可以确保系统中的每个其他方都将读取最新写入的项目。
由于您的标题是关于相互排除的,因此系统中的对等节点可以向quorum中的每个节点请求对资源的锁定。根据第一条规则,任何其他对等节点都不能从整个仲裁中获得锁。
据我所知,您在实践中接触随机节点并将其用作quorum n/2 + 1
,但正如您所看到的,您还可以定义更复杂的分布,从而允许您拥有更小的quorum,这再次提高了性能。
更新:
具有9台服务器的此类仲裁的示例如下:
https://stackoverflow.com/questions/22199571
复制相似问题