Zookeeper临时节点是否写入磁盘?

Jef*_*man 5 apache-zookeeper

Zookeeper临时节点是否写入磁盘?

我知道普通的 Zookeeper 节点会在 Zookeeper 确认对客户端的写入之前写入磁盘。

但是,临时节点仅在客户端会话期间持续存在,因此如果 Zookeeper 节点全部崩溃,那么根据定义,客户端会话就会中断。因此不需要写入磁盘,因为当整体重新启动时不会重新创建临时节点。所以从理论上讲,临时节点似乎只需要存储在内存中。

这是如何实施的?

Fae*_*rox 3

我自己遇到了这个问题,并注意到它已经在Zookeeper 邮件列表上得到了回答,我将其发布在这里供任何发现这个问题的人使用。

简而言之,是的,临时节点确实被写入磁盘。因此,即使整个 Zookeeper 整体关闭,客户端会话也可以持续存在。引用Patrick Hunt 在邮件列表中的回答(强调我的):

临时 znode 的处理方式与持久 znode 相同,因为节点的法定数量需要同意任何更改。因此,znode 被写入事务日志。

当客户端显式关闭其会话或 ZK 仲裁领导者决定会话已过期(基于协商的会话超时)时,客户端会话就会结束。只有当领导者处于活动状态时,会话才会过期(或关闭)。当您关闭 ensemble 时,会话将保留。例如,如果您将一个 ensemble 关闭一个小时然后重新启动,会话仍将处于活动状态。当新领导人当选时,时钟将“重置”。如果客户端会话仍处于活动状态,则会话将继续,任何临时 znode 仍将存在。