缓存使用引起的思考

最近和缓存打交道比较多,像redis,memached,localCache等,也遇到一些坑

记录下自己因缓存而引起的思考

 

个人觉得缓存的思想是一种囤货的思想,快速拿取囤货,如果囤货miss,再去买miss的货回来

缓存的思想在计算机的世界屡见不鲜

从CPU、内存、多级缓存来看缓存为了解决硬件速度不一致的问题

再到我们常用的memcached、localCache

很多优秀的开源开框架都用了缓存的思想,比如Spring,Mybatis,Hibernate

 

使用本地缓存解决热点数据问题,使用memcached扛住大量读请求

使用了缓存,就有可能会出现数据不一致的现象

接受短暂、偶发的数据不一致问题

为了高并发和可用性就会牺牲一部分的一致性

当数据实时性要求并不高时,完全可以接受短暂的不一致

我们需要做好的就是设置好缓存的过期时间以及准确的回源机制

使用从库也是为了扛住读压力,我们既然选择了冗余备份的从节点,就要接受短暂的主从延迟

必要时候,也可以直接读写库

再往其他方面想一下,CAP理论,可用性和一致性不可兼得

软件和架构设计都是这个道理,不同的方案和设计都有其优缺点

单点,部署运维成本低但是摆脱不了单点故障,扛不了多少流量

冷备,避免了单点故障,冗余部署,浪费资源,而且长期冷备切流时又没办法保证系统不出问题

分布式,在可用性、高并发上有大大提升,但是又避免不了数据的一致性

在注册中心的场景下,显然可用性的要求更高

但涉及金额财务,数据的一致性要求更高

没有最好的,只有更合适的,选择在当前业务和场景的优点大于缺点的方案和设计

 

2人评论了“缓存使用引起的思考”

回复 汪明鑫 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部