最近和缓存打交道比较多,像redis,memached,localCache等,也遇到一些坑
记录下自己因缓存而引起的思考
个人觉得缓存的思想是一种囤货的思想,快速拿取囤货,如果囤货miss,再去买miss的货回来
缓存的思想在计算机的世界屡见不鲜
从CPU、内存、多级缓存来看缓存为了解决硬件速度不一致的问题
再到我们常用的memcached、localCache
很多优秀的开源开框架都用了缓存的思想,比如Spring,Mybatis,Hibernate
使用本地缓存解决热点数据问题,使用memcached扛住大量读请求
使用了缓存,就有可能会出现数据不一致的现象
接受短暂、偶发的数据不一致问题
为了高并发和可用性就会牺牲一部分的一致性
当数据实时性要求并不高时,完全可以接受短暂的不一致
我们需要做好的就是设置好缓存的过期时间以及准确的回源机制
使用从库也是为了扛住读压力,我们既然选择了冗余备份的从节点,就要接受短暂的主从延迟
必要时候,也可以直接读写库
再往其他方面想一下,CAP理论,可用性和一致性不可兼得
软件和架构设计都是这个道理,不同的方案和设计都有其优缺点
单点,部署运维成本低但是摆脱不了单点故障,扛不了多少流量
冷备,避免了单点故障,冗余部署,浪费资源,而且长期冷备切流时又没办法保证系统不出问题
分布式,在可用性、高并发上有大大提升,但是又避免不了数据的一致性
在注册中心的场景下,显然可用性的要求更高
但涉及金额财务,数据的一致性要求更高
没有最好的,只有更合适的,选择在当前业务和场景的优点大于缺点的方案和设计
说点什么
2 评论 在 "缓存使用引起的思考"
强啊,牛逼鑫
屁