ClickHouse Keeper 源码解析

本文深入解析 ClickHouse Keeper 的源码,对比 Zookeeper,指出 Keeper 的优势,如更高的性能、读写一致性。分析了 Keeper 的架构、核心流程,包括 Nuraft 的关键配置及问题解决。Keeper 与 Zookeeper 客户端完全兼容,提供 Standalone 部署模式,简化运维。通过对 Keeper 的理解,为未来的 MetaServer 设计开发打下基础。
摘要由CSDN通过智能技术生成
内容框架:
1.背景
2.架构图
3.核心流程图梳理
4.内部代码流程梳理
5.Nuraft 关键配置排坑
6.结论
7.关于我们
8.Reference

背景

注:以下代码分析版本为开源版本 ClickHouse v21.8.10.19-lts。类图、顺序图未严格按照 UML 规范;为方便表意,函数名、函数参数等未严格按照原版代码。

HouseKeeper Vs Zookeeper

  • Zookeeper java 开发,有 JVM 痛点,执行效率不如 C++;Znode 数量太多容易出现性能问题,Full GC 比较多。
  • Zookeeper 运维复杂,需要独立部署组件,之前出问题比较多。HouseKeeper 部署形态比较多,可以 standalone 模式和集成模式。
  • Zookeeper ZXID overflow 问题,HouseKeeper 没有该问题。
  • HouseKeeper 读写性能均有提升,支持读写线性一致性,关于一致性的级别参见https://xzhu0027.gitbook.io/blog/misc/index/consistency-models-in-distributed-system
  • HouseKeeper 代码与 CK 统一,自主闭环可控。未来可扩展能力强,可以基于此做 MetaServer 的设计开发。主流的的 MetaServer 基本都是 Raft+rocksDB 的组合,可以借助该 codebase 进行开发。

Zookeeper Client

  • Zookeeper Client 完全不需要修改,HouseKeeper 完全适配 Zookeeper 的协议。
  • Zookeeper Client 由 CK 自己开发,放弃使用 libZookeeper(是一个bad smell代码库),CK 自己从 TCP 层进行封装遵循 Zookeeper Protocol。

架构图

  • 3种部署模式,推荐第一种 standalone 方式,可以选择小机型 SSD 磁盘,最大程度发挥 Keeper 的性能。

核心流程图梳理

类图关系

  • 入口 main 函数,主要做2件事:
    • 初始化 Poco::Net::TCPServer,定义处理请求的 KeeperTCPHandler。
    • 实例化 keeper_storage_dispatcher,并且调用 KeeperStorageDispatcher-&g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 点击House-keeper是一款专为ClickHouse设计的管理工具,它可以帮助用户快速安全地管理ClickHouse集群,提高工作效率。它能够实现节点添加、集群状态监控、性能指标查看、资源管理、数据备份和恢复等功能。 ### 回答2: ClickHouse-Keeper 是一个用于管理和监控 ClickHouse 的开源管理工具。它可以自动进行 ClickHouse 集群的日常任务管理和维护,提高 ClickHouse 集群的稳定性和可靠性。 ClickHouse-Keeper 的主要功能包括: 1. 定期任务管理:ClickHouse-Keeper 可以执行定期的任务,例如表的压缩、合并、优化等。通过自动化这些任务,可以减少手动干预的需求,提高集群的性能和效率。 2. 数据修复和一致性校验:ClickHouse-Keeper 可以监测和修复可能存在的数据损坏或不一致的情况。它可以检查数据的完整性,并尽可能地自动修复问题,确保数据的准确性和可用性。 3. 空间管理:ClickHouse-Keeper 可以监控和管理 ClickHouse 集群的存储空间。它可以自动处理数据过期、删除旧数据,并保持集群的稳定和高效。 4. 故障恢复和容错处理:ClickHouse-Keeper 可以监控 ClickHouse 节点的健康状态,并及时发现并处理可能的故障。它可以自动进行故障恢复和容错处理,以确保集群的可用性和稳定性。 总之,ClickHouse-Keeper 是一个强大的工具,可以简化 ClickHouse 集群的管理和维护工作。它提供了自动化的任务管理、数据修复、空间管理和容错处理等功能,帮助用户提高集群的性能和可靠性。 ### 回答3: ClickHouse Keeper是一个用于管理和监控ClickHouse数据库的工具。ClickHouse是一款高性能、可扩展的列式数据库管理系统,用于处理海量数据。 ClickHouse Keeper具有以下几个主要的功能和特点: 1. 数据库管理:ClickHouse Keeper可以提供对ClickHouse数据库的全面管理。它可以创建、删除和修改数据库,还可以管理数据库的用户权限和表结构。 2. 数据监控:ClickHouse Keeper可以实时监控ClickHouse数据库的运行状态。它可以监测系统的负载情况、查询的执行情况、数据写入和读取的速度等指标,并生成相应的统计图表和报告。这样可以帮助用户了解数据库的性能状况,及时发现和解决潜在的问题。 3. 数据备份和恢复:ClickHouse Keeper可以定期对ClickHouse数据库进行备份,并可以按需恢复数据。它支持全量备份和增量备份,并提供了灵活的备份策略设置。这样可以保证数据的安全性和可靠性。 4. 自动化运维:ClickHouse Keeper可以通过设置自动化任务,实现对ClickHouse数据库的自动化运维。它可以定期执行数据库维护操作,例如数据的优化和碎片整理,以提高数据库的性能和效率。同时,它还可以根据用户的需求,自动执行数据导入和导出操作,实现数据的高效管理和迁移。 总之,ClickHouse Keeper是一个功能强大、易于使用的工具,可以帮助用户更好地管理和监控ClickHouse数据库,提高数据处理的效率和可靠性。它的出现为ClickHouse数据库的使用者提供了便利和保障,使得使用和管理ClickHouse数据库变得更加简单和可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值