ACL 继承与递归授权实测:ACL 不继承(受保护的父节点下新建的子节点是 world:anyone,匿名按完整路径能读);创建 / 删除看父节点 ACL;3906 个节点的子树递归 set_acls 用 13.2 s;加固之后新建的子节点又是 world。
权限变更与凭据轮换实测:改 ACL 对在线会话立即生效(旧口令的会话马上 NoAuth);客户端重连后仍用旧口令被拒;平滑轮换要先让 ACL 同时含新旧 id、等客户端切换后再删旧的;连接内可以 add_auth 追加新身份。
TLS 客户端连接实测:secureClientPort + Netty + PKCS12 密钥库;明文客户端连不上 TLS 端口;不信任 CA 或主机名不匹配握手失败;开了 TLS 若不关明文端口仍可明文访问;TLS 与明文同步写延迟 3.01 vs 3.03 ms。
mTLS 双向认证实测:ssl.clientAuth=need 时无证书、自签名冒名证书都握手失败;证书 DN 成为 x509 身份(whoami: x509: CN=client1);x509 ACL 按证书授权(client2 被拒);clientAuth=want 时无证书的客户端仍可匿名连接。
SASL/Kerberos 认证实测:DIGEST-MD5(需关闭 3.9 默认的 fips-mode)与 Kerberos(本机 KDC,zookeeper/localhost 与 zkclient 主体、keytab)都跑通;sasl ACL 按认证身份授权;enforce.auth 可强制必须 SASL 认证。
ZooKeeper 数据加密边界实测:落盘的事务日志与快照是明文;客户端明文端口抓包能看到机密、TLS 端口抓不到;节点间 quorum 流量默认明文、sslQuorum=true 后加密;应用层加密能让磁盘上没有明文。
用 kazoo 在真实 ZooKeeper 上量分布式锁:无锁 35/200、有锁 200/200;锁就是临时顺序节点、各监听前一个,30 人排队每次释放 8 包 vs 朴素 29 包;持有者崩溃 2.9 s 后锁转移;冻结的持有者醒来仍以为自己持有锁。
5 个 kazoo Election 候选进程的 Leader 选举实测:同一时刻只有一个 leader;kill -9 leader 4 次,空窗期 3.52, 3.04, 3.05, 3.03 s(中位 3.04 s ≈ 会话超时),全程无两个 leader;正常让位只有 0.01 s。
用 ZooKeeper 做 Master/Worker:临时节点登记 worker、multi 原子分配任务;kill -9 一个 worker 3.6 s 后任务被重新分配,500 个任务无重复执行、全部完成;kill -9 master 后备用 master 3.3 s 接管并读回状态继续。
kazoo 的 Queue / LockingQueue 实测:节点名 entry-优先级-序号;普通 Queue 消费者崩溃丢 1 条(199/200 完成);LockingQueue 崩溃后消息在会话过期后被重取,30 条全确认但有 1 条被取 2 次;吞吐 308 vs 143 条/s。
kazoo 的 Barrier 与 DoubleBarrier 实测:删除 /bar 后 10 个等待者在 13 ms 内全部放行;DoubleBarrier 入口一起进(0 ms 差)、出口一起出(2 ms 差),可重复使用;人数不齐永远等;参与者 kill -9 后其余的 leave 等到会话过期(3.6 s)。
用 ZooKeeper 节点实现最小两阶段提交:全 yes 的 20 个事务中位 52 ms 完成;一个 no 全体 abort;参与者崩溃 3.1 s 后超时 abort;协调者在写决定前崩溃时参与者阻塞,读回投票的恢复进程 0.1 s 内写 commit。