Kafka + Flink + OLAP 的实时指标计算实践
实时指标链路通常由 Kafka 承接事件,Flink 清洗和聚合,OLAP 数据库承接明细与指标查询。
Kafka + Flink + OLAP 的实时指标计算实践
实时指标计算是 Flink 最典型的落地场景之一。上游是 Kafka 事件流,中间是 Flink 清洗和窗口聚合,下游是 ClickHouse、Doris、StarRocks 等 OLAP 数据库。
Rendering diagram...
Topic 设计
订单、支付、用户行为、日志最好拆成不同 Topic。每个 Topic 内再用 key 控制顺序,比如 order_id 或 user_id。
Flink SQL 聚合
SELECT
window_start,
window_end,
channel,
SUM(pay_amount) AS gmv,
COUNT(DISTINCT user_id) AS pay_users
FROM TABLE(
TUMBLE(TABLE payment_events, DESCRIPTOR(event_time), INTERVAL '1' MINUTE)
)
GROUP BY window_start, window_end, channel;
这类指标适合写入聚合表,供大屏或 API 查询。
明细和聚合都要保留
明细表用于追溯和灵活分析,聚合表用于高频查询。
如果只保留聚合结果,问题排查会困难。如果只保留明细,固定指标查询成本会高。
延迟和一致性
实时链路要关注端到端延迟:采集、Kafka、Flink、Sink、OLAP 查询。
同时要有离线校准。实时结果用于趋势,离线结果用于最终口径。
小结
Kafka + Flink + OLAP 是实时指标计算的经典组合。真正难点在事件模型、Watermark、状态大小、写入幂等和指标口径。