【一】缓存学习

缓存的工作原理是提高数据读取速度,通过层次化的结构(如一级、二级、三级缓存)减少CPU访问内存的时间。硬盘缓存用于预读取和写入优化,而网络缓存则用于减少网络延迟和服务器负载。分布式缓存如Memcached用于跨服务器的数据共享,确保一致性。
摘要由CSDN通过智能技术生成

工作原理

缓存的工作原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在CPU缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。
扩大静态RAM作为缓存是一个非常愚蠢的行为, 但是为了提高系统的性能和速率,必须要扩大缓存, 这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存, 这些高速动态RAM速率要比常规动态RAM快,但比原来的静态RAM缓存慢, 把原来的静态RAM缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。

缓存的作用

硬盘的缓存主要起三种作用:

  • 预读取
    磁盘读取数据会一次读取好几个簇存入缓存,当读取下一个簇就直接从缓存获取
  • 写入
    并不会马上写入,而是先读取到缓存中,在磁盘空闲时写入,掉线时,磁盘会借助惯性把数据写入暂存区域
  • 临时存储
    会把访问次数高的数据存入缓存,缓存大不一定效率就高,存在算法(命中率)
    算法是和缓存容量相辅相成,大容量的缓存需要更为有效率的算法,否则性能会大大折扣,从技术角度上说,高容量缓存的算法是直接影响到硬盘性能发挥的重要因素。更大容量缓存是未来硬盘发展的必然趋势。

技术发展

因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

一级缓存

位于CPU内核的旁边,是与CPU结合最为紧密的CPU缓存。
一级缓存可以分为一级数据缓存(Data Cache,D-Cache)和一级指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据以及对执行这些数据的指令进行即时解码,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

二级缓存

二级缓存(Level2cache),它是处理器内部的一些缓冲存储器,其作用跟内存一样。
二级缓存是比一级缓存速率更慢,容量更大的内存,主要就是做一级缓存和内存之间数据临时交换的地方用。为了适应速率更快的处理器p4ee,已经出现了三级缓存了,它的容量更大,速率相对二级缓存也要慢一些,但是比内存可快多了。 缓存的出现使得cpu处理器的运行效率得到了大幅度的提升,这个区域中存放的都是cpu频繁要使用的数据,所以缓存越大处理器效率就越高,同时由于缓存的物理结构比内存复杂很多,所以其成本也很高。

三级缓存

L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理内存会更有效,故它比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。

超级缓存

SuperCache,也就是超级缓存,计算机的速度瓶颈主要在于机械硬盘的读写速度,SuperCache就是给硬盘的读写用高速内存来做缓存,是大内存机器的提速首选,服务器的必备利器。
硬盘上没有文件的概念,只是用户指定大小的一个一个小格子,例如32k,硬盘上某个小格子里面的内容被读取了,则被缓存在内存里面,下次还读这个小格子的时候,直接从内存读取,硬盘没有任何动作,从而达到了加速的目的。

网络缓存

Web内容可以缓存在客户端、代理服务器以及服务器端。
好处:
(1)减少网络流量,从而减轻拥塞。
(2)降低客户访问延迟,其主要原因有:
①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取,从而减小了传输延迟;
②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取。
(3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程服务器负载。
(4)如果由于远程服务器故障或者网络故障造成远程服务器无法响应客户的请求,客户可以从代理中获取缓存的内容副本,使得WWW服务的鲁棒性得到了加强。
Web缓存系统也会带来以下问题:
(1)客户通过代理获取的可能是过时的内容。
(2)如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。因此在设计Web缓存系统时,应力求做到Cache命中率最大化和失效代价最小化。
(3)代理可能成为瓶颈。因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少同客户直接和远程服务器相连的效率一样。

网络缓存解决根本问题

既然影响网络速率的原因是由距离和光速引起,那么加速Web访问的唯一途径就是缩短客户端与网站之间的距离。通过将用户频繁访问的页面和对象存放在离用户更近的地方,才能减少光速引入的延时,同时由于减少了路由中的环节,也相应地减少了路由器、防火墙和代理等引入的延时。

网络缓存是一种降低Internet流量和提高终端用户响应时间的新兴网络技术。它的观念来自于计算机和网络的其他领域,如流行的Intel架构的CPU中就存在缓存,用于提高内存存取的速率;各种操作系统在进行磁盘存取时也会利用缓存来提高速率;分布式文件系统通常也通过缓存来提高客户机和服务器之间的速率。

代理缓存的策略
代理缓存的工作原理

分布缓存

分布式缓存系统是为了解决数据库服务器和web服务器之间的瓶颈,如果有多台服务器用作缓存,就要考虑缓存服务器的负载均衡。

使用Memcached分布式缓存服务来达到保存用户的会话数据,而达到各个功能模块都能够跨省份、跨服务器共享本次会话中的私有数据的目的。每个省份使用一台服务器来做为Memcached服务器来存储用话的会话中的数据,当然也可以多台服务器,但必须确保每个省份的做Memcached服务器数量必须一致,这样才能够保证Memcached客户端操作的是同一份数据,保证数据的一致性。

会话数据的读取

系统所有模块读取会话数据的Memcached客户端服务器列表都设为本省Memcached服务器地址的内网IP来向Memcahed服务器中读取会话数据。

同一会话的确认

使用Cookie来保持客户与服务端的联系。每一次会话开始就生成一个GUID作为SessionID,保存在客户端的Cookie中,作用域是顶级域名,这样二级、三级域名就可以共享到这个Cookie,系统中就使用这个SessionID来确认它是否是同一个会话。

会话数据的唯一ID

会话数据存储在Memcached服务器上的唯一键Key也就是会话数据数据的唯一ID定义为:SessionID_Name, SessionID就是保存在客户端Cookie中的SessionID,Name就是会话数据的名称,同一次会话中各个会话数据的Name必须是唯一的,否则新的会话数据将覆盖旧的会话数据。

会话的失效时间

会话的失效通过控制Cookie的有效时间来实现,会话的时间设为SessionID或Cookie中的有效时间,且每一次访问SessionID时都要重新设置一下Cookie的有效时间,这样就达到的会话的有效时间就是两次间访问Cookie中SessionID值的的最长时间,如果两次访问的间隔时间超过用效时间,保存在SessionID的Cookie将会失效,并生成新的SessionID存放在Cookie中, SessionID改变啦,会话就结束啦。Memcached服务器中会话数据的失效,每一次向Memcache服务器中添加会话数据时,都把有效时间设为一天也就是24小时,让Memcached服务使用它内部的机制去清除,不必在程序中特别做会话数据的删除操作。数据在Memcache服务器中有有效时间只是逻辑上的,就算是过了24 小时,如果分配给Memcached服务的内存还够用的话,数据还是保存在内存当中的,只是Memcache客户端读取不到而已。只有到了分配给Memcached服务的内存不够用时,它才会清理没用或者比较旧的数据,也就是懒性清除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值