2. 实时风控系统架构

实时风控系统是拦截策略的物理载体,其架构设计直接决定了特征计算的时效性与决策的准确性。一个标准的实时风控系统通常划分为四个核心层级:数据采集层、特征计算层、决策引擎层和处置层。每一层各司其职,通过异步消息或同步RPC串联,形成完整的处理闭环。

2.1 整体架构图

下图展示了实时风控系统的四层架构及数据流转路径。用户行为从左侧进入,经过层层加工,最终在右侧输出处置结果。

实时风控系统四层架构图 实时风控系统四层架构与数据流 数据采集层 特征计算层 决策引擎层 处置层 HTTP/消息队列 日志采集Agent SDK埋点 第三方数据网关 实时特征算子 滑动窗口聚合 特征存储(Redis) 特征编排引擎 规则匹配器 模型推理服务 策略编排/AB测试 决策缓存 拦截/放行 二次验证(OTP/Captcha) 限流/降级 事件回传/审计 反馈闭环(特征更新/黑名单同步) 说明:数据流从左至右为同步/准同步处理;反馈闭环(红色虚线)为异步批量更新,用于特征层的数据刷新。
架构要点:四层架构的核心设计原则是“无状态计算 + 有状态存储”。特征计算层和决策引擎层保持无状态,便于水平扩展;状态(如滑动窗口计数、黑名单)统一存储在Redis或内存网格中,避免数据不一致。

2.2 各模块职责与数据流

下面通过表格和流程描述,详细拆解每一层的内部模块及其数据流转关系。

2.2.1 数据采集层

模块 职责 输入 输出
HTTP/消息队列 接收业务系统上报的实时事件(登录、下单、支付等) 业务请求(JSON/Protobuf) 标准化事件消息
日志采集Agent 从应用服务器采集行为日志,解析并发送至消息队列 原始日志文件 结构化日志事件
SDK埋点 客户端(App/Web)内嵌SDK,采集设备指纹、点击流等 用户交互事件 加密埋点数据
第三方数据网关 对接外部风控数据源(如IP信誉库、手机号风险评分) 外部API请求 第三方风险标签

数据流说明:采集层将所有异构数据统一转换为事件对象(包含时间戳、用户ID、设备ID、行为类型、上下文参数),写入Kafka或Pulsar等消息队列,供下游特征计算层消费。采集层本身不做任何计算,只做格式清洗和简单校验。

2.2.2 特征计算层

模块 职责 输入 输出
实时特征算子 执行原子特征计算(如IP频次、设备关联账号数) 单条事件 原子特征值
滑动窗口聚合 基于时间窗口(1min/5min/1h)统计聚合指标 事件流 + 窗口状态 窗口聚合特征
特征存储(Redis) 缓存高频访问的实时特征,支持毫秒级读取 特征写入请求 特征查询响应
特征编排引擎 根据策略配置,按依赖关系编排特征计算顺序 事件 + 策略元数据 特征向量(Feature Vector)

数据流说明:特征计算层从消息队列中消费事件,先由特征编排引擎解析当前策略需要哪些特征,然后并行或串行调用特征算子和滑动窗口聚合。计算后的特征值写入Redis(设置TTL),同时组装成特征向量传递给决策引擎。特征存储支持决策引擎的实时查询,也用于处置层的反馈闭环更新。

性能关键点:特征计算层是风控系统的“瓶颈敏感”层。滑动窗口聚合通常使用Flink或Spark Streaming实现,算子逻辑应尽量轻量;Redis特征存储的读写延迟必须控制在5ms以内,否则会影响整体决策P99延迟。

2.2.3 决策引擎层

模块 职责 输入 输出
规则匹配器 执行if-then规则(如“IP频次>10则拦截”) 特征向量 规则命中结果
模型推理服务 加载机器学习模型(XGBoost/神经网络),输出风险分数 特征向量 风险评分 + 可解释性标签
策略编排/AB测试 管理策略版本、灰度比例、多策略组合 规则/模型结果 最终决策(通过/拦截/人工审核)
决策缓存 缓存近期相同事件的决策结果,避免重复计算 事件指纹 缓存命中/未命中

数据流说明:决策引擎接收特征向量后,首先查询决策缓存(基于事件指纹MD5),若命中则直接返回历史决策;若未命中,则依次经过规则匹配器、模型推理服务,最后由策略编排模块根据预设的优先级和灰度策略输出最终决策。决策结果同步返回给业务系统,同时异步写入处置层。

2.2.4 处置层

模块 职责 输入 输出
拦截/放行 直接阻断高风险请求,返回错误码或重定向 决策指令 业务响应
二次验证 对中风险请求触发OTP验证、滑块验证或人工审核 决策指令 + 用户信息 验证结果
限流/降级 在系统过载或攻击流量激增时,执行限流或降级策略 系统负载指标 限流响应
事件回传/审计 将完整决策链路写入离线数仓,用于事后分析和模型迭代 全量事件 + 决策日志 HDFS/ClickHouse

数据流说明:处置层根据决策引擎的指令执行具体动作。拦截和放行是同步操作,直接返回给业务系统;二次验证和限流可能涉及异步流程。所有处置结果都会通过反馈闭环(图中红色虚线)回写至特征存储,例如更新黑名单计数器、刷新设备指纹标签,使后续事件能感知到最新的处置状态。

2.3 数据流全景时序

为了更直观地理解一次完整的风控请求如何穿越四层架构,下面用第二个SVG展示时序交互过程。

实时风控请求时序图 一次风控请求的完整数据流时序 业务系统 采集层 特征层 决策引擎 处置层 反馈闭环 ① 上报事件 ② 消息队列 ③ 特征向量 ④ 决策指令 ⑤ 处置结果(同步返回) ⑥ 异步回写 ⑦ 更新特征存储 说明:步骤①-⑤为同步链路,要求P99延迟<100ms;步骤⑥-⑦为异步链路,延迟容忍度在秒级,用于特征更新和模型迭代。
延迟预算分配:在实时风控系统中,从事件上报到处置结果返回的总延迟通常要求<200ms。建议的延迟预算分配为:采集层<10ms,特征计算层<80ms,决策引擎层<50ms,处置层<30ms,网络开销<30ms。超出预算的特征计算应考虑异步化或预计算。

2.4 架构设计要点总结

  • 解耦与异步:层与层之间通过消息队列解耦,采集层和特征计算层之间使用Kafka,特征计算层和决策引擎层之间使用RPC或内存队列,避免同步阻塞。
  • 无状态水平扩展:特征计算层和决策引擎层的服务实例不保存本地状态,所有状态(窗口计数、黑名单)统一存储在Redis或分布式缓存中,支持快速扩缩容。
  • 反馈闭环:处置层的结果必须回写至特征存储,使后续事件能感知到“该设备已被拦截过”或“该IP已被限流”,形成持续对抗能力。
  • 可观测性:每一层都需要暴露延迟、吞吐量、错误率等指标,便于监控系统实时发现架构瓶颈或策略异常。