关键决策

这一页整理风控系统设计过程中遇到的关键决策点,每个决策都说明了问题、对比过的方案和最终选择理由。

决策 1:规则还是模型

问题

已知风险用规则还是用模型判断?

方案对比

维度规则引擎风险模型
上线速度快,可配置慢,需训练评估
可解释性弱(需可解释性工具)
识别隐蔽模式
抗绕过能力
运维成本高(监控漂移)

决策

两者组合,而不是替代。 规则负责强确定性、可解释、需要快速响应的风险;模型负责综合评分和隐蔽异常。规则先行止血,模型跟进提升识别能力,名单沉淀历史经验。

决策 2:强拦截还是分级处置

问题

命中风险后直接拒绝,还是分级处理?

方案对比

  • 强拦截:损失小,但误伤高,容易伤害正常用户和信任。
  • 分级处置:放行、验证、限速、冻结、审核、拒绝分层,误伤成本可控。

决策

分级处置。 动作越重,误伤成本越高。规则和模型输出分数后,决策引擎按场景配置阈值,输出从放行到拒绝的多种动作。只有明确作弊才强拦截,不确定场景优先二次验证或人工审核。

决策 3:实时判断还是离线分析

问题

风险判断放在实时链路还是离线链路?

决策

在线离线分离。 在线链路负责当前请求,延迟预算严格(登录 50-100ms,下单 100-300ms),只查询特征、命中规则、调用轻量模型。离线链路负责长期学习、攻击复盘、策略评估和特征构建。复杂计算提前离线完成,在线链路只消费结果。

决策 4:名单永久生效吗

问题

确认作弊的实体,是否永久进入黑名单?

决策

不应该。 永久黑名单非常危险,尤其 IP、设备、地址这类可能被正常用户复用的实体。名单要有来源、风险等级、生效和过期时间,支持申诉和撤销。确认作弊的账号进黑名单,设备指纹进灰名单,共享 IP 只提高风险分而不是直接拦截。关系扩散要控制层数和衰减。

决策 5:风控故障时放行还是拦截

问题

风控服务故障时,业务请求如何处理?

方案对比

  • 故障放行:体验好,但作弊趁故障大量涌入,造成损失。
  • 故障拦截:安全,但正常用户也会被挡住,体验崩溃。
  • 按场景分级:低风险放行,高风险转人工或限额。

决策

按场景分级。 登录、浏览倾向放行;支付、提现转人工或降级限额;大促领券临时收紧。用业务风险等级决定故障默认动作,而不是全局一刀切。

决策 6:特征存储选型

问题

在线特征(如同设备注册数、同 IP 频率)用什么存储?

方案对比

  • Redis:低延迟、适合计数器和时间窗口,是默认选择。
  • 专门特征服务:支持复杂特征计算和回填,但引入额外依赖。

决策

在线计数特征用 Redis,key 形如 risk:ip:1.2.3.4:coupon_claim:5m -> count,控制外部依赖数量,必要时本地缓存和超时降级。复杂行为序列、设备指纹和关系图谱放离线特征库,提前算好供在线查询。

决策 7:模型上线方式

问题

新模型如何上线而不造成大规模误杀?

决策

分阶段灰度。 离线评估 → 影子模式(只打分不处置)→ 小流量灰度(低风险动作先试)→ 逐步接入拦截、审核等强动作。上线后持续监控模型漂移(攻击行为变化、活动规则变化、用户群体变化都会让模型效果下降),漂移超过阈值时回滚。

决策 8:决策结果如何返回

问题

风控服务给业务返回什么?

决策

返回动作 + 原因 + decision_id,而不是 true/false。 例如返回”需要验证码,命中规则 rule_1024,风险分 0.83”。decision_id 用于后续用户申诉、客服查询、策略复盘,追踪命中了哪些规则、用了哪些特征。可解释性和可追踪性是风控平台能长期运营的基础。