本文主要讨论分布式环境下,缓存如何在软件设计作用、原理、实现方式及注意问题。
缓存的作用
- 减小原始数据访问压力
- 提高资源利用率
缓存的原理
局部性原理
缓存的实现方式
查询算法
- 散列算法,Hash 、 MD5 等
- B数、二叉树、有序二分查找等
存储
- 只将访问量最高的部分数据放入缓存
- 将数据放到比原始IO速率更高的存储介质中
缓存资源回收
- RUL 算法
- 定时清理
- 设置资源有效时间
缓存的存储介质
- CPU 寄存器
- 内存
- 本地文件
- 分布式系统(Memcache 、 Redis)
- 数据库缓存数据表
缓存设计注意的问题
缓存的一致性,Cache coherence
- 避免数据脏读
- 多级缓存的一致性协议
系统的鲁棒性
- 在缓存系统停止服务,但仍能保证整体系统正常运行。因此在使用缓存之前,检查提供缓存系统的有效性。
单机缓存
- 单机缓存是指,将系统资源存放于每个单台服务器上,而不是集中存储与分布式缓存系统中。 缺陷是,如果原数据发生更改,为保证一致性,则必须调用每一台服务器清理或更新缓存。