为什么推荐使用 ClickHouse Keeper 而不是 ZooKeeper?
·2 分钟阅读
ClickHouse Keeper 通过减少磁盘空间使用、更快的恢复和更少的内存消耗等功能改进了 ZooKeeper,为 ClickHouse 集群提供了更好的性能。
问题
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 中,每 2B 事务强制重启) - 由于使用了更好的分布式共识协议,网络分区后恢复更快
- 对于相同的数据量,它使用更少的内存
- 它更容易设置,并且不需要指定 JVM 堆大小或自定义垃圾回收实现
- 协议中的一些自定义命令可以在
ReplicatedMergeTree
表中实现更快的操作 - Jepsen 测试的更大覆盖范围
此外,ClickHouse 支持部门观察到,在使用 clickhouse-keeper
而不是 ZooKeeper 的站点中,集群问题大幅减少。
查看 Keeper 文档页面,了解有关如何配置和运行 ClickHouse Keeper 的更多详细信息。