2. 实时风控系统架构
实时风控系统是拦截策略的物理载体,其架构设计直接决定了特征计算的时效性与决策的准确性。一个标准的实时风控系统通常划分为四个核心层级:数据采集层、特征计算层、决策引擎层和处置层。每一层各司其职,通过异步消息或同步RPC串联,形成完整的处理闭环。
2.1 整体架构图
下图展示了实时风控系统的四层架构及数据流转路径。用户行为从左侧进入,经过层层加工,最终在右侧输出处置结果。
架构要点:四层架构的核心设计原则是“无状态计算 + 有状态存储”。特征计算层和决策引擎层保持无状态,便于水平扩展;状态(如滑动窗口计数、黑名单)统一存储在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展示时序交互过程。
延迟预算分配:在实时风控系统中,从事件上报到处置结果返回的总延迟通常要求<200ms。建议的延迟预算分配为:采集层<10ms,特征计算层<80ms,决策引擎层<50ms,处置层<30ms,网络开销<30ms。超出预算的特征计算应考虑异步化或预计算。
2.4 架构设计要点总结
- 解耦与异步:层与层之间通过消息队列解耦,采集层和特征计算层之间使用Kafka,特征计算层和决策引擎层之间使用RPC或内存队列,避免同步阻塞。
- 无状态水平扩展:特征计算层和决策引擎层的服务实例不保存本地状态,所有状态(窗口计数、黑名单)统一存储在Redis或分布式缓存中,支持快速扩缩容。
- 反馈闭环:处置层的结果必须回写至特征存储,使后续事件能感知到“该设备已被拦截过”或“该IP已被限流”,形成持续对抗能力。
- 可观测性:每一层都需要暴露延迟、吞吐量、错误率等指标,便于监控系统实时发现架构瓶颈或策略异常。