3. 系统总体架构设计:分层架构与事件驱动模型
反欺诈实时评分系统要求毫秒级响应、高并发接入与复杂规则计算,单一单体架构无法满足。本章采用分层架构结合事件驱动模型,将系统拆解为接入层、计算层、存储层、决策层四个核心层次,各层职责清晰、解耦独立,通过异步消息与同步API协同工作。
3.1 四层架构总览
分层架构的核心原则是上层依赖下层,下层不感知上层。接入层负责协议适配与流量清洗;计算层执行特征提取与模型推理;存储层提供实时与离线数据支撑;决策层聚合多维度评分结果,输出最终处置指令。
| 层次 | 核心职责 | 关键组件 | 响应要求 |
|---|---|---|---|
| 接入层 | 协议转换、限流、鉴权、请求分发 | API Gateway、负载均衡、WAF | < 5ms |
| 计算层 | 实时特征计算、规则引擎、模型推理 | Flink/Spark Streaming、规则引擎、模型服务 | < 50ms |
| 存储层 | 实时缓存、离线数仓、特征存储 | Redis、ClickHouse、HBase、对象存储 | < 10ms(缓存) |
| 决策层 | 评分聚合、策略编排、处置执行 | 决策引擎、风控中台、消息队列 | < 20ms |
架构设计要点: 接入层与计算层之间采用异步削峰策略,避免突发流量击穿下游;决策层与存储层之间采用读写分离,确保评分链路不受离线分析影响。
3.2 数据流与事件驱动模型
系统采用事件驱动架构作为数据流转的骨架。每个评分请求被封装为一个标准事件,经过接入层发布到事件总线,计算层、决策层分别订阅所需事件类型,实现解耦与并行处理。
3.2.1 核心事件类型
| 事件名称 | 生产者 | 消费者 | 事件内容摘要 |
|---|---|---|---|
ScoreRequest |
接入层 | 计算层 | 设备指纹、用户ID、交易金额、时间戳 |
FeatureComputed |
计算层 | 决策层 | 特征向量、模型分数、规则命中列表 |
DecisionMade |
决策层 | 接入层/存储层 | 最终评分、处置动作、风险标签 |
FeedbackEvent |
业务系统 | 存储层/计算层 | 人工审核结果、逾期标签、申诉记录 |
3.2.2 事件驱动流程
- 请求接入:客户端发起评分请求,接入层完成鉴权与限流后,生成
ScoreRequest事件发布到 Kafka。 - 特征计算:计算层消费
ScoreRequest,从存储层拉取实时特征(如近30分钟交易频次),执行规则引擎与模型推理,产出FeatureComputed事件。 - 决策聚合:决策层消费
FeatureComputed,结合策略编排(如黑名单拦截、模型阈值判定),生成DecisionMade事件。 - 结果回写:接入层消费
DecisionMade,将评分结果返回客户端,同时异步写入存储层用于离线分析。
事件驱动优势: 各层可以独立扩缩容,计算层高峰期可临时增加消费者实例;新增特征或规则时,只需新增事件订阅者,无需修改上下游代码。
3.3 架构图绘制
以下架构图展示四层分层结构、核心组件以及事件驱动的数据流向。图中使用深色节点表示各层关键服务,箭头表示事件流与数据流方向。
3.4 分层架构关键设计原则
- 无状态接入:接入层不保存任何业务状态,所有节点对等,支持水平扩展与灰度发布。
- 计算与存储分离:计算层只负责逻辑处理,不直接持久化数据;存储层提供统一的数据服务接口。
- 决策闭环:决策层拥有最终评分权,计算层产出的特征与分数仅作为决策输入,不直接对外输出。
- 异步为主、同步为辅:核心评分链路采用异步事件驱动,仅对需要实时返回的场景(如支付拦截)保留同步API。
架构避坑提示: 避免在计算层直接调用存储层写入接口,防止特征计算任务阻塞存储写入链路;建议计算层只通过事件总线输出结果,由专用消费者负责持久化。
3.5 分层架构的扩展性分析
以下表格对比各层在不同业务场景下的扩展策略,帮助理解分层架构的弹性能力。
| 场景 | 接入层 | 计算层 | 存储层 | 决策层 |
|---|---|---|---|---|
| 双11流量洪峰 | 增加API Gateway实例 + 动态限流 | 增加Flink并行度 + 消费者分组 | Redis集群扩容 + 读写分离 | 策略缓存预热 + 降级开关 |
| 新增模型上线 | 无变更 | 新增模型服务节点 + 订阅新事件 | 增加特征存储字段 | 配置新策略路由 |
| 离线回溯分析 | 无变更 | 启动离线批处理任务 | ClickHouse查询加速 | 无变更 |
| 故障隔离 | 熔断下游 + 返回默认评分 | 降级规则引擎为静态规则 | 缓存降级为本地缓存 | 切换备用决策树 |
3.6 架构图补充:数据流时序
为更清晰展示事件驱动下的数据流转时序,以下补充一张数据流时序图,聚焦一次完整评分请求的生命周期。
时序设计要点: 步骤2与步骤4之间,计算层可并行执行特征计算与模型推理,通过Flink的异步IO提升吞吐;步骤6中决策层将结果同时发布到接入层(同步返回)和存储层(异步持久化),确保主链路低延迟。