《刘炜-2023RustChinaConf大会.pdf》由会员分享,可在线阅读,更多相关《刘炜-2023RustChinaConf大会.pdf(19页珍藏版)》请在三个皮匠报告上搜索。
1、第三届中国Rust开发者大会使用Rust与ClickHouse构建高效可靠的日志系统刘炜腾讯云(专有云)自我介绍系统介绍整体架构系统实现遇到问题大纲自我介绍自我介绍大龄码农做过嵌入式/CDN/数据库开发从C/C+到Rust现在在腾讯云(专有云)从事日志系统的开发自我介绍PhoTto/image/chart系统介绍系统介绍系统介绍 属于腾讯专有云PaaS平台(TCS)承接TCS底座日志 从Loki=Menicus 提供日志的搜索/报警/处理等功能系统介绍 为什么放弃 Loki 资源占用过大 统计/计算能力比较弱 组件过多,排查问题比较困难 商业使用不友好的开源协议 为什么选择Mencius+Cl
2、ickHouse 存储计算与业务分离 计算/统计能力更强 资源占用更小,性能更好 更友好的开源协议系统介绍 多种接入方式 Agent Client 查询 LogQL OpenTSDB 其他功能 多租户 自定义索引 多维度统计 鉴权.系统介绍 写入每天 100G 磁盘压缩比 1:13 内存Mencius200M左右ClickHouse2G以下 接入端 API Gateway 日志服务(Mencius)存储(ClickHouse)整体架构 协议层 处理层 计算层 存储层系统实现协议层支持协议Loki写入Json/ProtoBuf查询LogQLLog QueriesMetric QueriesOpe
3、nTSDB统计/计算协议层 Parser 手写 为什么?LogQL=Token=AST=SQL 测试 Fuzz testing处理层Processor初始化静态/动态执行读/写结构prediccateprocess(&self,streams:Streams)-Streams类型修改原始数据抽取原始数据字段Json/LogFmt计算层大部分计算交给ClickHouseAggregation operatorsVector 的计算报警使用Binary operator,=Vector matching匹配两个Vector存储层WAL移植LevelDB的 WAL定长的 BlockBatch 写入 ClickHouseFlush Worker异步任务定时刷新 WAL清理策略Schema同步转换SQL存储层ClickHouse使用Array来保存 Labels物化列Lowcardinality(String)加速查询Skipping Indexes日志全文索引问题RustLifetime侵入性比较强库质量参差不齐ClickHouse 可运维性弱 强Schema带来不够灵活的缺点全文索引支持比较弱Thank you!