创意电子

标题: ClickHouse Keeper 源码解析 [打印本页]

作者: 企业上云那些事    时间: 2021-12-23 11:35
标题: ClickHouse Keeper 源码解析
简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper。ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务。本文对开源版本 ClickHouse v21.8.10.19-lts 源码进行了解析。
作者简介:范振(花名辰繁),阿里云开源大数据-OLAP 方向负责人。

内容框架
背景
架构图
核心流程图梳理
内部代码流程梳理
Nuraft 关键配置排坑
结论
关于我们
Reference
背景

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

Zookeeper Client

架构图


                               
登录/注册后可看大图


                               
登录/注册后可看大图


                               
登录/注册后可看大图

核心流程图梳理

类图关系

                               
登录/注册后可看大图



处理惩罚请求的线程模型

                               
登录/注册后可看大图


                               
登录/注册后可看大图


内部代码流程梳理
总体上nuraft实现了一个编程框架,必要对类图中标红的几个class进行实现。
LogStore与Snapshot
LogStore 负责持久化 logs,继承自 nuraft::log_store,这一系列接口中比较紧张的是:




                               
登录/注册后可看大图


KeeperStorage

这个类用来模拟与 Zookeeper 对等的功能。

  struct Node    {        String data;        uint64_t acl_id = 0; /// 0 -- no ACL by default        bool is_sequental = false;        Coordination::Stat stat{};        int32_t seq_num = 0;        ChildrenSet children{};    };
virtual std::pair process(KeeperStorage & storage, int64_t zxid, int64_t session_id) const = 0;

                               
登录/注册后可看大图

Nuraft 关键配置排坑


结论

关于我们

计算平台开源大数据团队致力于开源引擎的内核研发工作,OLAP 方向包罗 ClickHouse,Starrocks,Trino(PrestoDB) 等。
原文链接:301 Moved Permanently
本文为阿里云原创内容,未经答应不得转载。
作者: LHHDZ    时间: 2021-12-23 14:15
老师,有没有视频呢,想学一下click的源码




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4