ToB企服应用市场:ToB评测及商务社交产业平台
标题:
分布式系统架构7:当地缓存
[打印本页]
作者:
吴旭华
时间:
9 小时前
标题:
分布式系统架构7:当地缓存
这是小卷对分布式系统架构学习的第10篇文章,在开始学习分布式缓存之前,先来学习当地缓存的理论底子,相识为什么需要用缓存
1.引入缓存的影响
我们在开辟时,用到缓存的情况,无非就是为了淘汰客户端对相同资源的重复请求,低落服务器的负载压力。引入缓存后,既有利益也有弊端
引入缓存负面影响:
开辟角度,增长了系统复杂度,需思量缓存失效、更新、同等性题目
运维角度,缓存会掩盖一些缺陷题目
安全角度,缓存大概泄密某些保密数据
引入缓存的来由:
为了缓解CPU压力
,将实时计算运行结果存储起来,节流CPU压力
为了缓解I/O压力
,将原来对网络、磁盘的访问改为对内存的访问
2.缓存的属性
选择缓存时,主要思量吞吐量、命中率、扩展功能、分布式支持。 前3个这篇文章会讲,下一篇再讲分布式缓存
2.1吞吐量
并发场景下,每秒操作数OPS,反映了缓存的工作服从
如Java8并发包的ConcurrentHashMap,线程安全实现原理是CAS+synchronized锁单个元素。但是该类仅有缓存功能,没有命中率、淘汰计谋、缓存统计等功能
并发场景下,不可制止的会有读写数据带来的状态竞争题目,当前有2种处理套路:
以Guava Cache为代表的同步处理机制
:在访问缓存数据时,一并完成缓存淘汰、统计、失效等状态变更操作,通太过段加锁等优化手段来尽量淘汰数据竞争。
以Caffeine为代表的异步日志提交机制
:参考经典的数据库设计理论,把对数据的读、写过程看作是日志(即对数据的操作指令)的提交过程。
Caffeine使用了环形缓冲区来记录状态变动日志,为进一步淘汰数据竞争,Caffeine给每个线程都设置了专用的环形缓冲区,如下是Wikipedia上的环形缓冲示意:
环形缓冲区结构中,读取和写入是一起进行的,只要读取指针不落伍于写指针一圈,这个操作可以永久进行下去,容纳无穷多的新字符。
如果不满足,则必须壅闭写指针,等候读取清空缓冲区
2.2 命中率与淘汰计谋
缓存的容量是有限的,也因此需要主动地实现淘汰低价值目标,也就是缓存淘汰计谋
主要实现方案有三种:
第一种:FIFO(First In First Out)
即
优先淘汰最早进入被缓存的数据
。FIFO 的实现十分简单,但一般来说,越是频繁被用到的数据,每每越会早早地被存入缓存之中。
以是这种淘汰计谋,很大概会大幅低落缓存的命中率
第二种:LRU(Least Recent Used)
即
优先淘汰最久未被使用访问过的数据
。LRU 通常会采取 HashMap 加 LinkedList 的双重结构(如 LinkedHashMap)来实现。每次缓存命中时,将命中对象调整到LinkedList的头部,每次淘汰从链表尾部清算
存在题目:如果热门数据一段时间没被访问,就会被淘汰;
第三种:LFU(Least Frequently Used)
优先淘汰
最不经常使用的数据
。LFU 会给每个数据添加一个访问计数器,每访问一次就加 1,当需要淘汰数据的时候,就清算计数器数值最小的那批数据。
缺点:每个数据都需要维护计数器,未便于处理随时间变革的热门数据
以上只是列了三种底子的淘汰计谋,实际Caffeine 官方还订定了两种高级淘汰计谋:ARC(Adaptive Replacement Cache)和LIRS(Low Inter-Reference Recency Set),更复杂的淘汰计谋都是为了提高命中率的。
3.扩展功能
缓存不是只实现一个Map接口就可以的,还需要一些额外的功能,下面列出缓存的扩展功能:
加载器
:从被动放入,变为主动通过加载器去加载指定 Key 值的数据
淘汰计谋
:支持用户根据需要自行选择淘汰计谋
失效计谋
:缓存数据在超过一定时间内主动失效,Redis的计谋是定时删除、定期删除、惰性删除
事件通知
:提供事件监听器,在数据状态变动时进行一些额外操作
并发级别:如Guava Cache通太过段加锁来实现缓存的并发设置
容量控制:设置初始容量和最大容量
统计信息:命中率、平均加载时间、主动接纳计数等信息
持久化:将缓存数据存储到数据库或者磁盘
4.当地缓存对比
ConcurrentHashMapEhcacheGuava CacheCaffeine访问控制最高一般精良优秀(靠近ConcurrentHashMap)淘汰计谋无多种:FIFO、LRU、LFU等LRUW-TinyLFU扩展功能无,只有底子访问接口并发控制、失效计谋、容量控制等同左同左
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4