问题
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 文档页面。