5.1 分布式缓存架构:架构原理与注意事项
1.什么是缓存 Cache
缓存:存储在计算机上的一个原始数据复制集,以便于访问--维基百科
缓存是介于数据访问者和数据源之间的一种高速缓存,当数据需要**多次读取**的时候,用户加速读取的速度。
比如:
数据库访问速度比较慢:数据文件存储在磁盘上,磁盘 IO 速度比较慢;数据访问时还有锁保持同步,导致数据访问速度比较慢。
缓存(Cache)与缓冲(Buffer)的分别?
缓存:读慢---------加快读速----------写入时,一般不使用 Cache
缓冲:读写都慢-----提高读写速度
提高读速: 低速设备读====>buffer====>高速设备读取。
提高写速: 高速设备写====>buffer====>低速设备写入
2.各种介质数据访问延迟
访问本地缓存----------------------------------------------------100ns
SSD 固态硬盘搜索-------------------------------------------100,000ns
网络数据包在同一数据中心来回一次的时间-----------------500,000ns
磁盘搜索(非 SSD)-------------------------------------10,000,000ns
按顺序从网络读取 1MB 数据-----------------------------10,000,000ns
按顺序从磁盘(非 SSD)读取 1MB 数据-----------------30,000,000ns
跨大西洋网络数据包一次来回延时--------------------150,000,000ns
1 秒钟等于------------------------------------------1,000,000,000ns
3. 缓存数据存储(Hash)表
哈希表作为缓存,要求查询速度快===>哈希表数据结构:数组(特点:连续存储)。(不适合使用链表:数据量比较大时,链表查询耗费性能)
支持随机访问以满足快速定位。时间复杂度:O(1).
写入:1.key 计算 hashcode==>2.hashcode 计算 hash 表位置索引==>3.写入目标位置
读取:1.key 计算 hashcode==>2.hashcode 计算 hash 表位置索引==>3.读取目标位置
4. 缓存的关键指标--缓存命中率
缓存是否有效依赖于能有多少次重用同一个缓存响应业务请求,这个度量指标被称作缓存命中率。
如果查询一个缓存,十次查询九次能够得到正确结果,那么他的命中率就是 90%。
4.1 影响缓存命中率的主要指标
缓存键集合大小---------键越多(占用内存空间大,但是缓存的数据量比较少),键被命中的概率越低;键越少(占用内存少,缓存的数据量越多),缓存的效率越高。
缓存可使用内存空间----缓存可使用内存空间大小决定了缓存对象的平均大小和缓存对象数量。原因:缓存通常在内存中,缓存对象可用空间受到严格限制且相对昂.
如果想缓存更多的对象,就需要删除老的对象,再添加新的对象。替换(清除)对象会降低缓存命中率,因为缓存对象被删除后,将来的请求无法命中。
缓存可用空间越多,物理上能缓存的对象越多,缓存命中率就越高。
缓存对象生存时间-------------------------TTL(Time To Live)。
场景 1:天气预报缓存 15 分钟;
场景 2:电商系统,店铺修改商品价格,价格需要准确小时在整个网站中。
修改价格时,需要让缓存立即失效。
对象缓存的时间越长,缓存对象被重用的可能性就越高。
评论