2011-01-28 141 views
0

你好我是mohamad碩士學位的學生 我想問一個關於Zookeeper的問題。問阿帕奇動物園管理員

我讀到zookeeper中的寫入操作首先與連接到服務器的服務器聯繫,然後領導者投票,當他獲得超過一半的服務器時,他回覆服務器連接到這個cliend以便繼續這個操作。

但我的問題是,什麼是投票procccess?我的意思是他們爲什麼投票? ,第二個問題是他們如何投票發送消息,或者他們如何通知領導者。第三個問題是他們爲什麼需要投票,我讀到有一個版本號碼來檢查更新數據,爲什麼他們需要投票?

請任何人都可以儘快回覆我。

在此先感謝

回答

1

這是最快我可以。您需要獲得Nancy Lynch編寫的「分佈式算法」一書,以更好地理解這些系統的工作原理。

背景 - 算法範式被稱爲Paxos,雖然Zookeeper有自己的實現,這有點不同。 Zookeeper以兩階段提交提交數據。使用原子廣播協議通過FIFO通道進行所有通信以保持排序。

什麼是投票流程 - 投票流程是爲了找到領導而不是兩個分階段提交。沒有選票沒有。 Zxid最高的節點是領導者。

投票是領導選舉。兩階段提交用於寫入操作。欲瞭解更多信息,請查看動物園管理員文檔,更重要的是瞭解distal algos書籍,以瞭解爲什麼這些事情的行爲方式是他們:)。

--Sai

+0

其實在兩階段提交中也有投票。追隨者「投票」提交。如果有足夠的追隨者「投」了提交,那麼主人可以提交寫入。在這種情況下,可以保證在每個仲裁(超過一半的服務器)中至少有一臺服務器已經看到提交。 – 2011-01-28 14:19:59

1

動物園管理員如下一個簡單的客戶端 - 服務器模型,其中客戶端節點(即,機器),使使用該服務,和服務器是提供服務的節點。 ZooKeeper服務器的集合形成一個ZooKeeper集合。在任何時候,一個ZooKeeper客戶端連接到一個ZooKeeper服務器。每個ZooKeeper服務器可以同時處理大量的客戶端連接。每個客戶端週期性地向它連接的ZooKeeper服務器發送ping命令,讓它知道它是活着的並且已連接。有問題的ZooKeeper服務器會響應ping的確認,表明服務器也處於活動狀態。當客戶端在指定的時間內沒有收到服務器的確認信息時,客戶端連接到集成中的另一臺服務器,客戶端會話將透明地傳輸到新的ZooKeeper服務器。 Check this瞭解動物園管理員架構

當客戶端請求讀取特定znode的內容時,讀取發生在客戶端連接到的服務器上。因此,由於只涉及集合中的一臺服務器,所以讀取快速且可擴展。但是,要成功完成寫入操作,ZooKeeper集合的絕大多數節點必須可用。當ZooKeeper服務啓動時,來自整體的一個節點被選爲領導者。當客戶端發出寫請求時,連接的服務器將請求傳遞給領導。然後該領導者向集合的所有節點發出相同的寫入請求。如果絕大多數節點(也稱爲仲裁)成功響應此寫入請求,則認爲寫入請求已成功。然後成功的返回代碼返回給發起寫入請求的客戶端。如果法團的法定節點在集體中不可用,則ZooKeeper服務不起作用。 Check this瞭解寫操作的投票過程

爲了服務的可靠性和可擴展性,它被複制到一組機器上。 ZooKeeper使用着名的Paxos算法的一個版本來保持副本的一致性。

動物園管理員給出以下稠度從客戶端保證

順序一致性更新將在它們被髮送的順序來應用。

原子性更新成功或失敗 - 沒有部分結果。

單個系統映像無論服務器連接到哪個服務器,客戶端都會看到相同的服務視圖。

可靠性一旦應用更新,它將一直持續到此時間,直到客戶機覆蓋更新爲止。這個保證有兩個推論:

及時性該系統的客戶端視圖保證在一定的時間範圍內(大約幾十秒)是最新的。客戶可以在此範圍內看到任何系統更改,或者客戶端將檢測到服務中斷。

以下是回答您的問題

問題1:投票是寫操作是否應該被提交或不。

問題2:在動物園管理員合奏客戶端和服務器之間的通信發生在使用ZAB protocol

問題3通過消息交換的TCP連接:對於服務是可靠的和容錯,數據必須複製到服務器的法定人數。