Skip to main content

问题

ClickHouse Keeper 为数据复制和分布式 DDL 查询的执行提供协调机制。ClickHouse Keeper 与 ZooKeeper 兼容,但你可能不太清楚为什么应使用 ClickHouse Keeper 而不是 ZooKeeper。本文将介绍 Keeper 的一些优势。

答案

ClickHouse Cloud 在多租户环境中大规模使用 clickhouse-keeper,为数千个服务提供支持。我们设计并构建 Keeper,是为了摆脱对基于 Java 的 ZooKeeper 实现的依赖。ClickHouse Keeper 解决了 ZooKeeper 的许多已知缺陷,并进一步改进了以下方面:
  • 由于采用了更高效的压缩,快照和日志占用的磁盘空间大幅减少
  • 默认的数据包和节点数据大小没有限制 (ZooKeeper 中为 1 MB)
  • 不存在 zxid 溢出问题 (ZooKeeper 中每处理 20 亿个事务就会被迫重启一次)
  • 由于采用了更优的分布式共识协议,在发生网络分区后恢复更快
  • 在相同数据量下,内存占用更少
  • 更容易设置,且无需指定 JVM 堆大小或自定义垃圾回收实现
  • 协议中的一些自定义命令可让 ReplicatedMergeTree 表的操作更快
  • Jepsen 测试覆盖范围更广
此外,ClickHouse Support 还观察到:与使用 ZooKeeper 的站点相比,使用 clickhouse-keeper 的站点集群问题明显减少。 更多关于如何配置和运行 ClickHouse Keeper 的信息,请参阅 Keeper 文档页面
最后修改于 2026年7月3日