有人能給我一個關於在分佈式數據庫中如何使用Paxos算法的真實例子嗎?我已經閱讀了許多關於Paxos的文章,解釋了算法,但沒有一篇真正用實際例子解釋。Paxos的真實世界示例
一個簡單的例子可能是一個銀行應用程序,其賬戶通過多個會話進行修改(即在櫃員存款,借記操作等)。 Paxos曾經決定首先進行哪項操作?另外,Paxos協議的多個實例意味着什麼?這是怎麼使用的?基本上,我試圖通過一個具體的例子而不是抽象的術語來理解這一切。
有人能給我一個關於在分佈式數據庫中如何使用Paxos算法的真實例子嗎?我已經閱讀了許多關於Paxos的文章,解釋了算法,但沒有一篇真正用實際例子解釋。Paxos的真實世界示例
一個簡單的例子可能是一個銀行應用程序,其賬戶通過多個會話進行修改(即在櫃員存款,借記操作等)。 Paxos曾經決定首先進行哪項操作?另外,Paxos協議的多個實例意味着什麼?這是怎麼使用的?基本上,我試圖通過一個具體的例子而不是抽象的術語來理解這一切。
例如,我們有MapReduce系統,其中master由3個主機組成。一個是主人,另一個是奴隸。選擇主程序使用Paxos算法。
還胖乎乎的谷歌大表使用的Paxos:The Chubby Lock Service for Loosely-Coupled Distributed Systems,Bigtable: A Distributed Storage System for Structured Data
的Clustrix數據庫是使用中的Paxos事務管理的分佈式數據庫。數據庫內部使用Paxos來協調消息並在分佈式系統中維護事務原子性。
執行交易時採取以下步驟提交:
這對於應用程序來說都是透明的,並且在數據庫內部實現。因此,對於您的銀行應用程序,所有應用程序級別都需要執行死鎖衝突的異常處理。實現大規模數據庫的另一個關鍵是併發性,這通常通過MVCC(多版本併發控制)來實現。
您示例中的關鍵點是,Paxos用於選舉主人,然後交易由主人調解。這也是谷歌使用Chubby的方式 - 選舉一名主人並記錄所有潛在主人需要知道的信息 - 但大量數據交易避免了Paxos。 – btilly