3. 需求分析:延迟要求(P99 < 50ms)、吞吐量(QPS)、可用性(99.99%)与数据一致性权衡

在欺诈评分API的设计初期,延迟、吞吐量、可用性与数据一致性构成了四个核心约束维度。它们相互制约,必须在架构层面做出明确权衡。本章将逐一拆解这些指标的技术含义,并给出可落地的量化决策依据。

3.1 延迟要求:P99 < 50ms

欺诈评分是典型的在线推理场景,用户等待时间直接影响转化率和用户体验。我们采用P99(第99百分位延迟)作为核心度量,而非平均值。

指标 含义 对架构的影响
P50(中位数) 一半请求在此时长内完成 反映常态性能,但掩盖尾部长尾
P99 99%的请求在此时长内完成 决定超时设置、熔断阈值、资源预留
P999 99.9%的请求在此时长内完成 通常由异常或重试导致,优化性价比低
关键决策:P99 < 50ms 意味着平均延迟必须控制在 10-20ms 以内,才能为尾部抖动留出缓冲。任何超过 50ms 的请求都将被视为SLO 违约。

实现 P99 < 50ms 的技术手段包括:

  • 特征预计算:将离线特征(如历史交易频次、设备指纹)提前写入 Redis/Tair,避免在线 Join。
  • 模型轻量化:使用 ONNX Runtime 或 TensorRT 部署,避免 Python 原生推理的 GIL 瓶颈。
  • 连接池与多路复用:gRPC 长连接 + HTTP/2 多路复用,减少 TCP 握手开销。
  • 缓存策略:对重复查询(如同一设备号、同一 IP)设置本地 LRU 缓存,命中率目标 > 30%。

3.2 吞吐量(QPS)与容量规划

吞吐量需求通常由业务峰值流量决定。我们以每秒查询数(QPS)为计量单位,并考虑突发因子。

场景 平均 QPS 峰值 QPS(突发因子 3x) 所需实例数(单实例 500 QPS)
中小型电商 2,000 6,000 12
大型支付平台 20,000 60,000 120
超大规模(双十一) 100,000 300,000 600
容量规划公式:所需实例数 = (峰值 QPS / 单实例安全 QPS) × 冗余系数(通常 1.5~2.0)。安全 QPS 取单实例压测结果的 70%,预留 CPU 余量应对 GC 和网络抖动。

3.3 可用性:99.99% 的工程含义

99.99% 可用性意味着全年不可用时间不超过 52.56 分钟。对于欺诈评分API,这要求架构具备多活或主备自动切换能力。

  • 计算层:无状态服务,通过 K8s HPA 自动扩缩容,Pod 分布在不同可用区。
  • 缓存层:Redis 集群采用哨兵或 Redis Enterprise 的跨机房复制,RTO < 10s。
  • 模型层:模型文件存储在对象存储(如 S3/MinIO),本地挂载只读副本,避免单点故障。
  • 网关层:多入口 DNS 轮询 + 健康检查,故障时自动摘除节点。
常见误区:不要将 99.99% 可用性等同于“不丢请求”。在极端故障下,允许降级返回(如返回基础风险分或放行),而非无限等待或报错。降级策略需提前与业务方约定。

3.4 数据一致性权衡:最终一致性 vs 强一致性

欺诈评分场景对一致性的要求是分层的。并非所有数据都需要强一致性,盲目追求强一致性会严重拖累延迟和可用性。

数据类型 一致性要求 存储选型 理由
用户实时行为(点击、支付) 最终一致性(秒级) Redis / Kafka + 异步落库 允许短暂延迟,不影响评分准确性
黑名单/白名单 强一致性(读后写可见) MySQL / TiDB + 分布式锁 误放或误杀风险高,必须精确
模型特征快照 最终一致性(分钟级) HBase / ClickHouse 离线批处理更新,不影响在线推理
评分日志 最终一致性(可容忍丢失) Kafka + 批量写入 HDFS 用于审计和回放,不参与实时决策

在架构层面,我们采用CQRS(命令查询职责分离)模式:写入路径走强一致存储,读取路径走最终一致缓存。评分请求优先读取缓存,缓存未命中时回源到强一致存储,并异步回填缓存。

3.5 四维权衡决策矩阵

将上述四个维度整合为一张决策矩阵,帮助架构师在具体场景中快速选择折中方案。

四维权衡决策矩阵 延迟 P99 < 50ms 优先本地缓存+轻模型 吞吐量 QPS 水平扩展+连接池 可用性 99.99% 多活+自动故障转移 数据一致性 分层:最终+强一致 核心权衡关系 • 强一致性 → 增加写入延迟,可能突破 P99 50ms 红线 • 高可用多副本 → 数据同步耗时增加,需异步最终一致 • 高吞吐 → 需更多实例,但实例间缓存一致性变复杂 推荐折中策略 1. 在线路径:最终一致性 + 本地缓存 + 异步写,保证 P99 < 50ms 2. 关键路径(黑/白名单):强一致性 + 分布式锁,牺牲部分延迟但保证正确

3.6 需求文档输出清单

完成上述分析后,需输出以下可量化的需求条目,作为后续架构设计的输入:

  1. 延迟 SLO:P99 < 50ms,P50 < 15ms,超时阈值设为 100ms(含重试)。
  2. 吞吐量目标:稳态 QPS = 业务峰值 × 1.5 冗余,单实例安全 QPS 通过压测确定。
  3. 可用性目标:全年 99.99%,允许每月不超过 4.38 分钟不可用。
  4. 一致性等级:在线特征最终一致(秒级),黑/白名单强一致(线性一致性),日志最终一致(可丢失)。
  5. 降级策略:当依赖服务(如 Redis、模型推理)不可用时,返回默认风险分(如 0.5)并异步告警。
架构师提示:需求分析阶段最容易犯的错误是“既要又要”。必须与产品经理、业务方明确:当延迟与一致性冲突时,优先保证延迟;当可用性与一致性冲突时,优先保证可用性。欺诈评分是在线服务,不是离线数仓。