Kafka + Flink + OLAP 的实时指标计算实践

实时指标链路通常由 Kafka 承接事件,Flink 清洗和聚合,OLAP 数据库承接明细与指标查询。

Kafka + Flink + OLAP 的实时指标计算实践

实时指标计算是 Flink 最典型的落地场景之一。上游是 Kafka 事件流,中间是 Flink 清洗和窗口聚合,下游是 ClickHouse、Doris、StarRocks 等 OLAP 数据库。

Rendering diagram...

Topic 设计

订单、支付、用户行为、日志最好拆成不同 Topic。每个 Topic 内再用 key 控制顺序,比如 order_iduser_id

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、状态大小、写入幂等和指标口径。

参考链接