2. 金融特征存储核心架构设计

金融特征存储平台(Feature Store)的核心架构需要同时满足高并发、低延迟、强一致性与可治理性。本章从分层架构、组件选型、高可用与低延迟设计三个维度展开,为后续搭建提供架构决策依据。

2.1 整体架构分层

金融 Feature Store 采用四层架构:存储层、计算层、服务层、治理层。各层职责清晰,通过标准接口解耦,支持独立扩缩容。

架构设计原则: 存储层负责持久化与多模态数据管理;计算层负责特征工程与离线/实时计算;服务层负责在线特征获取与高并发路由;治理层负责元数据管理、血缘追踪与质量监控。
金融 Feature Store 四层架构总览 治理层 元数据管理 · 血缘追踪 · 质量监控 · 特征目录 · 访问审计 服务层 在线特征获取 API · 批量导出 · 特征路由 · 缓存加速 · 限流熔断 计算层 离线批处理 (Spark) · 实时流处理 (Flink) · 特征回溯 · 特征变换 存储层 在线 KV 存储 · 离线 OLAP 存储 · 对象存储 · 消息队列 · 时序存储 说明: • 治理层贯穿所有层级,元数据与血缘信息从各层采集。 • 服务层与存储层之间通过缓存层(Redis/Memcached)降低延迟。

2.2 各层详细设计

2.2.1 存储层

存储层是 Feature Store 的基石,需要同时支撑在线低延迟查询与离线大规模分析。采用多模态混合存储策略:

  • 在线 KV 存储: Redis Cluster / TiKV,用于实时特征查询,P99 延迟 < 5ms。
  • 离线 OLAP 存储: ClickHouse / StarRocks,用于特征回溯、批量导出与训练集生成。
  • 对象存储: MinIO / S3 兼容存储,用于特征快照、历史版本与原始日志归档。
  • 消息队列: Kafka / Pulsar,用于实时特征事件流转与流计算衔接。
  • 时序存储: InfluxDB / TimescaleDB,用于监控指标与特征时效性追踪。
存储类型 典型组件 核心用途 延迟要求
在线 KV Redis Cluster 实时特征获取 < 5ms
离线 OLAP ClickHouse 特征回溯/批量导出 < 1s (批)
对象存储 MinIO 快照/归档 秒级
消息队列 Kafka 实时事件流 < 100ms

2.2.2 计算层

计算层负责将原始数据加工为特征,分为离线批处理与实时流处理两条链路:

  • 离线批处理: Apache Spark 执行 T+1 特征计算,支持窗口聚合、滑动窗口、特征回溯。输出写入离线 OLAP 与对象存储。
  • 实时流处理: Apache Flink 执行毫秒级特征计算,支持事件时间语义、状态管理与精确一次语义。输出写入在线 KV 与消息队列。
  • 特征变换引擎: 内置常用变换算子(归一化、分箱、One-Hot、时序差分),支持 UDF 扩展。
金融场景注意: 实时特征计算必须保证事件时间有序,避免因数据乱序导致特征值错误。建议在 Flink 中设置 allowedLateness 与 watermark 策略。

2.2.3 服务层

服务层是 Feature Store 的流量入口,需要提供高性能、高可用的特征获取服务:

  • 在线特征 API: 基于 gRPC/HTTP2 协议,支持批量特征获取(单次请求最多 100 个特征)。
  • 缓存加速: 本地缓存(Caffeine)+ 分布式缓存(Redis)两级缓存,缓存命中率目标 > 90%。
  • 限流与熔断: 基于令牌桶算法限流,基于滑动窗口熔断,防止下游存储被打爆。
  • 批量导出: 支持按时间范围、实体 ID 列表导出特征数据到训练集群。

2.2.4 治理层

治理层是金融 Feature Store 区别于通用 Feature Store 的关键,满足合规与审计要求:

  • 元数据管理: 特征名称、类型、来源、版本、Owner、标签等统一注册。
  • 血缘追踪: 记录特征从原始数据到最终值的完整加工链路,支持回溯。
  • 质量监控: 特征空值率、分布漂移、延迟监控,异常时自动告警。
  • 访问审计: 记录谁在什么时间获取了哪些特征,满足金融监管要求。

2.3 组件选型原则

组件选型需遵循以下原则,确保平台在金融场景下的稳定性与可维护性:

选型维度 原则 金融场景特殊要求
成熟度 优先选择 Apache 基金会或 CNCF 毕业项目 避免使用 Beta 或社区活跃度低的组件
性能 在线组件 P99 延迟 < 10ms,离线组件吞吐 > 10GB/s 必须支持 TLS 加密传输与 RBAC 权限
一致性 支持最终一致性或强一致性(按特征类型选择) 风控特征必须强一致,推荐特征可最终一致
可观测性 原生支持 Prometheus + Grafana 集成 需要自定义业务指标(特征延迟、命中率)
成本 优先选择存算分离架构,支持独立扩缩容 对象存储作为冷数据层,降低存储成本

2.4 高可用与低延迟设计

金融场景对 Feature Store 的可用性与延迟有极高要求,通常要求可用性 > 99.99%,P99 延迟 < 10ms。以下是关键设计策略:

2.4.1 高可用设计

  • 多副本部署: 服务层无状态化,至少 3 副本跨可用区部署;存储层采用 Raft 协议(如 TiKV)或 Redis Cluster 主从切换。
  • 故障自动转移: 使用 Kubernetes + Istio 实现服务网格级别的健康检查与流量切换。
  • 数据冗余: 在线 KV 存储采用 N+2 副本策略,离线存储采用 EC 纠删码。
  • 容灾演练: 每季度执行一次 Chaos Engineering 实验,模拟节点宕机、网络分区、存储故障。

2.4.2 低延迟设计

  • 两级缓存: 本地堆内缓存(Caffeine)用于热点特征,分布式缓存(Redis)用于次热点特征,冷特征直接查询存储层。
  • 预加载与预热: 根据历史访问模式,在业务低峰期预加载高频特征到缓存。
  • 连接池与多路复用: gRPC 长连接 + HTTP/2 多路复用,减少连接建立开销。
  • 数据本地性: 计算层与存储层尽量同机房部署,避免跨机房网络延迟。
高可用与低延迟设计架构 客户端 / 模型服务 负载均衡 (Istio) Feature API 副本1 Feature API 副本2 Feature API 副本3 本地缓存 (Caffeine) 分布式缓存 (Redis) TiKV 主节点 TiKV 从节点1 TiKV 从节点2 关键设计点: • 服务层无状态多副本 + Istio 流量切换,保障高可用。 • 两级缓存降低存储层压力,P99 延迟控制在 5ms 以内。

2.5 架构设计检查清单

在进入具体搭建前,建议对照以下清单确认架构设计是否完整:

检查项 验收标准 状态
存储层多模态支持 在线 KV、离线 OLAP、对象存储、消息队列均已选型 ☐
计算层双链路 离线批处理与实时流处理链路均已定义 ☐
服务层缓存策略 两级缓存方案已确定,预热机制已设计 ☐
治理层元数据 特征注册、血缘追踪、质量监控方案已明确 ☐
高可用部署 多副本、跨可用区、故障转移方案已确认 ☐
延迟预算 在线特征获取 P99 延迟 < 10ms ☐
架构决策记录: 建议在架构设计阶段同步维护 ADR(Architecture Decision Records),记录每个关键选型的原因、备选方案与权衡。这在金融审计中可作为技术合规性证明。