ZooKeeper 的 value 上限约 1 MiB,但这不代表可以放心用到上限。这篇量不同大小的 value 的读写延迟、频繁改大 value 对事务日志的影响,以及大 value 配上 watch 的放大效应。
大小 写 ms 读 ms 写吞吐 MiB/s
1 KiB 3.01 0.29 0.3
10 KiB 2.97 0.27 3.3
100 KiB 2.96 0.27 33.0
500 KiB 3.98 0.52 122.7
1000 KiB 4.50 0.73 216.8这是单机、本机回环的数字,真实网络下大 value 的传输时间会更显著(本文没有测)。
1000 次 set(每次 100 KiB)用时 3.3 s;事务日志实际占盘增长 143.2 MiB(≈ 98 MiB 的写入量);当前只有 1 个这样的 znode,内存里只占 100 KiB
set 1000 KiB → 通知到达 7.2 ms;通知后读取这 1000 KiB 用 1.9 ms