zookeeper 中的节点名称限制
Node name limitations in zookeeper
有没有关于zookeeper节点名称限制的文档?我在官方文档中找不到任何关于它的内容。我特别想知道:
- 允许使用哪些字符?
- 我可以使用 UTF-8 中的任何字符(例如日文字符)吗?
- 节点名称 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存储整个数据)在内存中以提高效率)
有没有关于zookeeper节点名称限制的文档?我在官方文档中找不到任何关于它的内容。我特别想知道:
- 允许使用哪些字符?
- 我可以使用 UTF-8 中的任何字符(例如日文字符)吗?
- 节点名称 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存储整个数据)在内存中以提高效率)