近日被邀请参与产品中一个组件的访问黑名单管理特性的评审,结合近期个人学习的积累,输出本文,作为总结。
按照命题要求,本需求针对访问频繁失败的账户,触发黑名单管理,将账户放入黑名单中。
从上述诉求中,需求明确如下概念:
- 明确被访问的组件。
- 访问行为的来源。
- 如何定义访问是失败的。
- 将账户放入黑名单之后,对业务的影响是什么,比如账户的访问被完全禁止、允许访问但限速等。
实现思路
进入黑名单
- 进入标准,需要明确满足哪些标准,即可将账户放入黑名单中。
- 进入形式,比如
- 人工判断、人工放入
- 算法判断、人工放入
- 算法判断、程序自动放入
退出黑名单
- 退出标准,需要明确满足哪些标准,即可以将黑名单中的账户移出。
- 退出形式,比如
- 人工判断、人工移出
- 算法判断、人工移出
- 算法判断、程序自动移出
判断算法
比如:
- 连续失败次数达到一定规模。
- 给定时间内失败次数超出一定规模。
- 给定时间内并发访问量达到一定规模。
判断算法
比如LRU、令牌桶。
黑名单对业务的影响
账户进入黑名单之后,对于使用账户的访问操作,一般可以采取禁止和降速等管控方式。
实现时结合访问操作的来源,可以采取如下方案:
- 完全禁止
- 部分来源的操作,完全禁止
- 降低访问频率
- 部分来源的操作,完全禁止
- 禁止特定业务的访问
- 降低特定业务的访问频率
黑名单的规格
- 黑名单中记录的数量
- 保留的时长,包括最小时长、最大时长
- 黑名单的访问并发度
- 受黑名单影响的特性的清单