最近我在學習Paxos
,直到現在我已經對它是如何工作有一個基本的瞭解。但任何人都可以解釋Paxos如何處理丟包和新節點加入?如果提供了一個簡單的例子可能會更好。Paxos如何處理丟包和新節點加入?
1
A
回答
2
經典的Paxos算法沒有「新節點加入」的概念。一些Paoxs變體,比如「垂直Paxos」,但是經典算法要求在運行算法之前靜態定義所有節點。關於數據包丟失,Paxos使用一個非常簡單的無限循環:「嘗試一輪算法,如果有任何錯誤,請嘗試另一輪。」因此,如果在第一次嘗試達到解決方案時丟失太多數據包(可通過等待答覆時的簡單超時檢測到),則可嘗試第二輪。如果該輪的超時過期,請重試,依此類推。
究竟如何檢測和處理數據包丟失是Paxos算法未定義的問題。這是一個實現特定的細節。對於生產環境來說,這實際上是一件好事,因爲如何處理它可能會對基於Paxos的系統產生相當大的性能影響。
0
關於丟包的Paxos使用有關網絡的下一個假設:
消息可能會丟失,重新排序或複製。
這是通過法定人數解決。所有接受者中至少有X個必須接受一個值,以便系統接受它。這也解決了節點失敗時的問題。
關於新節點加入,Paxos不關注節點如何檢測其他節點。這是其他算法解決的問題。
他們自動地知道所有的節點和每個人的角色
如果你想要,生產代碼實現,你可以用Zookeeper解決這個新的節點檢測。
0
正如其他答案中指出的那樣,消息丟失或消息重新排序是由算法處理的:它被設計爲準確處理這些情況。
新節點加入是「集羣成員變化」的問題。有一種常見的誤解,認爲集羣成員變化不被Paxos覆蓋;但在最後一段的2001年論文Paxos Made Simple中描述了它們。在這blog post我討論它。有一個新節點在加入集羣時如何獲得所有狀態的副本的問題。這在this answer中討論。
相關問題
- 1. 處理XmlTextWriter和空節點
- 2. Umbraco丟失管理節點
- 3. paxos如何與2個節點一起工作?
- 4. JTidy節點處理
- 5. 處理樹節點
- 6. 如何用分號處理TreeView節點;
- 7. 如何處理JavaFX節點大小?
- 8. 如何在節點js中處理oracle.sql.ARRAY?
- 9. 節點請求如何處理會話
- 10. 處理重複插入節點JS
- 11. 無法在Azure批處理節點上加載R軟件包
- 12. 在節點中如何管理npm包?
- 13. 如何在mssql節點模塊中處理SQL注入
- 14. Kotlin - 如何導入節點包?
- 15. 節點mysql2和預處理語句
- 16. Drupal 6預處理塊和節點
- 17. 節點異步和異常處理
- 18. 如何使用python添加處理指令節點?
- 19. 節點請求,cheerio - 如何處理額外的ajax加載
- 20. CSV加載和更新現有節點/創建新節點
- 21. 的Paxos階段2a消息丟失
- 22. 批處理和節點:如何運行腳本隱形?
- 23. 如何處理多個節點版本和多個NVM項目?
- 24. 當前如何處理Gulp中的節點和涼亭庫?
- 25. 如何跟蹤和處理節點中的事件
- 26. 批處理插入節點和關係neo4jclient
- 27. 如果包含最近的模式,處理「向下」mnesia節點?
- 28. 如何用Python 2.6和minidom添加xml樣式表處理指令節點?
- 29. Jenkins處理節點中斷
- 30. 處理節點逃脫XML
有一種常見的誤解,即羣集成員資格更改未被Paxos覆蓋;但在最後一段2001年的論文Paxos Made Simple中對它們進行了描述。 – simbo1905