1. 实时指标概述

大家好,我是你们这门课的主讲。今天咱们聊聊实时指标。说实话,这个概念在业界被炒得很热,但真正搞明白的人不多。我见过不少团队,一上来就上 Flink、上 Kafka,结果做出来的东西既不实时,也不是指标。

所以第一章,咱们先把地基打牢。什么是实时指标?它跟离线指标到底差在哪?哪些场景非用不可?

1.1 什么是实时指标

实时指标,说白了就是「秒级或毫秒级可见的数据度量」。你想想看,传统报表是 T+1 的——今天看昨天的数据。实时指标不一样,数据产生后几秒钟,你就能在仪表盘上看到它。

举个例子。电商大促期间,你打开后台看「当前订单金额」。这个数字每秒钟都在跳动。它背后是一条条订单流,经过采集、计算、聚合,最终呈现在你面前。这就是实时指标。

核心定义:实时指标 = 数据从产生到可见的延迟 ≤ 1 分钟,且计算过程是持续进行的流式处理。

我个人习惯把实时指标分成三类:

  • 累计型:比如今日 PV、今日 GMV,从零点开始累加,永不重置。
  • 窗口型:比如最近 5 分钟的平均响应时间,窗口滑动,数据滚动。
  • 状态型:比如当前在线人数、设备在线状态,反映的是「此时此刻」的快照。

嗯,这里要注意:不是所有指标都适合做成实时的。我见过有人把「月活跃用户」也做成实时指标,每天跑一次全量计算,那叫「准实时」,不叫实时。

1.2 实时指标与离线指标的区别

很多新手会问:实时和离线,不就是计算快慢的区别吗?其实远不止这些。我拿一张表来对比,你一看就明白。

对比维度 离线指标 实时指标
数据延迟 T+1 或小时级 秒级到分钟级
计算引擎 Hive、Spark SQL、MR Flink、Spark Streaming、Kafka Streams
数据源 离线数仓(HDFS、Hive 表) 消息队列(Kafka、Pulsar)
计算模式 批处理(Batch) 流处理(Streaming)
数据精度 精确,可回溯重算 近似,允许一定误差
存储介质 HDFS、ClickHouse(离线导入) Redis、HBase、Druid、ClickHouse(实时写入)
典型场景 日报、月报、财务对账 监控大屏、实时风控、秒杀看板

你看,从数据源到存储,整个链路都不一样。离线指标可以反复重跑,今天跑错了明天还能修。实时指标呢?数据流过了就过了,想回溯?你得把 Kafka 的 offset 重置,重新消费一遍。

我在项目中遇到过一件事:有个团队把离线 Hive 表的计算逻辑直接搬到 Flink 上,结果发现状态越来越大,最后 OOM 了。为什么?因为离线是「全量扫描」,实时是「增量计算 + 状态维护」,两套思维模式完全不同。

避坑指南:我曾经接手过一个项目,团队用实时引擎去算「全量去重 UV」。每天几亿条数据,状态膨胀到几百 G,Flink 频繁 checkpoint 超时。后来改成 HyperLogLog 近似去重,才把问题解决。实时指标要学会「容忍近似」。

1.3 实时指标的应用场景

聊完了概念和区别,咱们看看实际中哪些场景离不开实时指标。我按行业和用途给你梳理一下。

1.3.1 实时监控与告警

这是最经典的应用。服务器 CPU 飙高了、接口响应变慢了、订单失败率上升了——这些都需要秒级感知。

  • 基础设施监控:CPU、内存、磁盘、网络流量
  • 业务监控:下单成功率、支付转化率、核心接口 TP99
  • 链路追踪:调用链耗时、错误分布

你想想看,如果等到第二天才发现昨晚系统挂了,那损失已经造成了。实时指标在这里扮演的是「哨兵」角色。

1.3.2 实时大屏与看板

双十一的大屏、春运的交通调度屏、工厂的生产看板——这些场景对「实时感」要求极高。

我记得有一次帮客户做双十一大屏,业务方要求数据延迟不超过 3 秒。我们用了 Kafka + Flink + Redis + WebSocket 的链路,前端每秒刷新一次。那段时间压力很大,但上线后看到大屏上的数字跟实际订单量完全吻合,还是挺有成就感的。

1.3.3 实时风控与反欺诈

金融行业是实时指标的刚需用户。一笔交易从发起到完成,风控系统需要在几百毫秒内判断:这笔交易是不是盗刷?用户登录地点是否异常?

  • 交易风控:单设备多账号、异地登录、高频交易
  • 内容风控:实时过滤违规评论、垃圾消息
  • 信贷风控:实时计算用户信用分、授信额度

这些场景对延迟极其敏感。晚了一秒,钱可能就被转走了。

1.3.4 实时推荐与个性化

你在刷短视频的时候,推荐系统会根据你刚刚的点击行为,实时调整推荐内容。这就是实时指标在背后支撑。

  • 实时特征计算:用户最近 5 分钟的点击序列、停留时长
  • 实时 CTR 预估:根据最新行为更新模型输入
  • 实时 AB 实验:秒级查看实验组和对照组的效果差异

1.3.5 实时运营与营销

用户刚注册完,立刻推送新人优惠券;用户加购了但没付款,5 分钟后发一条提醒消息。这些运营动作背后,都是实时指标在驱动。

个人经验:做实时运营指标时,一定要注意「事件时间」和「处理时间」的区别。用户 10:00:00 下单,但消息 10:00:05 才到达 Kafka。如果你用处理时间聚合,就会把本该属于 10:00 这个分钟的数据算到 10:01 去。我建议所有实时指标都基于事件时间,配合 watermark 处理乱序。

1.4 实时指标体系全景图

说了这么多,咱们用一张图把实时指标体系的全貌串起来。这张图也是整门课程的知识骨架。

实时指标体系全景图 数据源层 业务日志(埋点) 数据库 Binlog 消息队列(MQ) 外部 API 数据 采集与传输层 Logstash / Filebeat Canal / Debezium Kafka Connect HTTP / gRPC 采集 实时计算层 Flink 流处理 Spark Streaming Kafka Streams CEP 复杂事件处理 存储与查询层 Redis HBase Druid ClickHouse Elasticsearch 说明:本图展示了实时指标体系的四层架构,后续章节将逐层深入讲解

这张图把实时指标体系分成了四层:数据源层、采集与传输层、实时计算层、存储与查询层。每一层都有对应的技术和工具。咱们这门课会按照这个架构,一层一层往下讲。

嗯,第一章就到这里。内容不多,但都是干货。你先把这些概念吃透,后面讲 Flink、讲 Kafka、讲实时数仓的时候,你才知道它们各自解决什么问题。