2. 特征服务架构设计:微服务架构下的特征计算、存储与分发
在金融风控场景中,特征服务是连接原始数据与决策模型的桥梁。本章将深入剖析基于微服务架构的特征服务平台,涵盖特征计算、存储与分发的核心设计原则与技术选型。一个高可用、低延迟的特征服务,是保障回测坏账率哨兵系统实时性与准确性的基石。
架构目标: 支撑每日亿级特征请求,P99 延迟 < 50ms,支持在线实时计算与离线批量回放,特征数据一致性达到 99.99%。
2.1 整体架构分层
特征服务采用经典的四层微服务架构,每一层职责清晰,通过轻量级 API 网关与消息队列解耦。
2.2 核心组件与职责
下表详细列出各层核心组件及其在特征生命周期中的关键职责:
| 层级 | 核心组件 | 职责描述 | 技术选型 |
|---|---|---|---|
| 接入层 | API Gateway | 统一入口,协议转换(gRPC ↔ HTTP),请求限流,身份鉴权,灰度路由 | Kong / Envoy / Spring Cloud Gateway |
| 计算层 | 实时计算引擎 | 毫秒级窗口聚合、滑动平均、比率计算、外部数据实时关联 | Apache Flink / Kafka Streams |
| 计算层 | 离线计算引擎 | T+1 批量特征衍生、历史回放数据准备、大规模特征回溯 | Apache Spark / Hive |
| 存储层 | 在线特征库 | 高并发低延迟读取,支持 TTL 自动过期,特征快照 | Redis Cluster / Tair |
| 存储层 | 离线特征库 | 海量历史特征存储,支持时间旅行查询,列式压缩 | HBase / Parquet on HDFS |
| 分发层 | 消息队列 | 实时特征变更推送,哨兵系统订阅,异步解耦 | Apache Kafka / Pulsar |
| 分发层 | 批量导出通道 | 每日特征快照导出至数据湖,供模型训练与回测使用 | S3 / HDFS / Airflow |
2.3 特征计算策略:实时 vs 离线
特征计算需根据时效性要求与计算复杂度选择不同策略。实时计算追求低延迟,离线计算追求高吞吐与复杂逻辑。
关键决策: 对于坏账率哨兵系统,实时特征用于在线拦截,P99 延迟必须控制在 50ms 以内;离线特征用于回测与模型迭代,允许分钟级延迟。
2.4 特征存储设计:在线与离线协同
特征存储采用冷热分离架构,在线存储追求极致性能,离线存储追求低成本与高压缩比。
- 在线存储 (Hot Tier): 使用 Redis Cluster 或 Tair,数据全量内存化,支持毫秒级 KV 查询。Key 设计为
feature:{entity_id}:{feature_name},Value 为序列化后的特征值及元数据(时间戳、版本号)。设置合理的 TTL(通常 7~30 天),避免内存膨胀。 - 离线存储 (Cold Tier): 使用 HBase 或 Parquet 格式存储于 HDFS/S3。按天分区,列族设计按特征主题划分(如
cf:credit、cf:behavior)。支持 Snappy 压缩,存储成本降低 60% 以上。 - 特征血缘与版本: 每个特征记录其衍生 SQL/代码版本、上游数据源、计算时间戳。使用 Feature Registry 统一管理,确保回测时可精确复现历史特征。
2.5 特征分发与哨兵集成
特征分发是连接特征服务与坏账率哨兵系统的关键环节。分发策略需保证数据实时性、顺序性与至少一次语义。
- 实时推送通道: 特征计算完成后,通过 Kafka 将特征变更事件推送给哨兵系统。每条消息包含
entity_id、feature_name、feature_value、event_timestamp。哨兵消费端按entity_id分区,保证同一实体的特征顺序消费。 - 批量回放通道: 回测场景下,哨兵从离线特征库按时间范围批量拉取历史特征快照。支持指定时间点(As-Of Join)精确还原当时特征状态,避免未来数据泄露。
- 一致性保障: 采用“离线批计算 + 在线流计算”双链路校验。每日离线特征与实时特征进行比对,差异超过阈值触发告警。哨兵系统在回测时优先使用离线特征,确保结果可复现。
注意: 特征分发必须处理“迟到数据”问题。实时流中可能出现乱序事件,建议在哨兵侧设置 watermark 机制,允许一定时间窗口内的数据修正,避免因数据延迟导致误判。
2.6 架构关键指标与 SLA
下表汇总特征服务架构的核心 SLA 指标,作为系统设计与运维的基准:
| 指标项 | 目标值 | 测量方式 |
|---|---|---|
| 在线特征查询 P99 延迟 | < 50 ms | APM 工具(如 SkyWalking)采样统计 |
| 实时特征计算延迟 | < 200 ms (端到端) | 事件时间戳与消费时间戳差值 |
| 离线特征产出时间 | T+1 08:00 前完成 | 调度系统(Airflow)DAG 完成时间 |
| 特征数据一致性 | 99.99% | 离线 vs 在线特征日对账 |
| 系统可用性 | 99.95% | 月度无故障时间 / 总时间 |
| 特征存储容量 | 支持 100TB+ 离线存储 | HDFS/S3 使用量监控 |
2.7 架构设计要点总结
- 分层解耦: 接入、计算、存储、分发四层独立部署,任一层的升级不影响其他层。
- 混合计算: 实时计算处理简单高频特征,离线计算处理复杂批量特征,通过定期同步实现“离线计算、在线使用”。
- 冷热分离: 在线 KV 存储保证低延迟,离线列存保证低成本与高压缩,特征血缘保障可追溯。
- 双路分发: 实时 Kafka 推送 + 离线批量导出,满足哨兵系统在线监控与离线回测的双重需求。
- 可观测性: 全链路追踪、延迟监控、数据一致性对账,确保架构健康运行。