我使用ZooKeeper来存储分层数据。在一次测试中,我在一个节点下存储了超过300K的孩子。当我尝试检索所有子项时,由于ConnectionLossException,ZK客户端崩溃了。
重新构建数据可以解决问题(例如,通过分组,因为它减少了每个节点的子节点数)。
但我很想知道以下问题的答案:
谢谢!
通过zookeeper来源,子计数没有明确的限制。但childCount
是int
类型,最大应该是Integer#MAX_VALUE
。
对孩子的数量没有明确的限制。
但是,响应getChildren
可以从服务器发回的数据包大小有限,这有效地最终成为限制。这是使用系统属性jute.maxbuffer
控制的,默认为4MB(我认为你可以获得大约200,000个znode,尽管它还取决于znode名称的长度)。
查看this link进行全面讨论。