黑白名单系统怎么设计 别只讲概念,真正容易出问题的是链路、状态和治理
黑白名单系统别只做一张表:名单类型、优先级覆盖、实时查询怎么落地
这篇直接按线上黑白名单系统来拆,不只讲“查一下有没有命中”,而是把名单来源、优先级、实时生效和治理边界讲清楚。
目标是你看完后,能把黑白名单从一张表升级成可运维、可审计、可实时生效的系统能力。
🦅个人主页
🐼GitHub主页
文章目录
- 黑白名单系统别只做一张表:名单类型、优先级覆盖、实时查询怎么落地
- 先看真实问题:这块能力到底是为了解决什么
- 放到真实风控链路里,它通常长什么样
- 举个具体例子:放到项目里会怎么跑
- 代码示例:黑白名单优先级决策
- 核心数据和配置建议怎么落
- 系统设计时我会优先拆哪几层
- 主体抽象层
- 优先级合并层
- 实时生效层
- 治理审计层
- 真正上线时最容易卡住的点
- 监控和指标建议盯哪些
- 高频坑位复盘
- 1. 把名单当配置表随便改
- 2. 优先级没定死
- 如果面试官问我这块怎么设计,我会这样答
- 结语
先看真实问题:这块能力到底是为了解决什么
黑白名单看起来简单,但一旦场景多了、来源多了、优先级多了,就很容易互相覆盖打架。
- 同一个 user 可能同时在白名单和黑名单里
- 不同业务线都要加名单,但口径不一致
- 名单变更后要求秒级生效,不能等发版
所以这套系统真正要解决的是:名单实体如何抽象、冲突时谁优先、变更如何实时下发、谁能改以及怎么审计。
放到真实风控链路里,它通常长什么样
- 登录风控要加白名单给内部测试账号放行
- 支付风控要加黑名单拦截高风险卡号或设备
- 活动期间运营要临时加放量白名单
- 请求进入风控网关后先提取 userId、deviceId、ip、cardNo 等主体
- 名单查询服务按主体维度批量查询命中项
- 按优先级规则合并结果,输出最终名单决策
- 名单变更通过后台提交后写库并异步刷新缓存
举个具体例子:放到项目里会怎么跑
比如活动期间有一批确定的羊毛党设备要秒封,但同时又有一批客服测试账号必须强制放行,这就是黑白名单系统最常见的冲突场景。
- 设备命中黑名单时先打高危标签,但不直接写死所有场景都拒绝。
- 如果账号同时在白名单里,要看白名单类型是不是“强放行”,以及是否只对测试环境生效。
- 名单命中结果要跟规则结果一起进决策日志,方便后续解释为什么被放行或拦截。
- 运营侧新增名单时要带生效时间、失效时间和场景范围,避免名单永远不清。
代码示例:黑白名单优先级决策
publicDecisionresolve(ListHithit,RiskContextctx){if(hit.inWhiteList("force_pass")){returnDecision.pass("WHITE_LIST_FORCE_PASS");}if(hit.inBlackList("device_black")||hit.inBlackList("account_black")){returnDecision.reject("BLACK_LIST_HIT");}if(hit.inGrayList("observe_only")){returnDecision.review("GRAY_LIST_REVIEW");}returnDecision.next();}核心数据和配置建议怎么落
- 名单表至少区分名单类型、主体类型、主体值、有效期、来源、优先级
- 建议把名单明细和名单变更记录拆表
- 临时名单和永久名单都要支持显式过期时间
系统设计时我会优先拆哪几层
主体抽象层
- 统一抽象 user/device/ip/card/merchant 等主体
- 避免每个场景自造一套名单字段
优先级合并层
- 先定义白名单、黑名单、灰名单的合并顺序
- 同类型名单内部再按优先级和有效期处理
实时生效层
- 名单变更后先落库,再通过 MQ 或配置中心刷新缓存
- 主链路查询优先读缓存,缓存 miss 再回源
治理审计层
- 记录谁新增、谁删除、谁导入、为什么变更
- 高风险名单变更要审批
真正上线时最容易卡住的点
- 先把优先级规则写成明确文档
- 导入名单时要做格式校验和去重
- 临时名单一定要有过期时间
监控和指标建议盯哪些
- 黑名单命中率、白名单命中率
- 名单变更生效延迟
- 缓存命中率、回源耗时
- 人工审核放行后回写名单的效果
高频坑位复盘
1. 把名单当配置表随便改
- 名单其实是风险策略的一部分,必须有审计
- 越常改的能力越要管权限和回滚
2. 优先级没定死
- 同一主体同时命中白黑名单时业务会完全不一致
- 优先级必须平台统一
如果面试官问我这块怎么设计,我会这样答
如果面试官问黑白名单系统怎么设计,我会先讲主体抽象,再讲优先级合并,然后讲实时生效和缓存策略,最后补充变更审计和过期治理。因为名单真正难的不是查,而是多来源、多主体、多优先级下还能保持规则一致。
结语
黑白名单系统看起来像一张表,真正做起来更像一套需要实时、审计和优先级治理的策略基础设施。
想继续看哪块,评论区留个 1 或 2 就行:
- 1 名单优先级设计
- 2 名单实时生效链路
