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