高可用架构之分布式缓存

来源:互联网 发布:艾丹吉伦 知乎 编辑:程序博客网 时间:2024/06/06 07:05
为什么需要缓存?
加速请求响应时间,响应延迟小
减少对固化存储的读压力

缓存适用场合
静态资源的缓存
较少更改资源的缓存
读多写少场景
不适合场景
频繁更新
读少写多

高可用架构使用的缓存类型有哪些?各自作用是什么?
本地缓存
静态不变的数据
减少网络I/O交互
进程内缓存
和进程相关的动态数据
动态变化数据
不适合固化存储
分布式缓存
缓存相对静态的数据
缓存数据量大 单机无法存放
提高查询速度

高可用架构使用分布式缓存类型?如何选择?
Memcached
Redis
自主研发
业务场景
简单的key-value
-Memcached
复杂的key-value
-计数、链表、集合、哈希等
-Redis
性能要求
Redis单机性能更好
高可用架构缓存冗余如何设计?
缓存高可用保证
缓存7*24
防止穿透到数据库,对数据库冲击
缓存不高可用保证
缓存就是缓存
一旦缓存不可用 查询数据库
那么问题来,数据会不会挂?

高可用架构缓存一致性如何保证?
多份数据副本,数据一致性问题存在
数据库、多份缓存
强一致性较难
分布式锁 分布式事务
追求最终一致性
互联网的特点
先更新缓存再更新数据库
缓存成功 数据库失败 数据保存错误
先更新数据库再更新缓存
数据库成功 缓存失败 缓存脏数据
可行方案
更新数据库 delete 缓存
1秒钟后 再次失效缓存项
设置缓存项Expired Time
失败
记录日志
脚本定期修正
读请求
读缓存 命中直接返回
不命中 读数据库 把结果会填缓存
高可用架构缓存命中率如何保证?
业务不同命中率不同
命中率80%+
相对静态数据缓存
缓存时间长些
定期查看缓存命中情况,适当调整缓存对象
高可用架构缓存设计最佳实践是什么?
业务特点 选用多级缓存
缓存高可用保证
缓存宕机 数据库最大压力评估

原创粉丝点击