1. 实时特征API概述
1.1 实时特征的定义
实时特征(Real-Time Feature)是指在数据产生后毫秒级或秒级内完成计算、更新并可供模型推理使用的特征值。与离线特征依赖批量调度(如 T+1 或小时级)不同,实时特征要求数据从产生到特征就绪的端到端延迟通常低于 500ms,且具备高可用、低抖动、可回放等工程特性。
核心指标:实时特征通常以 P99 延迟 ≤200ms、吞吐量 ≥10万 QPS、可用性 ≥99.95% 作为基准线。低于此标准时,特征时效性将无法支撑在线推理场景。
1.2 API在特征工程中的作用
特征 API 是连接特征生产与模型推理的标准化接口层,承担以下关键职责:
- 特征抽象:将底层存储(Redis、HBase、本地缓存)与计算逻辑封装为统一 RESTful/gRPC 接口,屏蔽异构数据源差异。
- 实时计算:在 API 层完成窗口聚合、特征变换、ID 映射等轻量计算,避免模型侧重复实现。
- 流量治理:提供限流、熔断、降级、超时控制等能力,保障高并发下特征服务的稳定性。
- 版本管理:支持特征 Schema 演进、AB 实验分流、灰度发布,降低特征变更风险。
架构定位:特征 API 位于在线存储层与推理引擎之间,是实时特征系统的“数据总线”。其设计质量直接影响模型推理延迟与特征一致性。
1.3 实时特征与离线特征的区别
实时特征与离线特征在时效性、计算模式、存储选型、一致性要求等方面存在本质差异。下表从 8 个维度进行对比:
| 对比维度 | 实时特征 | 离线特征 |
|---|---|---|
| 时效性 | 毫秒~秒级 | 小时~天级 |
| 计算引擎 | Flink / Spark Streaming / 自研 C++ 服务 | Hive / Spark Batch / MapReduce |
| 存储介质 | Redis / Memcached / 本地内存 | HDFS / Hive 表 / Parquet 文件 |
| 数据窗口 | 滑动窗口 / 会话窗口(分钟级) | 固定窗口(天/周/月) |
| 一致性模型 | 最终一致性 + 幂等写入 | 强一致性(事务保证) |
| 容错策略 | 主从切换 / 本地降级 / 兜底值 | 任务重跑 / 数据回溯 |
| 特征更新 | 增量更新(事件驱动) | 全量覆盖(调度触发) |
| 典型延迟 | P99 < 200ms | 分钟~小时级 |
1.4 实时特征系统架构总览
下图展示了实时特征 API 在完整特征工程链路中的位置与核心组件关系:
1.5 实时特征的核心挑战
构建高可靠的实时特征 API 需要解决以下关键问题:
- 延迟与吞吐的平衡:在线推理场景通常要求 P99 延迟 < 200ms,同时支持数万 QPS 并发。需要在计算复杂度与响应速度之间做精细取舍。
- 特征一致性与时效性:实时特征采用最终一致性模型,但必须保证同一请求内的多个特征来自相同时间窗口,避免“特征穿越”。
- 容错与降级策略:当存储层抖动或计算任务延迟时,API 层需具备本地缓存降级、兜底值返回、熔断保护等能力。
- 特征版本与灰度:特征 Schema 变更、计算逻辑升级需要支持平滑迁移,避免打断在线推理流量。
常见误区:将离线特征的计算逻辑直接移植到实时 API 中,忽略窗口语义差异和存储延迟,导致特征值不一致或 API 超时。实时特征必须重新设计计算路径与缓存策略。
1.6 实时特征 API 的典型调用流程
一次完整的实时特征 API 调用包含以下步骤:
- Step 1:推理引擎发起特征请求,携带实体 ID(如 user_id、item_id)与特征名称列表。
- Step 2:API 网关进行身份认证、限流检查与路由分发。
- Step 3:特征 API 服务并行查询在线存储(Redis/本地缓存),获取已预计算的特征值。
- Step 4:对于需要实时计算的特征(如最近 5 分钟点击率),API 层调用轻量计算引擎完成窗口聚合。
- Step 5:特征值组装为统一格式的响应,返回给推理引擎。
- Step 6:异步记录调用日志与延迟指标,用于监控与特征回溯。
性能关键点:Step 3 的并行查询与 Step 4 的轻量计算是延迟瓶颈所在。通常采用连接池复用、批量管道查询、预计算热点特征等方式优化。