前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Clickhouse]手把手教你开发一个Clickhouse组件

[Clickhouse]手把手教你开发一个Clickhouse组件

作者头像
小伟
发布2022-07-24 09:39:45
1K0
发布2022-07-24 09:39:45
举报
文章被收录于专栏:魔都程序缘魔都程序缘

Clickhouse源码是通过一个统一入口

https://github.com/ClickHouse/ClickHouse/blob/master/programs/main.cpp,加载各个不同的Application(也就是组件,来实现不同的功能),代码是2021-06-30下载的最新master代码编译的, 目前最新的release为:

我们看最终的这个编译结果,

图1

clickhouse-benchmark:性能测试工具

clickhouse-client:Clickhouse的客户端工具

clickhouse-compressor:压缩工具

clickhouse-copier:Clickhouse数据迁移工具

clickhouse-extract-from-config:大家看代码吧

clickhouse-format:格式化工具

clickhouse-git-import:大家看代码吧

clickhouse-keeper:大家看代码吧

clickhouse-library-bridge:大家看代码吧

clickhouse-local:Clickhouse本地版本

clickhouse-obfuscator:大家看代码吧

clickhouse-odbc-bridge:odbc连接器

clickhouse-server:大家用的Clickhouse服务

clickhouse-tiger:我自定义的一个组件, 该组件打印输入参数,实现效果如下:

如果开发一个clickhouse-tiger组件,有哪些修改点呢?

我把修改文件截图如下:

图2

接下来,我将详细说明每个文件的修改点:

  • 第一个:./programs/CMakeLists.txt。 这些修改是将我们需要开发的tiger模块添加到clickhouse的编译流程中,在编译时和clickhouse一起编译,连接。

定义编译开关变量,默认将编译该模块

图3

打印开关值

图4

新模块有源码,include,编译需要link的,定义后加入系统编译

图5

添加子模块

图6

将新模块添加到target中

图7

添加独立target lib

图8

  • 第二个:./programs/config_tools.h.in

添加cmake变量,会生成main.cpp中对应的宏定义。有宏定义的模块入口将被clickhouse系统加载。

图9

  • 第三个:./programs/main.cpp clickhouse的入口所在, 定义新模块入口函数

图10

如果满足宏定义,将新模块添加到clickhouse启动系统中,

启动时自动判断调用什么入口函数,启动对应的模块

图11

因为clickhouse的Cmake文件很多地方的变量名和模块名相关,所以尽量和clickhouse保持一致的命名风格,不然报错很难找。

目录名:小写,和模块名一样

  • 第四个:./programs/tiger/Tiger.cpp 添加模块入口函数,由此展开自己的逻辑功能

图12

  • 第五个:./programs/tiger/clickhouse-tiger.cpp 入口定义,文件名必须为clickhouse-xxx, xxx表示小写的模块名

图13

  • 第六个:./programs/tiger/CMakeLists.txt 模块的cmake文件,这里定义的源码变量Link变量Include头文件变量 需要添加到图5的配置中才会生效。

图14

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔都程序缘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
迁移服务平台
迁移服务平台(Migration Service Platform,MSP)是帮助客户将系统从源平台迁移到腾讯云的工具。为迁移上云项目提供源端资源调研、上云规划、目标资源创建、批量迁移实施等能力,帮助降低客户迁移上云的复杂度,提升迁移效率。迁移服务平台 MSP 不收取任何额外费用,您只需为购买的资源及 DTS 数据迁移工具付费。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档