2015-07-21 72 views
0

在此鏈接Official Zookeeper doc中,我發現引用不明確。Apache Zookeeper設置的模糊文檔

ZooKeeper將其數據存儲在數據目錄及其事務日誌中的事務日誌目錄中。默認情況下,這兩個目錄是相同的。服務器可以(也應該)配置爲將事務日誌文件存儲在與數據文件不同的目錄中。當事務日誌駐留在專用日誌設備上時,吞吐量增加和等待時間會減少。

它說事務日誌文件應該將事務日誌存儲在一個單獨的目錄中。那麼它說專用設備是最佳的?爲什麼默認將數據目錄文件和事務日誌文件存儲在同一位置?我相信我很困惑,因爲我可能不明白他們的「目錄」是什麼意思。當我聽到目錄時,我想到了文件夾。當他們說目錄時,它們是指硬件存儲設備嗎?如果這些文件存儲在同一設備但不同文件夾中,我不希望吞吐量增加,延遲時間減少。如果文件存儲在不同的設備上,我預計吞吐量會增加,延遲時間會減少。

我是否正確解釋他們的文檔?簡單地將事務日誌和數據文件存儲在單獨的文件夾中將不會提高性能。他們僅僅意味着如果他們存儲在不同的硬件存儲設備上,這些收益是否會正確?

回答

1

你是對的。重點是將事務日誌記錄在專用設備上,因爲ZooKeeper需要fsync到該磁盤。這部分的任何延遲都可能導致嚴重問題。

從ZK配置角度來看,單獨的目錄只是使這成爲可能的先決條件。

+0

你能否詳細說明當fsync發生時會發生什麼?我發現了這個fsync的解釋,http://linux.die.net/man/2/fsync,但我很好奇這個問題會是什麼樣子。我會碰撞嗎?有時候表現糟糕?我只是不知道該期待什麼。 – smuggledPancakes

+1

Fsync是一個非常昂貴的操作 - 確保將數據刷新到磁盤。如果別的東西正在使用同一個磁盤,則fsync可能需要很長時間。由於ZooKeeper實例在確認寫入之前需要確保事務寫入磁盤,這使得fsync成爲ZK寫入關鍵路徑的一部分。有一個選項可以禁用它(forceSync = false),在這種情況下,zk不會等待fsync。但是,這可能會制約ZK提供的一些核心擔保。 – igorbel

+0

通過打破保證,這是否意味着恢復狀態的耐久性和能力?在我的應用程序中,我更擔心性能和崩潰是可以容忍的,因爲沒有「丟失的數據」,我們只是在重新啓動時重新計算結果。這聽起來像我應該禁用forceSync在我的情況。這是我的天真假設嗎?是否還有其他與禁用forceSync相關的問題? – smuggledPancakes