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 实时指标知识体系

下面这张图是我自己整理的实时指标知识体系。你可以把它当成整个课程的地图。

实时指标知识体系 数据采集层 消息队列层 流计算层 实时存储层 数据湖层 OLAP 引擎层 风控 大屏 监控 推荐/搜索 核心挑战: 数据乱序 · 状态管理 · 容错恢复 · 数据一致性 · 延迟与吞吐平衡 本课程将覆盖从采集到应用的完整链路,重点讲解 Flink + 数据湖的集成方案

这张图把实时指标的整个技术栈分成了五层:采集、队列、计算、存储、应用。后面每一章都会围绕其中一层展开。你先把这张图记在脑子里,后面学起来会轻松很多。