如何构建高吞吐 Kafka → ClickHouse 数据链路

Weijie Zhao2024年12月5日15 min read

概述

在现代可观测性体系中,日志数据通常通过 Kafka 进行缓冲和分发。本文介绍如何构建一个高吞吐、可靠的 Kafka 到 ClickHouse 数据管道。

架构设计

[日志采集] → [Kafka] → [emorash] → [ClickHouse]
                          ↓
                    [Elasticsearch]

emorash 配置示例

[kafka]
brokers = ["kafka-1:9092", "kafka-2:9092"]
topic = "logs"
group_id = "emorash-consumer"
offset_reset = "latest"

[clickhouse]
host = "clickhouse:9000"
database = "logs"
table = "events"
batch_size = 20000
flush_interval = "5s"

性能优化要点

1. **批量写入**:将小批次合并为大批次

2. **异步写入**:使用缓冲队列解耦消费和写入

3. **连接池**:复用 ClickHouse 连接

Tip

建议 batch_size 设置在 10000-50000 之间。

监控指标

curl http://localhost:9090/metrics | grep emorash

Related Posts