工作中有部分业务并发一直都很高,为了维持高QPS,所以强依赖了redis集群,但是这么做一直是有风险的,如果redis集群挂了或者短时间服务异常的话,是会影响到所有业务的,之前就出现过别的业务由于bigkey把redis cpu打满1分钟,导致我们服务也异常的情况。
为了避免再次出现这种情况,对我们强依赖redis的服务进行了优化,引入了内存作为备用缓存。
架构图如下:
关键点:
1、更新redis缓存时,也同步更新本地内存;
2、在redis失效后,查询本地缓存作为兜底数据;
3、通过分布式定时任务来定时更新本地缓存数据和redis缓存,达到最终一致性;
优点:在redis短暂异常时,可以通过本地内存过度一段时间,而不至于由于redis异常导致连锁的服务不可用;
缺点:本地内存只能保存很有限的一部分核心或者兜底数据,所以在redis异常时,只是起到一个降级作用;
网友评论