1. 实时指标概述
大家好,我是这次课程的主讲。做了十几年实时计算,我见过太多团队在「实时指标」这个坑里栽跟头。今天咱们先把这个概念彻底聊透。
实时指标,说白了就是「数据产生后,秒级或毫秒级就能看到结果」的度量值。你想想看,双十一大屏上跳动的 GMV、风控系统拦截的每一笔可疑交易、服务器 CPU 飙高时自动触发的告警——这些背后都是实时指标在干活。
核心定义:实时指标 = 实时采集 + 实时计算 + 实时展示。三个环节缺一不可。
1.1 实时指标的定义
我习惯把实时指标拆成三个维度来理解:
- 时效性:从数据产生到指标可见,延迟通常在 1 秒以内。有些场景要求毫秒级,比如高频交易。
- 连续性:数据源源不断地流入,指标持续更新。不是跑一次就完事,而是 7×24 小时滚动计算。
- 可回溯性:虽然叫实时,但也要能查历史。比如看过去 5 分钟的实时趋势曲线。
举个例子。我在做电商项目时,运营要实时看「今日下单用户数」。这个指标看起来简单,但背后涉及埋点采集、消息队列、流计算引擎、结果存储、大屏推送——整条链路延迟必须控制在 500ms 以内。嗯,这里要注意,实时不等于「零延迟」,而是延迟在业务可接受的范围内。
1.2 应用场景
实时指标不是花架子,它解决的是实实在在的业务痛点。我挑三个最典型的场景来讲。
1.2.1 风控场景
风控是实时指标最刚需的领域。为什么?因为钱的事等不了。
- 交易反欺诈:用户刚点下「支付」按钮,系统必须在 100ms 内判断这笔交易是否可疑。我曾经遇到过一个案例,某支付平台因为实时风控延迟高了 200ms,被黑产团伙利用时间差刷走了几百万。
- 登录异常检测:同一账号在 5 分钟内从 3 个不同城市登录,实时指标立刻标记为高风险。
- 信贷审批:用户提交贷款申请后,实时聚合多头借贷数据、设备指纹、行为轨迹,秒级输出信用评分。
避坑指南:我曾经在风控项目里犯过一个低级错误——把实时指标的计算逻辑和离线指标混在一起。结果离线任务重跑时把实时结果也污染了。记住:实时和离线必须物理隔离,数据源可以共用,但计算链路要分开。
1.2.2 大屏场景
大屏这东西,老板爱看,但做起来坑最多。
- 双十一作战大屏:每秒处理百万级事件,实时聚合出 GMV、订单量、客单价、库存水位。我记得有一年双十一,大屏上的数字跳得比心跳还快,背后是几千台服务器在扛。
- 物流监控大屏:包裹当前位置、分拣中心吞吐量、配送员实时轨迹。这些指标延迟超过 3 秒,调度系统就废了。
- 工厂产线大屏:设备 OEE、良品率、故障告警。实时指标能帮厂长在设备宕机前 30 秒发出预警。
你想想看,大屏上的数字如果卡了 5 秒才更新,领导当着全公司面指着屏幕问「这数据是不是假的?」——那场面,我经历过,尴尬到脚趾抠地。
1.2.3 监控场景
监控是实时指标最朴素的应用,但也是最容易出问题的。
- 业务监控:订单成功率、支付转化率、接口响应时间。一旦指标异常,立刻触发告警。
- 基础设施监控:CPU、内存、磁盘 IO、网络流量。这些指标通常用 Prometheus 采集,但实时聚合还是得靠流计算引擎。
- 用户行为监控:实时 PV/UV、页面停留时长、跳出率。产品经理最爱看这个。
注意:监控场景的实时指标最容易出现「告警风暴」。我曾经见过一个系统,因为实时指标计算逻辑写错了,每分钟发 10 万条告警短信。运维大哥差点把服务器砸了。所以,实时指标一定要有降级和限流机制。
1.3 实时指标 vs 离线指标
很多刚入行的同学分不清实时和离线到底差在哪。我直接上对比表,一目了然。
| 对比维度 | 实时指标 | 离线指标 |
|---|---|---|
| 延迟 | 秒级/毫秒级 | 小时级/天级 |
| 计算模式 | 增量计算,事件驱动 | 批量计算,定时调度 |
| 数据源 | 消息队列(Kafka/Pulsar) | 数据湖/数仓(Hive/Iceberg) |
| 存储 | Redis/HBase/OLAP 引擎 | HDFS/对象存储 |
| 准确性 | 最终一致性,允许短暂偏差 | 强一致性,精确一次 |
| 典型引擎 | Flink/Spark Streaming | Spark/MapReduce |
| 适用场景 | 风控、大屏、监控、推荐 | 报表、财务对账、数据挖掘 |
这里我要多说一句。很多人觉得实时指标比离线指标「高级」,其实不是。它们各有各的用处。我见过最蠢的做法,就是拿实时引擎去跑离线 T+1 报表——浪费资源不说,还容易把实时链路搞崩。
为什么会这样?因为实时引擎的设计哲学是「低延迟、高吞吐」,它不适合做复杂的数据清洗和关联计算。离线引擎正好相反,它擅长处理海量数据,但不在乎延迟。
1.4 实时指标的核心挑战
聊完概念和场景,咱们说说落地时最头疼的几个问题。
- 数据乱序:用户点击事件可能比下单事件晚到 10 秒。实时指标怎么处理这种「先下单后点击」的乱序数据?
- 状态管理:实时指标需要维护中间状态(比如累计 UV、滑动窗口聚合)。状态一旦丢失,整个指标就废了。
- 容错与恢复:Flink 任务挂了,重启后怎么保证指标不重复、不丢失?
- 数据一致性:实时指标和离线指标对不上,老板问「到底哪个准?」——这个问题我至少被问过 50 次。
我的建议:做实时指标之前,先想清楚三个问题——业务能接受的最大延迟是多少?指标允许的误差范围是多少?数据量级和峰值 QPS 是多少?这三个问题答不上来,后面全是坑。
1.5 实时指标知识体系
下面这张图是我自己整理的实时指标知识体系。你可以把它当成整个课程的地图。
这张图把实时指标的整个技术栈分成了五层:采集、队列、计算、存储、应用。后面每一章都会围绕其中一层展开。你先把这张图记在脑子里,后面学起来会轻松很多。