Maekawa 演算法在分散式系統中的互斥


在分散式系統中,多個程序可能需要併發訪問共享資源。然而,併發訪問共享資源可能會導致錯誤和不一致。為了保證互斥,必須採用分散式互斥演算法來管理對共享資源的訪問。

分散式互斥演算法,例如 Maekawa 演算法,確保分散式系統中執行的程序之間的互斥。該演算法基於投票機制,一次只允許一個程序訪問共享資源。

Maekawa 演算法

分散式互斥演算法,例如 Maekawa 演算法,確保分散式系統中併發程序之間的互斥。該基於投票的演算法由 Maekawa Mamoru 和 Masuzawa Toshimitsu 於 1985 年提出。

該演算法將分散式系統中的程序總數劃分為多個組或成對的相互相交的子集。每個程序都分配了一個特定的組,並且只有在獲得其組中所有其他程序以及它已獲得許可的所有其他程序的同意後,才能允許訪問共享資源。

為了確保互斥,一個程序只有在不在其臨界區時才能授予許可。此外,一個程序只有在另一個程序當前不在其臨界區時才能請求另一個程序的許可。

該演算法確保每個程序最終都能訪問共享資源,因為它確保每個組中的至少一個程序最終都會授予許可。

Maekawa 開發的互斥演算法具有可擴充套件性、去中心化,並且適用於大規模分散式系統。但是,由於需要在程序之間來回傳送多個訊息,演算法的效能可能會受到影響。

Maekawa 演算法中的投票環結構

Maekawa 演算法最重要的一個方面是投票環結構。該演算法從分散式系統中的程序建立了一個邏輯投票環。根據分配的唯一標識,每個程序都放置在投票環中的一個圓形排列中。

投票環結構決定了哪些程序被允許授權使用共享資源。每個程序的組由它在投票環中的位置決定。該組由程序本身和投票環中其他程序的一個較小子集組成。

仔細選擇每個組的大小以確保它們彼此相交。交集屬性非常重要,因為它確保每個程序都可以向每個組中的至少一個程序請求許可。

在決定哪些程序可以授予許可之前,一個程序必須首先等待其組中所有程序的許可。一旦它從其組中的所有程序獲得了許可,它只能向其組中的其他程序以及所有已向其請求許可的程序授予許可。

Maekawa 演算法在分散式系統中實現互斥的虛擬碼

下面提供了一個 Maekawa 演算法在分散式系統中實現集體拒絕的示例。

  • 每個程序都有一個唯一的 ID,並根據其在投票環中的位置分配到一個組。

  • 每個組都是投票環中程序的一個子集,並且組必須彼此相交。

  • 一個程序只有在獲得其組中所有程序以及所有已獲得許可的程序的許可後才能授予訪問許可權。

  • 要進入其臨界區,一個程序必須請求其組中所有程序的許可。

  • 一個程序只能請求當前不在其臨界區的程序的許可。

  • 如果一個程序在其臨界區中,則它暫時離開投票環以防止其他程序請求其許可。

  • 如果一個程序從其組中的所有程序獲得了許可,則它可以授予訪問共享資源的許可。

  • 如果一個程序接收到來自其組之外的另一個程序的請求,則它將該請求轉發到其組中尚未授予許可的程序。

  • 如果一個程序從其組中的所有程序獲得了許可,則它向請求程序授予許可。

  • 如果一個程序離開其臨界區,則它向所有已請求許可的程序傳送訊息,通知它們已授予許可。

  • 如果一個程序在等待許可時收到許可訊息,則它將該程序新增到其已授予許可的程序列表中。

  • 如果一個程序從其組中的所有程序以及所有已請求許可的程序獲得了許可,則它進入其臨界區。

Maekawa 演算法與分散式系統中其他互斥演算法的比較

Maekawa 開發的互斥投票演算法旨在在分散式系統中高效且容錯。由於使用了組,與 Ricart-Agrawala 和 Lamport 演算法等其他互斥演算法相比,Maekawa 演算法具有較低的通訊複雜度,並且需要較少的通訊來提供對共享資源的訪問。Maekawa 演算法能夠有效地容忍節點故障和網路分割槽,因此適合用於大規模分散式系統。但是,由於必須仔細選擇組大小並保證組的交集,因此 Maekawa 演算法具有更高的設定開銷,並且實施起來更復雜。

結論

Maekawa 演算法是一種眾所周知的互斥演算法,為分散式系統提供了一種可靠且有效的解決方案。Maekawa 演算法利用基於投票的機制和組來減少提供對共享資源訪問所需的通訊次數。這導致更低的延遲和更高的效能。Maekawa 演算法能夠處理節點故障和網路分割槽,因此適合用於大規模分散式系統。但是,由於必須仔細選擇組大小並保證組的交集,因此 Maekawa 演算法具有更高的設定複雜性,並且在實際應用中可能更難使用。儘管如此,由於其效率和容錯能力,Maekawa 演算法仍然是分散式系統中互斥的首選方法之一。

更新於: 2023年5月4日

2K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.