【发布时间】:2014-03-15 13:45:29
【问题描述】:
我正在研究zookeeper,所以我阅读了论文“一个简单的完全有序的广播协议”。而且我不太明白下面这句话:
“ZooKeeper 使用内存数据库并将事务日志和定期快照存储在磁盘上。Zab 的事务日志兼作数据库预写事务日志,因此事务只会被写入磁盘一次。”
有谁能给我解释一下吗?
【问题讨论】:
标签: apache-zookeeper
我正在研究zookeeper,所以我阅读了论文“一个简单的完全有序的广播协议”。而且我不太明白下面这句话:
“ZooKeeper 使用内存数据库并将事务日志和定期快照存储在磁盘上。Zab 的事务日志兼作数据库预写事务日志,因此事务只会被写入磁盘一次。”
有谁能给我解释一下吗?
【问题讨论】:
标签: apache-zookeeper
Zookeeper 需要将事务写入磁盘,否则如果你重新启动 Zookeeper,它会忘记它所听到的任何事务。 zookeeper 写入磁盘的方式是,zookeeper 在响应事务之前,会将事务追加到事务日志文件中。当事务日志文件达到一定大小时,会创建一个新的事务日志文件。
写入事务日志文件本身效率不高,因为 Zookeeper 在启动时必须重播它曾经处理过的每个事务。因此,zookeeper 会定期将其内存数据库当前状态的快照写入文件。然后在启动时,zookeeper 只需要加载快照,以及自快照创建以来的所有事务日志。
【讨论】: