布隆过滤器解决缓存击穿导致消息堆积的问题(无代码,讲思路)
问题描述。
周末消费者所在的服务出现了挂掉的问题,导致网关队列中出现了消息堆积的问题。
要么就是消费者服务挂掉,要么高并发导致消费的线程出现阻塞。
查看了日志得出是消费的线程多次去查询缓存和数据库都没有数据id,且数据杂乱无规律。导致缓存击穿,进而导致高并发查询数据库。
解决:
增加一个hutool类的布隆过滤器或者是set,服务启动时预加载数据库的设备id放进去。业务逻辑中,要查的时候要经过过滤,这样就没问题了。
问题描述。
周末消费者所在的服务出现了挂掉的问题,导致网关队列中出现了消息堆积的问题。
要么就是消费者服务挂掉,要么高并发导致消费的线程出现阻塞。
查看了日志得出是消费的线程多次去查询缓存和数据库都没有数据id,且数据杂乱无规律。导致缓存击穿,进而导致高并发查询数据库。
解决:
增加一个hutool类的布隆过滤器或者是set,服务启动时预加载数据库的设备id放进去。业务逻辑中,要查的时候要经过过滤,这样就没问题了。