分布式项目中本地缓存的使用场景

背景:

随着技术的发展,越来越多的项目从一开始的单体架构逐渐的被分布式化(当然如果单体足够你的项目,
就不要舍近求远),那么缓存这一块也会被分布式缓存替代

问题:

如果一个接口被请求过多时(或者产生并发),且这个接口请求的缓存量足够大(当然可能不止一处的缓存,
比如你可能将商品、图片等等基本信息全部放到缓存里要一起拿),
那一时间带来的内存开销就极有可能对系统产生影响

解决方案:

1、从根本上解决缓存问题,比如对这个接口整体返回做一个缓存,这样还算不错,但是维护起来就会增加开发负担,
如果有足够时间精力,可以这样做
2、还有一种就是使用本地缓存对商品等基础信息进行维护,在其他接口调用时也可使用,这样在一台节点上就只保留
了一个缓存副本,内存开销、响应速度都会明显得到改善,具体做法:可以维护一个静态ConcurrentMap,key为具体
业务名,value为List缓存,在获取缓存的地方改为先从这个map里拿,拿不到再从redis里拿,拿完再放到map里即可,
当然维护这个缓存的方式就稍微麻烦点,由于部署是集群的,所以要保证每台节点的本地缓存(副本)都要被维护,因此可以简单利用redis做一个广播消息,在维护的地方发布个订阅消息,然后在消费者端接受到将map里对应的数据清除即可(每一台节点都会收到这个消息并清除map数据,当然重启也没事,重启过后map是空的,重新拿一下就好)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值