布隆过滤器容量不够用如何解决?
作者:程序员马丁
在线博客:https://open8gu.com
note
大话面试,技术同学面试必备的八股文小册,以精彩回答应对深度问题,助力你在面试中拿个offer。
回答话术
当系统运行过程中,布隆过滤器中的元素逐渐追平或超过设置的元素数量,就会引起误判率增加的风险。
为此,我们需要一种预警以及容量不够用的解决方案。我觉得可以通过定时任务扫描布隆过滤器的容量,判断当前容量距离最初设置峰值差量还有多少。
假如设置阈值是 20%,当布隆过滤器中元素满 80% 以上后,就触发告警发邮件或其它通信工具。然后人为或程序操作拉起一个新的布隆过滤器,新布隆过滤器的容量建议为旧容量的 1.5 倍,以此解决布隆过滤器容量问题。
因为布隆过滤器并没有数据同步方法,所以历史数据需要从源表(可能是 MySQL 等数据源)中重新读区并写入到新布隆过滤器。
问题详解
虽然看着上面的思路以及解决方案没有问题,但是如果要实现,需要具备一些细节难点知识。
1. 如何判断布隆过滤器的容量达到阈值?
Redisson 布隆过滤器 RedissonBloomFilter
实现类中有一个 count 方法,返回的是新增到布隆过滤器的数据。