问题引出
我的上一篇文章有讲到,如何使用布隆过滤器来防止内存穿透,但是有一个小问题,就是我将ID添加到布隆过滤器,以此来排除非法ID大量请求,造成内存穿透的问题,可是当我每一次重启项目,布隆过滤器里面的数据就会失效,就会导致我本地有效ID,被拦截无法查询,下面我提供一个简单有效的一个方法,来防止这种情况出现
解决方法
解决方法非常的简单粗暴,就是在每一次启动的时候,让springboot的执行一段特定的代码,查询数据库将所有的ID都添加到布隆过滤器中,这样我已有的ID都是合法的
这个方法很蠢,很简单,并且会影响项目启动效率,但确实有效
需要频繁启动的项目估计,估计都是学习,也不会在乎这差这么两三次,不需要频繁启动的项目,也只是增加第一次启动时的时间,所以个人感觉问题并不是很大,如果有更好的方法,也欢迎评论区提出,我虚心请教学习
首先,创建出一个类,可以自己选择放在合理的位置
注意在类上加上@component注解,使Spring Boot能够自动检测并执行这个初始化回调类
如果看不懂 bloomFilterService 是个什么东西可以翻阅我的上一篇文章我有简单讲解布隆过滤器的使用
方法的内部非常简单 就是获取全部user 然后循环将id添加到布隆过滤器中
接下来,当我们再次启动项目的时候,他就会先执行一遍这个代码,将已有的ID全部添加合法,这样就不会出现上一篇遗留的问题了
结束语
这是一个非常简单粗暴的一个解决方案,我相信这不是最高效,最有用的,一定会有比我更好的方式,所以也欢迎讨论,谢谢观看