关键决策
这一页整理风控系统设计过程中遇到的关键决策点,每个决策都说明了问题、对比过的方案和最终选择理由。
决策 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 用于后续用户申诉、客服查询、策略复盘,追踪命中了哪些规则、用了哪些特征。可解释性和可追踪性是风控平台能长期运营的基础。
