2、特征服务架构基础:在线特征服务与离线特征服务的区别、特征存储引擎(Redis/HBase)介绍

2.1 在线特征服务 vs 离线特征服务

特征服务是机器学习推理管线的核心数据层,根据服务时效与数据来源可划分为在线特征服务与离线特征服务。两者在延迟要求、数据新鲜度、存储选型与访问模式上存在本质差异,理解这些差异是构建批次偏移监控的前提。

对比维度 在线特征服务 离线特征服务
服务延迟 毫秒级(P99 < 50ms) 分钟级~小时级
数据新鲜度 秒级~分钟级(近实时) T+1 或小时级批量产出
存储引擎 Redis / HBase / 内存 KV HDFS / Hive / 对象存储
访问模式 点查(Get by Key) 全量扫描 / 分区扫描
数据量级 热数据(GB~TB) 全量历史(TB~PB)
典型用途 实时推理、AB 实验 训练样本生成、离线评估
批次偏移风险 特征更新延迟 / 版本不一致 数据回溯 / 分区遗漏
关键认知:批次偏移监控的核心矛盾在于——在线特征与离线特征来自同一上游数据源,但经过不同的处理链路与存储引擎后,特征值可能产生系统性偏差。监控系统必须同时比对在线快照与离线批次,才能发现偏移。

2.2 在线特征服务架构

在线特征服务通常采用写时复制 + 缓存加速的架构。实时流(Kafka → Flink)将特征写入在线存储,推理服务通过 SDK 或 gRPC 接口按 entity_key 点查。典型组件包括:

  • 特征写入层:Flink/Spark Streaming 消费上游事件,聚合后写入 Redis/HBase。
  • 特征存储层:高性能 KV 引擎,支持 TTL 自动过期。
  • 特征读取层:轻量级 SDK 或代理网关,提供 GetFeature 接口。
  • 版本管理:特征时间戳或版本号,用于回滚与比对。
在线特征服务架构图 在线特征服务架构 上游事件流 Flink 实时聚合 Redis / HBase 推理服务 版本号 / 时间戳 偏移监控探针 说明:在线特征服务以毫秒级延迟提供最新特征值,监控探针定期采样在线特征快照, 与离线批次特征进行比对,发现因更新延迟或版本不一致导致的批次偏移。

2.3 离线特征服务架构

离线特征服务以批量调度 + 分区存储为核心。上游原始数据经过 ETL 清洗后,按日期/小时分区写入离线数仓,再由特征工程任务生成宽表或特征视图。典型流程:

  1. 数据接入:Kafka / 日志文件 → HDFS 原始层。
  2. 特征计算:Spark / Hive 按分区执行 SQL 或 UDF,产出特征列。
  3. 特征存储:Hive 分区表 / ORC 列存 / Parquet。
  4. 特征发布:将离线特征导出为训练样本(TFRecord / CSV)或同步至在线存储。
离线特征服务架构图 离线特征服务架构 原始日志 / 事件 ETL 清洗 HDFS / Hive 分区 Spark 特征工程 Airflow 调度 分区完整性检查 说明:离线特征按分区组织,批次偏移监控需检查每个分区的记录数、特征分布与在线快照的一致性。 常见问题包括分区遗漏、数据回溯导致的时间窗口错位。

2.4 特征存储引擎:Redis

Redis 是在线特征服务的首选内存 KV 引擎,核心特性:

  • 数据结构:String / Hash / Sorted Set,特征通常用 Hash 存储(field = 特征名,value = 特征值)。
  • TTL 机制:自动过期冷特征,控制内存水位。
  • 高并发:单线程模型 + 多实例分片,QPS 可达 10 万+。
  • 持久化:AOF / RDB,用于故障恢复。
实践建议:特征 key 设计为 feature:{entity_type}:{entity_id},value 使用 Hash 存储多个特征字段,避免大 key 热读。监控 Redis 的 used_memory 与 evicted_keys,防止因内存不足导致特征丢失。

2.5 特征存储引擎:HBase

HBase 适用于在线 + 近线特征场景,尤其适合特征维度多、需要版本回溯的场景:

特性 说明
RowKey 设计 entity_id + 时间戳 或 entity_id + 特征组,支持范围扫描
列族 按特征类别拆分(如:user_profile / user_behavior)
版本控制 每个 cell 可保留 N 个历史版本,用于回滚与比对
TTL 列族级别自动过期,清理冷数据
读写路径 写:MemStore → HFile;读:BlockCache + BloomFilter
注意:HBase 的批次偏移监控需要关注 Region Server 的负载均衡与 Major Compaction 对查询延迟的影响。特征版本过多会导致 HFile 膨胀,建议设置合理的 VERSIONS 参数(通常 3~5 个版本)。

2.6 存储引擎选型对比

选型维度 Redis HBase
延迟 < 5ms(内存) 10~50ms(依赖 HDFS)
容量 受内存限制(GB~TB) PB 级(依赖 HDFS)
特征版本 需业务层实现 原生支持多版本
范围查询 不支持(仅点查) 支持(RowKey 前缀扫描)
运维复杂度 低(主从 / Cluster) 高(Region 管理 / Compaction)
批次偏移监控 需采样在线快照 可直接扫描历史版本

在实际生产环境中,Redis 负责热特征的高速读取,HBase 承担冷特征与版本回溯,两者通过特征同步管道保持数据一致性。批次偏移监控系统需要同时对接这两种存储,分别提取在线快照与离线批次特征,才能完成全链路的偏差检测。