阴阳布隆过滤
1 背景
运营活动中,有场景针对新用户发营销,老用户不能参与活动,很自然会将老用户放入一个布隆过滤器的“黑名单”。但布隆过滤器存在假阳性的问题,虽然机率很低,但根据墨菲定律,只要量够大就必定出现。亟需一个方案用最小的成本(时间、空间)应对假阳性。
2 解决方案
训练两个布隆过滤器:
- 白名单过滤器,放入新用户的uid;
- 黑名单过滤器,放入老用户的uid;
请求路径:
假阳性是小概率事件,假设1%(很高了,花点内存还能降到更低),最坏情况是程序判断,到了这一步已经是万分之一的概率。
假设随手所有用户一同参加,也不过是5000次程序校验,绝对可以接受。