使用2F + 1處理器時,Paxos算法可以容忍高達F故障。據我所知,這種算法只適用於固定數量的處理器。是否有可能在動態環境中使用此算法,其中可以動態添加和刪除節點?在動態環境中使用Paxos
回答
是。 Gryadka是支持500行中動態重新配置的JavaScript Paxos實現。它基於Vertical Paxos和Raft的想法。
如果您擁有絕對最大數量的節點,那麼它應該仍然有效。 但是,如果您的動態節點數量爲6,您的最大數量爲11,那麼您將會遇到這種情況,因此如果1個節點失敗,那麼您運氣不佳(缺省情況下,不存在的節點會失敗)。如果您刪除並添加節點,您可以將刪除的節點的狀態恢復到您添加的節點,以避免它被視爲失敗。
是的,這是可能的,甚至有一些文件。從我記得我讀了一點如何做到這裏描述http://research.microsoft.com/pubs/64634/web-dsn-submission.pdf希望這就是你問的。尋找「動態paxos」。
動態paxos是有點scarry :) – Lazin
@Lazin居然不是!我使用動態Paxos,它非常穩定。這個想法是你有兩臺狀態機。首先是你通常想到的:Paxos州保持同步。另一個狀態機是節點的成員列表。 Paxos的任何實例都必須使用成員狀態機的快照。 –
@MichaelDeardeuff當您引入Multi-paxos時,Dynamic Paxos會變得有點可怕。將它與單個實例Paxos一起使用時,這是相當簡單的。 –
可能停止的Paxos紙是有點更容易理解並允許安全地重新配置(除了和節點的減法):http://research.microsoft.com/apps/pubs/default.aspx?id=101826
- 1. 在動態環境中使用Apache Kafka
- 2. 在靜態環境中使用log4php
- 3. 在Hibernate環境中動態創建表
- 4. 在動態環境中的jquery ui
- 5. 動態環境變量在.htaccess中
- 6. 在動態環境中只讀applet
- 7. 使用SQL在動態環境中尋呼排行榜查詢
- 8. Sinatra動態配置環境
- 9. (高動態)Postman中的環境變量
- 10. Linux中的動態環境變量?
- 11. UITableView在動態環境中創建靜態單元格
- 12. 在Struts2應用程序中動態添加語言環境
- 13. 如何在多線程環境中使用靜態
- 14. 在構建時在Docker中創建動態環境變量
- 15. 如何在node-js環境中使用phantomjs進行動態頁面抓取?
- 16. 我們如何在動態環境中使用基於角色的安全性?
- 17. 在使用環境變量
- 18. 如何在Ruby環境中使用HTML環境中的嵌套上升循環?
- 19. 由環境動態加載SpringBean var
- 20. 動態切換語言環境?
- 21. Laravel如何動態重載環境值
- 22. 批量動態嵌套環境變量
- 23. Ansible設置動態環境變量
- 24. 如何動態更改環境值
- 25. 緩存動態數據在IIS7環境中不是真正動態的
- 26. 如何在Windows環境中使用Mahout?
- 27. 在csproj中使用appdata環境變量
- 28. 如何在sneakernet環境中使用Git?
- 29. 在CircleCI中使用環境變量
- 30. 如何在OSGI環境中使用Spring?
我們需要將Paxos擴展爲集羣成員的信念是非常不穩固的。以下@Mateusz的回答中討論的Microsoft動態Paxos的紙質版本就足夠了。 Paxos的所有實際實現我都知道以一致的方式更新分佈式狀態。該共享狀態可以簡單地同時是應用程序狀態和集羣成員資格。因此,不需要閱讀,理解和實施新方法,所有實際的影響都可以使用「主流Paxos」和「吃自己的狗糧」來處理羣集成員變化。 Paxos就是爲此而設計的。 – simbo1905