zookeeper 中的节点名称限制

Node name limitations in zookeeper

有没有关于zookeeper节点名称限制的文档?我在官方文档中找不到任何关于它的内容。我特别想知道:

  1. 允许使用哪些字符?
  2. 我可以使用 UTF-8 中的任何字符(例如日文字符)吗?
  3. 节点名称 characters/bytes(如果有)的最大限制是多少?

对于 1, 2: Any unicode character can be used in a path subject to the following constraints:

  • 空字符 (\u0000) 不能是路径名的一部分。 (这会导致 C 绑定出现问题。)

  • 以下字符无法使用,因为它们显示效果不佳,或呈现方式混乱:\u0001 - \u001F\u007F - \u009F.

  • 不允许使用以下字符: \ud800 - uF8FF, \uFFF0 - uFFFF.

  • .字符可以用作另一个名称的一部分,但...不能单独用于指示路径上的节点,因为 ZooKeeper 不使用相对路径。以下内容无效:/a/b/./c/a/b/../c.

  • 令牌zookeeper已保留。

PS: 源代码: PathUtils.validatePath()

对于3:其实ZK本身对name的长度是没有限制的,但是建议不要使用太大的name(比如ZK存储整个数据)在内存中以提高效率)