混淆了zookeeper中的事务日志

时间:2014-02-16 08:55:38

标签: apache-zookeeper

我正在研究动物园管理员,所以我读了一篇文章“一个简单的完全有序的广播协议”。我真的不明白以下一句话:

“ZooKeeper使用内存数据库并在磁盘上存储事务日志和定期快照.Zab的事务日志兼作数据库预写事务日志,因此事务只会被写入磁盘一次。”

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:9)

Zookeeper需要将事务写入磁盘,否则如果重新启动zookeeper,它将忘记它听到的任何transasctions。 zookeeper写入磁盘的方式是,在zookeeper响应事务之前,它会将事务附加到事务日志文件中。当事务日志文件达到特定大小时,将创建一个新的事务日志文件。

写入事务日志文件本身并不高效,因为在启动时,zookeeper必须重放它曾经处理的每个事务。因此,zookeeper会定期将内存数据库当前状态的快照写入文件。然后在启动时,zookeeper只需加载快照,以及自创建快照以来的任何事务日志。