1. 课程导论:实时特征计算的定义、应用场景与Flink+因子库价值
1.1 什么是实时特征计算?
实时特征计算是指在数据产生的毫秒/秒级延迟内,从原始事件流中提取、变换、聚合出可用于模型推理或规则判断的结构化数值或向量。它区别于离线批量特征工程,核心差异在于:
| 维度 | 离线特征计算 | 实时特征计算 |
|---|---|---|
| 延迟 | 小时级 ~ 天级 | 毫秒级 ~ 秒级 |
| 数据源 | Hive / 离线数仓 | Kafka / Pulsar 事件流 |
| 计算引擎 | Spark / Hive SQL | Flink / Kafka Streams |
| 状态管理 | 无状态或批式状态 | 有状态、精确一次语义 |
| 特征时效性 | T+1 或 T+N | 事件发生即计算 |
核心定义:实时特征 = 事件流 + 时间窗口 + 状态聚合 + 在线服务化。它让机器学习模型能感知"此刻"的用户行为与系统状态。
1.2 典型应用场景
实时特征计算已深入多个高时效性业务领域,以下三个场景最具代表性:
场景一:实时风控
- 需求:在支付、登录、交易等环节,百毫秒内判断当前操作是否为欺诈。
- 实时特征举例:过去5分钟同一设备关联的账户数、过去1小时IP地址变更次数、当前交易金额偏离用户历史均值倍数。
- 技术挑战:高吞吐(万级QPS)、低延迟(<200ms)、精确一次状态回溯。
场景二:实时推荐
- 需求:根据用户最近几次点击/浏览,实时调整推荐列表排序权重。
- 实时特征举例:当前会话累计点击品类分布、最近30秒商品页停留时长、实时热门商品TopN。
- 技术挑战:特征维度高(千级)、窗口滑动频繁、特征新鲜度直接影响CTR。
场景三:量化交易
- 需求:基于行情Tick数据,计算技术指标与微观结构因子,驱动策略信号。
- 实时特征举例:过去100笔交易的成交量加权价格(VWAP)、买卖价差、订单簿不平衡度。
- 技术挑战:微秒级延迟要求、事件乱序严重、状态快照与恢复一致性。
场景共性:三个场景都依赖"滑动窗口聚合 + 多流关联 + 特征回填"三大实时计算范式,这正是Flink的强项。
1.3 Flink与因子库结合的价值
因子库是特征逻辑的集中管理平台,它将特征定义、计算逻辑、版本、血缘、元数据统一抽象为"因子"。Flink作为实时计算引擎,与因子库结合后产生以下核心价值:
- 逻辑与引擎解耦:因子库定义"算什么",Flink负责"怎么算"。业务分析师修改因子逻辑无需改动Flink作业代码。
- 特征复用与编排:同一因子(如"过去5分钟登录次数")可被风控、推荐、运营多个场景引用,避免重复开发。
- 版本管理与回溯:因子库记录每个因子的版本快照,Flink作业可指定使用某版本因子逻辑,支持A/B实验与历史回测。
- 自动优化执行计划:因子库提供因子依赖图(DAG),Flink可据此合并窗口、共享状态,减少资源浪费。
- 在线特征服务:因子库将实时计算结果推送到KV存储(Redis/HBase),供在线模型毫秒级获取。
1.4 实时特征计算的核心挑战
尽管价值显著,实时特征计算在工程落地中仍面临四大挑战:
| 挑战 | 描述 | Flink + 因子库应对方案 |
|---|---|---|
| 状态爆炸 | 高基数Key导致Flink状态后端存储膨胀 | 因子库自动识别高频Key,启用RocksDB调优与TTL策略 |
| 数据乱序 | 事件时间与处理时间偏差导致窗口计算错误 | Flink Watermark机制 + 因子库配置允许延迟时间 |
| 特征一致性 | 实时特征与离线特征分布偏移 | 因子库统一特征逻辑,Flink与离线作业共用同一因子定义 |
| 运维复杂度 | 数百个Flink作业管理困难 | 因子库生成作业DAG,自动监控特征产出延迟与质量 |
注意:实时特征计算不是简单的"把离线SQL改成Flink SQL"。状态管理、时间语义、容灾恢复是必须跨越的三座大山。本课程后续章节将逐一攻克。
1.5 本课程路线图
课程共30章,分为四大模块:
- 基础篇(第1-8章):Flink实时计算核心概念、时间语义、窗口、状态后端、Checkpoint机制。
- 因子库篇(第9-16章):因子定义语言、版本管理、依赖解析、元数据存储、特征血缘追踪。
- 实战篇(第17-25章):风控实时特征、推荐实时特征、量化交易因子、多流关联、特征回填与回溯。
- 进阶篇(第26-30章):性能调优、状态后端选型、Flink on Kubernetes、监控告警、生产案例复盘。