缓存前置实践

本文探讨了缓存前置的概念,即将服务端的本地缓存转移到客户端,以提高响应速度并减少网络传输消耗。文章介绍了两种场景:1) 允许数据短暂不一致,客户端通过配置缓存bean实现;2) 实时生效,通过订阅服务端数据更新消息来实现实时刷新客户端缓存。缓存前置能够有效减少RPC调用次数,但可能涉及客户端代码改动。
摘要由CSDN通过智能技术生成

说到缓存,可能最熟悉的是缓存的使用和更新策略。使用缓存的好处很多,可以提高响应速度,减轻数据库等存储的读写压力。关键是变“快”了。使用缓存有很多注意的地方,比如何时使用缓存,什么数据适合缓存,缓存什么时候失效。缓存是提高程序性能的“银弹”,不过这里不是将如何使用缓存,而是介绍缓存前置的思路和一些实践。

缓存前置

这里的缓存指的是应用缓存,或者说本地缓存,那么缓存前置就是指服务端的本地缓存转移到客户端,这样客户端就可以直接客户端的应用缓存了,只有服务端的数据发生更新后才会触发客户端进行一次远程调用。

这样做的好处是客户端可以直接在本地内存就可以获取数据,大大提高了响应速度,从执行链路上看就是减少了网络传输的消耗。

根据场景划分,缓存前置可以分为以下几种场景:

允许数据短暂不一致
实时生效

允许短暂不一致

允许短暂不一致意味着服务端的数据更新不需要立即通知客户端缓存失效,比如2分钟。这样客户端最多有2分钟读到的是脏数据,可以在服务端接口包装一层本地缓存,客户端只需要配置这个bean就可以直接使用了,以Java、dubbo为例,有Ehcache、Caffeine、Guava Cache。

这种场景实现较为简单,但是缺点是客户端原来使用dubbo接口的地方需要改代码,但是可以减少客户端RPC调用的次数,提高响应RT。

实时生效

这种场景复杂一些,意味着dubo接口的包装类不能简单设置一个缓存失效时间,那么怎么解决服务端更新立即通知客户端失效本地缓存呢?使用消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值