2014-02-16 41 views
6

我正在學習zookeeper,所以我讀了論文「一個簡單的完全有序的廣播協議」。我真的不明白以下這句話:關於zookeeper中的交易日誌感到困惑

「ZooKeeper使用內存數據庫並將事務日誌和定期快照存儲在磁盤上。Zab的事務日誌兼作數據庫預寫事務日誌,因此事務只會是寫入磁盤一次。「

有人能解釋給我嗎?

回答

8

Zookeeper需要向磁盤寫入事務,否則如果你重新啓動zookeeper,它會忘記它聽到的任何transasctions。 zookeeper寫入磁盤的方式是,在zookeeper響應事務之前,它會將事務追加到事務日誌文件中。當事務日誌文件達到特定大小時,將創建一個新的事務日誌文件。

寫入事務日誌文件本身效率不高,因爲在啓動時,zookeeper必須重播它曾經處理的每個事務。所以週期性地,zookeeper會將其內存數據庫當前狀態的快照寫入文件。然後,在啓動時,zookeeper只需加載快照以及創建快照後的所有事務日誌。

+1

如果zookeeper在事務響應事務之前將事務追加到事務日誌文件中,是不是很慢?因爲寫入磁盤可能需要一段時間。 – Snail

+2

最好的做法是將磁盤放到事務日誌中,並且總是追加到轉換文件中,這樣磁盤頭幾乎總是位於正確的位置,寫入速度相當快。 Zookeeper可以每秒處理數千次事務。 – sbridges