1、实时特征计算概述

大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊实时特征计算到底是个什么东西。

我入行头几年,主要跟离线数仓打交道。那时候觉得,每天凌晨跑一次批处理,第二天看报表,日子也挺安稳。直到有一次,我负责的一个推荐系统上线后,用户反馈「刷了半天,推荐的内容还是昨天看过的」。我排查了一整天,发现问题就出在特征更新太慢——用户刚点了一个视频,特征要等 6 小时才能生效。嗯,从那天起,我就开始认真琢磨实时特征了。

什么是实时特征

说白了,实时特征就是「数据从产生到可用,延迟在秒级甚至毫秒级」的特征。

举个例子:你在电商 App 上搜了「机械键盘」,系统立刻把你这个行为算成一个特征——「用户近期搜索关键词:机械键盘」。这个特征在 1 秒内就进入模型,影响接下来的推荐结果。这就是实时特征。

与之对比,离线特征可能是「用户过去 30 天搜索关键词 TOP10」,每天凌晨算一次。时效性差,但计算成本低。

核心定义:实时特征 = 数据产生时间戳 + 特征计算时间戳 之间的差值 ≤ 业务容忍延迟(通常 1 秒 ~ 1 分钟)。

实时计算与离线计算的对比

我经常被问到:「实时计算是不是就是离线计算跑得快一点?」

还真不是。两者从架构设计到技术选型,差别挺大的。我整理了一张对比表,你一看就明白:

对比维度 离线计算 实时计算
数据源 HDFS / 数仓表(静态分区) Kafka / Pulsar / 日志流(持续流入)
计算模式 批处理(Batch),周期性触发 流处理(Streaming),事件驱动
延迟要求 小时级 ~ 天级 秒级 ~ 分钟级
数据量 全量历史数据(TB ~ PB) 窗口内增量数据(MB ~ GB)
容错机制 任务重跑,幂等性保证 状态快照 + 精确一次语义(Exactly-Once)
典型引擎 Hive / Spark SQL / Presto Flink / Kafka Streams / Spark Streaming
成本 存储成本高,计算成本低(错峰) 存储成本低,计算成本高(常驻集群)

你看,离线计算擅长「算全量、算得准」,实时计算擅长「算增量、算得快」。两者不是替代关系,而是互补关系。我现在的项目里,离线特征做基础画像,实时特征做行为捕捉,配合起来效果最好。

我的经验:不要一上来就追求全实时。先评估业务容忍延迟——如果 5 分钟更新一次就能满足需求,用微批(Micro-Batch)比纯流式更省资源。我曾经有个项目,硬上纯流式,结果集群成本翻了三倍,业务方却说「其实 1 分钟延迟也能接受」……

实时特征计算的应用场景

实时特征不是炫技,它解决的是实实在在的业务痛点。我挑三个最典型的场景聊聊:

风控场景

风控对实时性的要求是最苛刻的。你想想看,用户正在支付,系统必须在几百毫秒内判断这笔交易是不是盗刷。

常见的实时特征包括:

  • 设备指纹特征:当前 IP 是否在 5 分钟内切换过 3 个以上城市
  • 行为序列特征:用户从登录到支付的时间间隔是否异常短
  • 频次特征:同一设备 1 分钟内发起的交易次数

我记得有一次,我们监控到一个账号在 10 秒内从北京、上海、广州三个地点同时登录。离线特征根本发现不了这种模式,但实时特征立刻触发了风控拦截。这就是实时特征的价值——抓住「瞬间异常」。

推荐场景

推荐系统是实时特征最「卷」的领域。用户的行为意图变化极快,你晚 10 秒更新特征,推荐结果可能就完全不对味了。

典型的实时推荐特征:

  • 实时点击序列:用户最近 5 次点击的商品类目
  • 实时搜索意图:当前搜索词与历史搜索词的语义相似度
  • 实时上下文:当前时间、地理位置、网络环境

我参与过一个短视频推荐项目,初期只用离线特征,用户冷启动阶段推荐效果很差。后来加了实时特征——用户刚刷完一个搞笑视频,系统立刻把「搞笑类目权重」上调 20%,推荐准确率提升了 15%。

注意:实时特征在推荐场景中容易引入「信息茧房」效应。用户刚点了一个内容,你立刻推同类型,用户可能越看越窄。我建议在实时特征中加入「探索性特征」,比如随机采样一些不同类目的内容,保持推荐的多样性。

监控场景

监控场景的实时特征,核心是「异常检测」和「告警触发」。

举个例子:

  • 业务监控:实时计算「下单成功率」的滑动窗口均值,一旦低于阈值就告警
  • 系统监控:实时计算「接口 P99 延迟」,超过 500ms 自动扩容
  • 流量监控:实时计算「UV / PV 同比变化率」,发现流量突增或突降

我之前维护过一个广告投放系统,每天凌晨流量会有一个「尖刺」。离线监控只能第二天看到,但实时监控在尖刺出现 30 秒内就触发了自动扩容,避免了服务雪崩。

知识体系总览

说了这么多,咱们用一张图把本章的核心脉络串起来。这张 SVG 图展示了实时特征计算的知识体系:

实时特征计算知识体系 实时特征计算 核心定义 离线 vs 实时对比 应用场景 延迟 ≤ 业务容忍 增量计算 事件驱动 离线:批处理 实时:流处理 互补关系 风控 推荐 监控 核心要点 • 实时特征 = 低延迟 + 增量计算 + 事件驱动 • 离线与实时是互补关系,不是替代关系 • 风控要求毫秒级,推荐要求秒级,监控要求分钟级 • 选型时先评估业务容忍延迟,再决定技术方案

这张图把咱们本章讲的内容都串起来了。从核心定义出发,到离线与实时的对比,再到三个典型应用场景。后面的课程,我们会逐一深入每个环节。

好了,第一章就到这里。实时特征计算的门已经推开了一条缝,接下来咱们会一步步走进去,看看里面到底藏着哪些架构设计和工程实践。