访问黑名单的实现方案

近日被邀请参与产品中一个组件的访问黑名单管理特性的评审,结合近期个人学习的积累,输出本文,作为总结。

按照命题要求,本需求针对访问频繁失败的账户,触发黑名单管理,将账户放入黑名单中。

从上述诉求中,需求明确如下概念:

  • 明确被访问的组件。
  • 访问行为的来源。
  • 如何定义访问是失败的。
  • 将账户放入黑名单之后,对业务的影响是什么,比如账户的访问被完全禁止、允许访问但限速等。

实现思路

进入黑名单

  • 进入标准,需要明确满足哪些标准,即可将账户放入黑名单中。
  • 进入形式,比如
    • 人工判断、人工放入
    • 算法判断、人工放入
    • 算法判断、程序自动放入

退出黑名单

  • 退出标准,需要明确满足哪些标准,即可以将黑名单中的账户移出。
  • 退出形式,比如
    • 人工判断、人工移出
    • 算法判断、人工移出
    • 算法判断、程序自动移出

判断算法

比如:

  • 连续失败次数达到一定规模。
  • 给定时间内失败次数超出一定规模。
  • 给定时间内并发访问量达到一定规模。

判断算法

比如LRU、令牌桶。

黑名单对业务的影响

账户进入黑名单之后,对于使用账户的访问操作,一般可以采取禁止和降速等管控方式。
实现时结合访问操作的来源,可以采取如下方案:

  • 完全禁止
  • 部分来源的操作,完全禁止
  • 降低访问频率
  • 部分来源的操作,完全禁止
  • 禁止特定业务的访问
  • 降低特定业务的访问频率

黑名单的规格

  • 黑名单中记录的数量
  • 保留的时长,包括最小时长、最大时长
  • 黑名单的访问并发度
  • 受黑名单影响的特性的清单
posted @ 2024-06-09 17:29  jackieathome  阅读(16)  评论(0编辑  收藏  举报