{{ it.name }}
{{ it.text }}
一、ClickHouse-Keeper 是什么:
ClickHouse 社区在 21.8 版本中开始引入了 ClickHouse-Keeper ,直至 ClickHouse 21.12 发布公告提到 ClickHouse Keeper 功能基本完成。ClickHouse Keeper 是 ZooKeeper 的替代品,与 ZooKeeper 不同,ClickHouse Keeper 是用 C++ 编写的,并使用 RAFT 算法实现,该算法允许对读写具有线性化能力。
二、Zookeeper 与 ClickHouse-Keeper 一些场景对比
为什么要引入 ClickHouse-Keeper 呢?主要是 ClickHouse 使用 Zookeeper 有着众多痛点:
使用java开发
运维不便
要求独立部署
zxid overflow 问题
snapshot 和 log 没有经过压缩
不支持读的线性一致性
而 ClickHouse-Keeper 存在着以下优点:
三、配置方式
相较之前的集群配置,没有太大区别,而 ClickHouse-Keeper 仅当<keeper_server>标签存在于配置中时才会运行。
四、参数说明
<keeper_server>.<coordination_settings>部分
operation_timeout_ms:单个客户端操作超时配置
min_session_timeout_ms:客户端会话最小超时
session_timeout_ms:客户端会话的最大超时
dead_session_check_period_ms:检查过期会话并将其删除的频率
heart_beat_interval_ms:leader 向 follower 发送心跳的频率
election_timeout_lower_bound_ms:如果 follower 在此时间间隔内没有收到 leader 的心跳,则可以发起 leader 选举
rotate_log_storage_interval:在单个文件中存储多少日志记录
reserved_log_items:压缩前要存储多少日志记录
snapshot_distance:创建快照的频率
snapshots_to_keep:快照保留份数
max_requests_batch_size:在将请求发送到 RAFT 之前,请求中的最大批处理请求大小
raft_logs_level:raft日志记录级别
auto_forwarding:允许将follower的写请求转发给leader
shutdown_timeout:等待完成内部连接并关闭的时间
<keeper_server>.<raft_configuration>部分
Id:集群的每个节点ID
Hostname:服务器主机名
Port:服务器监听端口
五、如何迁移 Zookeeper 至ClicHouse-Keeper