ZooKeeper每个节点的最大子节点数

问题描述 投票:5回答:2

我使用ZooKeeper来存储分层数据。在一次测试中,我在一个节点下存储了超过300K的孩子。当我尝试检索所有子项时,由于ConnectionLossException,ZK客户端崩溃了。

重新构建数据可以解决问题(例如,通过分组,因为它减少了每个节点的子节点数)。

但我很想知道以下问题的答案:

  1. ZK对可以存储在一个节点上的数据有限制(不超过1MB),每个节点的子节点数是否有类似的限制?
  2. 增加Java堆大小是否允许ZK扩展每个节点的子节点数?
  3. 无论如何要控制这些孩子被送回客户的方式?如果孩子们被分批发送,那么网络“打嗝”可能会破坏消息并导致失败。

谢谢!

java apache-zookeeper
2个回答
1
投票

通过zookeeper来源,子计数没有明确的限制。但childCountint类型,最大应该是Integer#MAX_VALUE


0
投票

对孩子的数量没有明确的限制。

但是,响应getChildren可以从服务器发回的数据包大小有限,这有效地最终成为限制。这是使用系统属性jute.maxbuffer控制的,默认为4MB(我认为你可以获得大约200,000个znode,尽管它还取决于znode名称的长度)。

查看this link进行全面讨论。

© www.soinside.com 2019 - 2024. All rights reserved.