2011-08-23 61 views
9

使用2F + 1處理器時,Paxos算法可以容忍高達F故障。據我所知,這種算法只適用於固定數量的處理器。是否有可能在動態環境中使用此算法,其中可以動態添加和刪除節點?在動態環境中使用Paxos

回答

-1

是。 Gryadka是支持500行中動態重新配置的JavaScript Paxos實現。它基於Vertical Paxos和Raft的想法。

+0

我們需要將Paxos擴展爲集羣成員的信念是非常不穩固的。以下@Mateusz的回答中討論的Microsoft動態Paxos的紙質版本就足夠了。 Paxos的所有實際實現我都知道以一致的方式更新分佈式狀態。該共享狀態可以簡單地同時是應用程序狀態和集羣成員資格。因此,不需要閱讀,理解和實施新方法,所有實際的影響都可以使用「主流Paxos」和「吃自己的狗糧」來處理羣集成員變化。 Paxos就是爲此而設計的。 – simbo1905

1

如果您擁有絕對最大數量的節點,那麼它應該仍然有效。 但是,如果您的動態節點數量爲6,您的最大數量爲11,那麼您將會遇到這種情況,因此如果1個節點失敗,那麼您運氣不佳(缺省情況下,不存在的節點會失敗)。如果您刪除並添加節點,您可以將刪除的節點的狀態恢復到您添加的節點,以避免它被視爲失敗。

5

是的,這是可能的,甚至有一些文件。從我記得我讀了一點如何做到這裏描述http://research.microsoft.com/pubs/64634/web-dsn-submission.pdf希望這就是你問的。尋找「動態paxos」。

+0

動態paxos是有點scarry :) – Lazin

+0

@Lazin居然不是!我使用動態Paxos,它非常穩定。這個想法是你有兩臺狀態機。首先是你通常想到的:Paxos州保持同步。另一個狀態機是節點的成員列表。 Paxos的任何實例都必須使用成員狀態機的快照。 –

+0

@MichaelDeardeuff當您引入Multi-paxos時,Dynamic Paxos會變得有點可怕。將它與單個實例Paxos一起使用時,這是相當簡單的。 –