缓存技术

2024-05-09

缓存技术(共12篇)

缓存技术 篇1

一、引言

据业内权威统计, 2010年全球每月网络数据流量达到20EB;到2015年, 这个数值将达到81EB, 是5年前的4倍, 且其中61%为视频数据, 这预示着互联网洪水时代即将来临。一味的提高带宽从高额的带宽费用角度来考虑, 很多企业也承受不起。而很多企业利用流量控制软件虽然能缓解网络瘫痪的问题, 但是还是不能满足用户对网络下载高流量的需求。

当今互联网络的发展从2000~2005年的“互联互通”阶段 (保证基本的网页浏览、通信工具的使用、电子邮件的收发等简单的联通发展) 走向2005~2010年的“应用成长”阶段 (网络游戏的趋势型扩张、数字办公OA技术等多种网络软件的应用发展) , 直到2010~2015年的“注重体验”阶段 (包括视频体验、特别是移动通信设备的视频体验包括Ipad、Iphone等移动设备的网络视频体验需求) , 网络视频正以大容量、大规模的数据形式出现在网络流量中最耗费网络带宽的部分。这导致网络带宽的增长速度远远低于用户的需求, 网络建设的成本不堪重负。

为了缓解网络带宽的压力、应用网络数据的快速增长, 我们希望利用网络缓存技术在未来解决我们“网络体验”阶段所面临的难题。

二、网络缓存技术应用的几种方法

(一) 热点数据统计法。

通过对定期校园网内的下载数据资料进行统计分析发现这些数据中近45%~68%的部分是相同的数据内容, 我们把这部分相同的数据资料称为热点数据, 如果把热点数据保存至内网服务器, 用户需要下载这部分数据时直接从内网下载, 就可以有效地节省理论统计上的带宽了。我们可以看出网络缓存的性能跟热点数据的命中率成正比关系, 热点数据命中率越高, 网络缓存性能越高, 所以要提升缓存的性能就必须为缓存选择合适的算法来提高热点数据命中率。由于服务器可以保存的热点数据容量是有限的, 及时地更新热点数据使之最大效应化, 需要利用热点数据淘汰算法, 目前使用最多的有两种算法:最近最少访问算法 (Least Recently Used, LRU) , 这种算法连续地检测数据访问, 识别出长时间没有被访问到的热点数据。LRU直接释放掉这些数据或者标记它们为可重用。这种算法基于这样一种假设:如果一个热点数据已经很久没有被访问下载, 那么很可能以后它也不会被访问。最近访问算法 (Most Recently Used, MRU) , 这种算法与LRU相反。在MRU算法中, 最近被使用的热点数据将被释放或标记为可重用。这种算法基于的假设是:如果一个热点数据已经被下载过了, 那么在之后的一段时间内它可能不会再被访问。通过以上两种算法可以及时地淘汰和更新网络缓存中的热点数据。

(二) 主动缓存法。

在校园网的数据访问统计分析中, 我们发现其中占网络热点数据百分比最大的数据资料内容是电视网络视频资源, 这些文件通常容量较大, 下载所需时间较长, 多人在线观看视频会严重影响校园网络的带宽, 导致网络速度缓慢、甚至瘫痪。我们可以通过主动缓存的方式在夜间上网用户数量较少、热点服务器下载外网网络数据任务不重的时间段, 让网络缓存服务器主动下载一些访问量高的主流视频网站 (如优酷、迅雷、土豆等) 上的点击率高、排行榜靠前的热门电影、热门视频, 这样在白天用户访问的时候就可以直接从热点服务器上访问了, 从而缓解了校园网络带宽的压力和热点数据服务器的下载负担。

(三) 视频切片法。

前面我们提到, 很多用户在访问视频的时候可以从网络热点服务器上下载来节省带宽, 面对更多的用户数时, 完整地提供整部电影或视频也会对热点服务器造成带宽压力, 可是用户很多时候不能观看完一部完整的视频就会中止观看, 如果我们把网络中的视频A切成若干分片, 在用户访问的时候根据用户需要, 只下载当前用户所需的相应分片内容可以有效地节省带宽, 缓解热点服务器的压力。

(四) 网络缓存的内容更新。

如何保证热点服务器的数据和当前网络中的数据是一致的是网络缓存技术的重要一环, 也是确保数据一致性和及时性的要求。在每次有用户发出网络资源申请时, 热点数据服务器在检查自己包含用户所需的资源时, 会首先和外网服务器的资源进行数据比对 (对数据包包头进行数据检查) , 如果一致则由内网缓存服务器向用户提供资源, 如果不一致则首先由热点服务器从外网服务器下载所需资源进行更新后, 再向用户提供所申请的资源。

(五) 网络缓存的内容管理。

通过热点服务器备份网络资源。随着时间的迁移, 服务器的容量会达到饱和状态, 如何放入更新的资源替换哪些已经不会或很少被访问的数据资源是非热点资源清理的任务。非热点资源清理通过热点数据淘汰算法来实现, 它执行的条件是:当热点服务器硬盘容量达到既定阀值 (如85%) , 我们就要把热点最低、存放时间最久、最近下载次数最少的数据资源删除, 直至清理出5%的硬盘空间。

(六) 网络缓存的设备扩容。

我们可以对多台网络缓存设备进行扩容, 采用云模式进行部署, 以虚拟的方式从逻辑上形成一台网络缓存设备, 并进行负载均衡技术的加载使得数据可以通过多通道的形式进行传输, 缓解单线的网络数据流量压力。

三、结语

网络缓存技术是一个在未来有着重要研究价值的领域, 现在很多网络设备厂商都在积极地研究相应的网络缓存设备来迎接互联网的洪水时代, 用少量的资本投入就可以得到更稳定、高效的网络带宽, 是网络互联网时代的需求。本文针对网络缓存技术中对热点数据的提出, 通过自动缓存、视频切片、内容更新、非热点数据资源清理等方法提出了对未来网络缓存技术发展、缓存设备开发、网络缓存技术应用的新思路。

参考文献

[1].G.Somasundaram Alok Shrivastava.信息存储与管理[M].北京:人民邮电出版社, 2010

[2].鲁士文.存储网络技术应用[M].北京:清华大学出版社, 2010

缓存技术 篇2

1.我们先在电脑中打开QQ,然后在登录界面找到导航菜单中的“设置”图标 点击进入

2.现在我们在里面找到“系统设置”再找到“基本设置——》文件管理-”立即清理“ 如下图所示,

3.如果你缓存文件比较多扫描缓存文件需要一定的时间。

4.扫描完之后我们就可以直接点击“全部删除”就可以清除缓存了,当然我们也可以勾选上自动清理的qq产生的缓存文件的勾选项,以后就会自动清理了。

缓存技术 篇3

【关键字】信息中心网络;内置;缓存技术;ICN;系统

随着互联网技术的不断发展,我国通信模式也在不断的优化与改进,这也促进了信息中心网络覆盖面的扩大。ICN是信息中心网络中重要的内置缓存系统,其与传统缓存系统相比,有着较多的优点,其透明度比较高,在应用的过程中,可以提高用户的满意度。将ICN网络缓存技术应用在信息中心网络系统中,可以更好的对信息进行定位,还可以提高信息传输的效率。缓解网络流量的增长速度,可以降低网络带宽的压力,还可以使网络构架更加透明化,其提高了资源的利用率,而且可以发挥出最大的缓存潜能。本文对ICN缓存进行分析与介绍,希望可以促进内置缓存技术在信息中心网络中的推广。

一、ICN内置缓存技术概述

ICN是一种新型的内置缓存系统,其是对Web、CDN缓存系统的改进与革新,而且应用在信息中心网络中具有较多的优势与特征。ICN缓存网络最大的优点是透明度高、缓存泛在化以及细粒度化。下面笔者结合自身经验,对ICN缓存系统的优点进行简单的介绍,以供参考。

1、ICN缓存的优点

1.1缓存透明度高

传统的缓存技术,主要是应用在流量统计中,其主要是以封闭系统的形式进行工作的,其中Web、P2P、CDN都属于传统的缓存系统。Web缓存系统是基于开放的HTTP协议存在的,其内容主要是域自主命名,但是同一种对象却无法一致识别。P2P主要是基于私有协议,其基于封闭系统,而且很难实现缓存空间共享,所以,P2P缓存的透明度比较度。ICN是一种新型的缓存系统,其可以对上述两种传统的缓存系统进行了优化,可以实现同一种对象命名一致化的功能,还具有较高的缓存透明度。ICN以其优良的特性成为了通用性强、应用面广、开放度高的基础服务。

1.2缓存泛在化

在传统缓存系统中,首先需要确定缓存点的位置,而缓存网络结构多呈树状,其规律性比较强,缓存之间的协同关系一般建立在流量需求以及数学模型中。ICN缓存系统具有较强的缓存泛在化,而且网络化程度高,其缓存点并不固定的,缓存结构具有多变性,节点之间缓存的关系并不明确,利用数学模型,无法准确的分析出缓存协同关系。

缓存泛在化,对缓存内容的可用性提出了较高的要求,相对于传统缓存系统,ICN缓存对象可用性比较清晰,在CDN网络中,缓存系统对于缓存对象的请求,需要对请求的可用性进行判断,还要对缓存时间进行分析,优化解析系统的各个节点,提高系统的动态性,维持系统的一致性。在网络内置缓存环境下,相关技术人员要提高缓存技术的利用率。

1.3缓存细粒度化

传统的缓存一般是以文件作为对象进行存储以及信息的交流,ICN缓存技术主要是以线速形式进行工作,其缓存运行的成本比较高,而且难以满足线速执行的要求。ICN系统会将缓存对象进行统一的划分,其主要以数据块作为缓存的单位,这对缓存粒度也有着较大影响。

我国文件粒度访问的流行度研究比较成熟,由于被访问的频率有着较大差异,所以,为了保证用户观看视频数据的通畅度,必须对其理论模型进行综合性的研究。

以粒度为文件的缓存模型,一般是独立参考的模型,在对缓存对象的流行度进行研究时发现,其流行度与请求序列关系不大,但是针对同一文件,由于chunk间有着较大的关联性,所以,用户在对chunk进行请求时,需要以线性顺序作为开头。将缓存系统中的大文件划分为小chunk后,增加了获取网络节点的途径,而且有利于提升缓存的效率。所以,文件的大小与缓存的效率有较大关系。

2、ICN缓存的主要内容

在研究ICN缓存时,可以从两方面入手,一是优化网络系统性能,二是简化缓存网络。第一类缓存研究,需要设计出多种技术优化方案,而可以从不同的角度对缓存系统的性能进行优化;第二类缓存研究主要建立理论模式,相关工作人员需要建立理论体系,对缓存行为的支撑体系进行研究。

2.1优化缓存系统性能的方式

ICN系统是实现缓存效果的重要系统,为了向用户提供更好的服务,必须找到有效的措施,提高ICN缓存系统的透明度。还要增加缓存网络的内置设施。影响缓存系统性能的因素很多,在对缓存系统性能进行优化时,要了解这些因素之间的影响,这样才能找到最佳的优化途径。相关人员在制定缓存系统优化策略时,需要对缓存节点的大小、资源共享的方式进行综合考虑,还要对缓存对象的可用性以及关注度进行研究,提高缓存资源的共享率以及利用率,提高缓存系统的整体性。

2.2缓存系统建模分析

为了更好了分析与了解缓存网络体系,必须建立缓存网络的理论建模体系,这样也可以分析出缓存网络行为。缓存系统建模与缓存对象的流行度、缓存网络的拓扑结构、管理策略有着较大联系,由于缓存对象在不同的缓存节点有着不同的缓存请求,这些请求之间也有着一定关联性,通过建立数学模型,可以更好的分析出缓存网络建模难点,也可以分析出缓存节点间的联动关系。

二、优化ICN内置缓存系统性能的方法

ICN缓存服务是提高缓存性能的基础,为了优化ICN缓存的性能,首先需要分析出系统透明度、泛在化以及细粒度等特征,还要对缓存机制运行中存在的机遇进行研究。优化缓存网络性能的方法,是ICN缓存研究的重要内容下面笔者对缓存大小规划、缓存空间共享机制、缓存决策策略等多个方面对优化ICN内置缓存系统性能的方法进行介绍。

nlc202309020458

1、缓存大小规划

缓存存储空间的大小,对缓存系统的性能有着较大影响,一般缓存空间越大,其可存储的对象与数据则越多,而且缓存系统命中率也越高。但是,缓存空间越大,其运行的成本以及开销也越多,为了更好的控制成本,必须对缓存空间的大小进行合理的规划。ICN缓存节点主要是以线速方式进行工作,这限制了缓存空间范围的扩大。从缓存大小规划来看,为了优化缓存网络的性能,必须做到以下两个方面的内容。

第一,在规划缓存空间大小时,需要保证系统实质性性能的提升。与传统缓存系统相比,ICN缓存需要满足线速执行的要求,这对节点缓存大小有着一定限制作用。ICN系统在对承载流量以及互联网传输性能进行优化时,需要考虑节点缓存空间的设置效果,而且根据路由器的差异性,缓存系统的配置也有着较大差异。存储器的材质不同,信息访问速度也有着一定差异,所以根据ICN功能的差别,其存储器的配置也需要想要的优化。

第二,缓存资源要做好优化配置工作,在不同的节点,需要配置不同的资源,这样才能提高系统的整体性以及性能。在对网络规划进行预算时,需要考虑缓存资源的分配,还要考虑缓存结构以及网络流量需求等因素。网络拓扑中心是优化缓存系统的重要途径,由于ICN缓存网络的节点具有不确定性,所以,分配缓存空间,是提高信息中心网络性能的有效措施。除此之外,增加非核心节点的数量,也可以扩大缓存控制的大小,有助于提高缓存的效率。在分析缓存网络拓扑结构时,不能只考虑网络中心性指标,相关人员还需要考虑缓存节点与用户的距离以及用户群体小大等内容。

2、缓存空间共享的优化

缓存透明化的一个直接后果是不同的流量、应用类型需要竞争使用有限的缓存资源。由于不同的应用、流量类型具有不同的流量特征,其缓存目标也不尽相同,如何在不同的应用、流量类型之间共享有限的缓存资源,并提供差异化服务,成为ICN中的缓存系统亟需解决的问题。

2.1固定划分的共享

固定划分是指为不同的应用、流量类型划分固定的缓存空间大小.为每类应用、流量分配的缓存空间仅服务于该应用、流量类型,因此,每种应用、流量类型不会干扰其他应用、流量类型的性能。

2.2动态共享

缓存空间的动态共享则在一类应用不占用缓存资源时允许另一类应用占用,实现了缓存空间的统计复用。动态共享策略用于指定不同类型的应用共享缓存的方式,常用的两种策略包括基于优先级的共享策略和基于加权公平的共享策略。基于优先级的共享策略的目的是给予某些应用更高的服务优先级。

三、结语

内置缓存技术是互联网技术不断发展的产物,其对用户观看视频的效果以及质量有着一定影响,优化与改进内置缓存基础,可以提高数据信息的传播效率,也可以促进信息技术的推广与应用。现如今,我国进入了信息時代,整个社会都呈现出了信息技术高速发展的态势,为了缓解流量爆炸与信息传输通道拥堵的现象,必须优化网络构架,实现网络内置缓存的透明化以及泛在化,这样才能保证信息流量传输的稳定性、安全性以及可靠性。ICN缓存网络系统是一项新型的系统,在对该系统进行研究时,笔者与传统缓存技术进行对比,这也有助于对现代缓存系统的完善。

参考文献

[1]孙延龙.路由器常见故障解决方法[J].科技信息. 2009(07)

[2]范萍,李罕伟.基于ACL的网络层访问权限控制技术研究[J].华东交通大学学报. 2004(04)

[3]曾祥绪,张胜利.星环形局域网网络层通信协议的设计[J].湖北工学院学报. 1995(04)

[4]徐涛.网络安全技术研究[J].软件导刊. 2008(09)

作者简介:徐一帆(1992-),男,浙江省江山市人,周口师范学院计算机科学与技术学院2011级网络工程班,研究方向为网络工程

存储领域缓存技术的现状 篇4

在存储系统中,缓存主要用作平滑两级系统之间的性能差异。一般地,在缓存系统中,上层介质的性能高,但价格高、容量小;下层介质的性能低,但价格低、容量大。如果整个缓存系统的命中率较高,那么系统作为整体就能够以较便宜介质的价格,获得较高性能介质的性能和较大容量介质的容量。

缓存用途广泛,主要分为以下几种:

(1)CPU缓存:CPU配有一个或多个缓存,每个缓存都有特殊的用途。例如,用作数据缓存(D-cache)和指令缓存 (I-cache)等。CPU内的缓存,比大容量主存的操作速度要快很多,但容量小得多,目前高端的Intel Xeon E5家族处理器缓存容 量高达45MB,但桌面处 理器的缓 存一般小 于10MB。

(2)页表缓存(Translation Lookaside Bufler,TLB):从主存获取页表项的内存管理单元(Memory Management Unit,MMU)有一个专用的缓存,位于CPU内部、用于加快虚拟地址到物理地址的转换速度,该缓存即页表缓存(TLB)。

(3)磁盘缓存:CPU缓存通常情况是由硬件管理的,也有种类繁多的缓存是由软件管理。磁盘缓存是用于加速磁盘I/O的缓存,并非特指以磁盘为缓存介质的缓存。在主存中的页缓存(page cache)即磁盘缓存的一个例子,该缓存是由内核系统管理。由于缓存容量相对于硬盘的容量较小,因而重复的缓存命中情况相对较少。当然,一个快速的本地磁盘也能缓存相对较慢速的数据存储设备里的信息,例如远程服务器 (Web缓存)、本地磁盘驱动或者光盘库,这就是分级存储管理的主要思想。传统的快速本地磁盘一般是SAS(Serial Attached SCSI)或SATA(Serial ATA)接口的机械硬盘。SAS硬盘容量相对小,而SATA硬盘读写较慢。近年来固态硬盘(Solid State Drives,SSD)技术的逐渐成熟为缓存容量和性能带来巨大的突破, 相对于内存,容量大、价格低;相对于机械硬盘,性能高,因此受到了越来越多的青睐。

(4)Web缓存:Web浏览器、HTTP代理服务器、内容分发网络(Content Delivery Network,CDN)采用Web缓存存储来自远程Web服务器的响应信息,例如静态网页和图片。由于Web缓存中存储信息时往往是热数据,常被重复请求(如访问量极大的门户网站),因而Web缓存减少了大量的广域网络传输,降低了网络带宽的占用,同时也降低了原始Web服务器的压力,提高了网络服务的响应质量。Web浏览器采用内置缓存,一些网络服务提供商或者机构也会采用缓存代理服务器,缓存代理服务器即网络用户共享的一种Web缓存。另一种形式的缓存是P2P缓存,P2P网络有两种缓存形式以加速P2P传输,一种是热数据存放在ISP缓存中,另一种是文件以副本形式缓存在P2P的多个节点中,某个节点请求文件时可就近读取,使得P2P社区实现P2P加速功能。

(5)其他缓存:1DNS(Domain Name Server)服务器缓存域名到IP地址的映射表。2搜索引擎以网页快照的形式缓存搜索过的页面。例如Google为每个搜索结果提供一个“缓存”链接,当原始链接暂时或者永久不可用时,“缓存”链接的作用就凸显了。3分布式缓存,包括合作式缓存,运用多个本地或不同的地理区域的节点为应用提供高可扩展性、高可靠性、高可用和高性能。

1缓存替换算法

缓存替换算法为了提高缓存数据访问命中率,每次从缓存空间中替换再次被访问概率最低的数据块。 不同的替换算法基于不同的方法评估数据块的再次访问概率。根据热度评价方法的不同,我们将现有缓存替换算法分为三类:

1.1基于历史访问信息

该类替换算法利用单个数据块的历史访问信息(Block Access History)评价数据访问热度。基本的热度评价指标有热度(Recency)和频度(Frequency)两种,二者分别对应于LRU(Least Recently Used)和LFU(Least Frequently Used)两种替换算法。LRU算法基于栈式模型(Stack Model)[2],它根据数据块距离上一次访问间距衡量数据块的访问热度;LFU算法基于概率分布模型(Probabilistic Model)[2],它根据数据块的访问频度来衡量数据访问热度。然而不论是栈式模型还是概率分布模型都有其各自局限性[3],因此目前高级替换算法在设计上都兼顾了这两种基本热度评价影响因素,其中最为典型的是ARC(Adaptive Replacement Cache)算法[3],该算法能够以在线自适应方式调节热度评价方法中热度和频度所占比例,从而适用于不同的数据访问模式 类型。目前这类 典型的算 法有:LRU、LFU、MRU[2]、LRU-K[4]、2Q[5]、LRFU[6]、 MQ[7]、LIRS[8]和ARC。

基于历史访问信息类算法(又称经典替换算法)的优点在于热度评价方法在实际应用中开销低。目前, 该类算法被广泛应用于各级I/O系统的缓存管理,例如Flashcache[9]和EnhanceIO[10]等等。而这类算法的缺点同样明显,即算法的性能取决于应用的数据访问模式特点,且同一种算法不能够高效地适用于各种不同类型的数据访问模式。

1.2基于访问模式分类

针对经典替换算法的非普适性问题,该类算法假定任何复杂的应用数据访问模式 (Data Access Pattern)都是由若干个并发执行计算流的数据访问模式所构成,而每个计算流又都具有相对稳定且简单的数据访问模式[11]。基于上述假设,该类算法的基本原理如下:

( 1 ) 模式分类 : 根据计算流的不同将应用数据访问负载在线划分为若干数据访问子集 。

( 2 ) 模式识别 : 在线识别数据访问子集的具体数据访问模式类型 。

(3)模式管理:将已识别类型的数据访问子集划归入不同的模式分区中,并为各模式分区配置适用的替换算法。现有研究中定义了四种基本模式类型:循环、随机、概率分布和扫描,与之适用的算法则分别为MRU、LRU、LFU和FIFO。

(4)容量调节:根据不同模式分区的缓存收益调节分区间的缓存资源分配。由于模式类型的相对简单, 现有研究基本采用基于先验公式的非线性按效调节方法[12];

目前这类算法的典型代表有MG-XY[13]、UBM[12]、ULC[14]、PCC[11]、AMP[15]等。这些算法之间的主要区别在于对计算流的区分,例如UBM是以应用作为基本计算流,PCC则以程序中的I/O访问点作为基本计算流。这类算法的优点在于:由于利用了数据访问模式信息指导数据替换,因此在理论上具有较经典替换算法更高的可优化空间;其缺点在于:模式分类探测在实际应用中所带来的开销较大。

1.3基于数据关联语义分类

该类算法利用诸如数据挖掘等交叉学科方法[16]探测出应用数据访问中所潜在的数据关联语义(Data Correlation Semantics)。在已有相关研究中,数据关联语义具体表现在以下两方面:

(1)频繁访问序列:指应用I/O负载中出现的访问子序列(Frequent Access Sequence)[17],简称频繁序列。利用从应用I/O负载中挖掘得到的频繁序列可以指导缓存技术在替换算法、数据预取和数据副本三方面的优化[18],其中替换算法和数据预取的优化通常是结合在一起的:处理数据替换时将频繁序列中的缓存数据组作为整体优先进行替换(替换算法优化);而在处理数据失效时对失效数据所在频繁序列中的其他数据连同失效数据一起读取(预取策略优化)。显而易见,在结合了数据预取技术后,频繁序列中数据失效代价要显著低于其他离散随机访问数据。目前有代表性的相关研究成果有C-Miner[16]、C-Miner*[19]和DULO[20]。其中C-Miner和C-Miner*利用经典数据挖掘技术发现数据访问中的非线性序列,DULO则利用传统页表跟踪技术(Page Table Tracking)[2]探测数据访问中的线性访问序列。由于时空开销、上级缓存过滤、并发、噪声等方面影响,数据挖掘技术可以获得的频繁序列一般较短。

(2)应用数据语义:指数据的内容和数据访问操作所蕴含的应用管理语义。利用该应用数据语义可以用于智能化的缓存资源使用。目前该类研究主要针对两级缓存架构下的聚合缓存空间利用率问题[21],即如何利用一级缓存失效数据所蕴含的应用管理语义来指导二级缓存空间的管理,以避免两级缓存空间的无效数据冗余[22]。例如X-Ray系统[23]根据Ext2文件系统布局信息[24]识别出主机I/O负载中的元数据更新操作(如inode访问和更新);通过对元数据内容的分析来探测出一级缓存中当前活跃的访问数据;通过优先从二级缓存中替换出一级缓存中的数据,提高磁盘阵列缓存和主机内所构成的两级缓存架构下的聚合空间利用率。目前有代表性的相关研究成果有[21,23,25,26]。内存层缓存去冗理论效果良好,但由于现有的SSD缓存具有比内存高两个数据量级以上的缓存容量,因此对于SSD缓存的内容去冗意义不大。

2缓存一致性

数据一致性对于启用缓存的分布式系统而言是一个重大问题,因为缓存的数据可能过时,是否支持不同节点每次读到数据的最新版,涉及数据的一致性模型选择。

存储一致性模型是系统设计者与应用程序员之间的一种约定。缓存一致性模型可分为顺序相关与时间相关两大类,顺序相关的一致性模型主要用在多处理器环境下的分布式内存系统;而时间相关的一致性模型主要用在多节点下的分布式存储(文件系统级或块设备级)系统。

对顺序相关的一致性模型有两大类:强一致性模型与弱一致性模型。在强一致性模型下,不使用同步操作;在弱一致性模型下,对共享变量的访问需要加锁。

对时间相关的一致性模型也有强一致性与弱一致性区别,但定义相对简单:上层应用能读到数据的最新版即属强一致性,否则属弱一致性。但弱一致性亦有细分,例如,Yahoo的分布式数据平台PNUTS[27]提供比最弱的最终一致性稍强的版本一致性,数据更新带有版本号,用户可读取任意版本、指定版本或最新版本。强一致性一般仅适用于本地系统;对于基于本地局域网络、甚至广域网络,维持强一致性往往导致系统整体性能过低。因此,在实际系统中,根据应用需求,采用不同级别的缓存一致性。例如,在文件系统层,就数据大小而言,文件元数据往往远小于文件数据,因此,带缓存的基于网络的文件系统,文件数据可采用弱一致性,而文件元数据可根据应用场景为局域网络还是广域网络采用强一致性或超时失效的弱一致性。几种常见的一致性模型:

(1)严格一致性(Strict Consistency)[28]:严格一致性模型保证所有最近写入能被系统的其他节点或处理器感知,因此,需要产生更多的消息交互以维持此级别的一致性,从而导致时延增大。对于单节点、单CPU系统,缓存总是严格一致的。

(2)顺序一致性(Sequential Consistency)[29]:所有处理器或节点以相同的顺序看到所有数据的修改。 读操作未必能及时得到此前其他处理器或节点对同一数据的写更新,但是各处理器或节点读到的该数据的不同值的顺序是一致的;

(3)处理器一致性(Processor Consistency)[30]:允许某一个处理器或节点可观察到来自其他各处理器或节点的写入的顺序,但可以不按其实际发生的时间顺序出现。若来自某一个处理器或节点内的多个写入, 必须按顺序出现。在这种一致性下,只要能读到数据即可而不要求数据必须是最新的,因此,提高了系统性能。处理器一致性与先入先出序列FIFO(First Input First Output)一致性意思相同。

(4)因果一致性(Casual Consistency)[31]:因果相关的写操作应对所有进程可见,且顺序一致。但并发写操作在不同机器看来顺序是不同的。因果一致性相比较于顺序一致性,放松了约束条件。

(5)宽松一致性(Relaxed Consistency):宽松一致性又称弱一致性(weak consistency)[32],其不需要其他节点观察到本节点对共享变量所作的所有修改,仅在同步阶段完成后,最后的修改对其他节点可见。

(6)最终一致性(eventual consistency)[33]:最终一致性与时间相关。在没有持续更新的情况下,更新最终会传播到所有节点,各节点数据最终会一致。最终一致性适用于对数据一致性要求不高的场合,例如, Amazon Dynamo系统[34]的购物车服务。

3区分服务

在多应用存储环境下,缓存系统需要同时向多种不同类型的应用提供缓存数据服务,这些不同类型的应用通常又具有各自不同的数据访问模式特点。

大多数传统的缓存系统没有实现服务区分,例如Flashcache等。应用数据访问模式的不同将直接导致传统基于单一替换算法(全局替换算法)的缓存性能低下,其具体问题在于:

(1)非最优资源配置:传统缓存系统[35]所采用的全局替换方式实质是基于需求原则进行缓存资源的分配[36]。在基于需求分配原则下,每个应用的实际缓存容量正比于它对缓存的需求强度。然而,在存储系统中应用的缓存需求强度往往和它的数据访问局部性强弱成反比。这样从缓存收益的角度来看,传统缓存系统被用于多应用存储系统时往往是将更多的缓存资源分配给了系统中的低收益缓存应用。

(2)非高效资源利用:缓存资源的利用率取决于替换算法,对于应用数据访问模式的适用性。然而,同一种替换算法无法高效地适用于各种不同类型的应用数据访问模式[37]。这样传统缓存系统中的单一全局替换算法也就无法适用于多应用存储系统中各种不同类型的应用数据访问模式。

(3)非应用性能隔离:应用性能取决于存储系统的服务质量。在多应用存储系统中,传统缓存不区分应用,对于不同的应用的处理方式是相同的,它们共享缓存空间、I/O带宽等资源。不同类型的应用相互干扰, 原来单一访问模式下性能较好的应用会受到单一模式下性能较差的应用的干扰,缓存效果降低,进而导致性能降低。

目前实现区分服务的缓存系统主要运用于集中存储环 境下,以及虚拟机环境下 (如S-CAVE[38]和vCacheShare[39])。区分不同应用的标准分为以下三种:

(1)基于优先级原则:在存储应用模式下,不同类型的应用通常具有不同的性能需求。例如,当人机交互类应用(在线事务处理和信息检索等)和批处理类应用(数据备份)共享后端存储系统时,前者对I/O处理延迟有较高要求,而后者对I/O吞吐率有较高要求,其中I/O处理延迟受存储系统中的缓存性能影响较大; 而I/O吞吐率则更多取决于存储系统中磁盘子系统的物理I/O性能。由此可知,在上述应用模式下,若为人机交互类应用提供优先缓存服务,则可以在不影响批处理类应用性能前提下有效改善人机交互类应用的性能。

(2)基于需求原则:基于需求的缓存分配方法原则上为缓存需求强度高的应用分配更多的缓存资源。 在集中存储应用模式下,由于应用数据访问模式的不同,基于需求原则的缓存分配方式,将导致系统缓存资源的低效分配。

(3)基于效用原则:效用的缓存资源分配方式原则上为缓存收益高的应用分配更多的缓存资源。不同的效用分配方法通常采用不同形式的效用定义,而效用定义的精度直接影响着资源分配方法的实际应用效果。有效用标准:缓存命中率(hit ratio)、缓存失效率(miss ratio)、缓存有效利用率(rECS)[38]、服务响应时间(QoS)等等。

4典型缓存技术应用

(1)NFS客户端缓存:网络文件系统(Network File System,NFS)[22,40]实现了一种可以让一台计算机通过网络透明地访问另一台计算机上文件的协议,它由SUN公司在20世纪80年代中期研发。NFS利用客户端的内存作为缓存,以文件为基本单元进行缓存,并提供比较弱的数据一致性。

(2)Coda文件系统:Coda文件系统[41,42]是在AFS[42]的基础上针对移动计算环境设计的分布式文件系统,相比于AFS,Coda更注重系统的可用性。Coda在客户端采用本地磁盘作为数据缓存介质,它对网络断开后客户端的行为进行了深入的研究,提出了断开操作(disconnect operation)[42],使得客户端在Coda服务器失效时仍然可以访问关键数据。Coda系统以Volume为单位,把数据映射到独立的文件服务器上,每个客户端通过cache管理器(Venus)动态获取和缓存Volume映射信息。当客户端检测到它与服务器的连接断开后,文件系统服务的请求完全由本地缓存满足,从而允许用户完全在客户端缓存的支持下工作。当缓存不命中时,Coda系统则会向上层应用报错。

(3)DCD系统:DCD(Disk Caching Disk)[43,44]是一种提高“频繁小写”这类应用模式性能的廉价解决方案。其主要思想是:利用普通磁盘的顺序写性能远高于随机写这一特点,将突发性的随机小写以顺序日志的形式记录在缓存磁盘上,当系统空闲时再把这些写入的数据迁移到数据盘。当有写请求时,系统首先检查该请求的大小,如果大于一个预先设定的阈值,则说明该请求的顺序性原本就比较强,于是系统将该写请求直接转发到数据盘;否则,系统先将该写请求写入到内存中的缓冲区(RAM Buffer),若RAM Buffer被写满,再使用日志的形式写到“缓存盘”上。由于日志是顺序写模式,因此,DCD系统在吸收突发性的写请求方面效果很好。

(4)S-CAVE缓存技术:S-CAVE是实现于vSphere ESX中的一种基于管理程序的共享SSD缓存技术,主要用于有效地管理多虚拟机环境下的共享SSD缓存。S-CAVE使用缓存有效利用率(rECS)作为每个虚拟机对缓存的需求指标,并且使用rECS集成一种动态缓存分区机制,在多虚拟机环境下高效地管理缓存。通过比较每个虚拟机缓存空间分配的历史信息,动态地调整缓存空间的分配。S-CAVE在虚拟机运行中,动态地统计每个虚拟机的缓存有效利用率(rECS),并对所有虚拟机的rECS进行排序,为最高rECS值的虚拟机增加缓存空间,为最低rECs值得虚拟机缩减缓存空间。S-CAVE采用写穿(write through)的缓存写策略,适用读多写少的应用。

(5)vCacheShare缓存技术:虚拟化环境中越来越多地采用服务器缓存(SFC,Server Flash Cache)用于I/O加速。在多虚拟机环境中,每个虚拟机的缓存空间分配都是由管理者负责。vCacheShare技术提供了一种动态、能感知负载、策略驱动的缓存框架,持续并且自动地优化SFC空间的划分。vCacheShare的决策是基于多I/O的访问特性的,它采用一个缓存效用模块捕获长期的局部性行为和瞬间的局部峰值。vCacheShare实现于广泛运用的ESXi管理程序中。其与S-CAVE不同,vCacheShare需要考虑的因素包括:虚拟机的优先级、负载的局部性、I/O访问特性、后端设备的服务时间以及一些特殊事件(例如迁移)。影响因子较多,算法相对复杂。vCacheShare实现的缓存写策略是写旁路(write around),同样适用于读多写少的应用。

(6)典型缓存技术应用比较:表1列出了对上述典型的缓存技术应用进行了比较和分析,比较范围包括缓存介质、策略扩展支持、区分服务支持以及系统部署灵活性这四个维度。

通过表1可以看出:非内存类缓存介质正在受到越来越多的关注,主要是因为需要缓存的数据量越来越大,而且随着数据持久性要求越来越高,具有较大容量的非易失性缓存介质受到越来越多的关注。缓存系统目前存在的问题:

(1)不能有效支持多应用共享缓存资源:大部分缓存系统并没有提供一种机制来区分不同的服务质量需求。因此,缓存系统无法针对各类应用合理地配置缓存资源,无法发挥出全局最优性能。

(2)策略可扩展性较差:大多数系统策略比较固定单一,当有针对新应用的策略产生时,无法添加到系统中。虽然有的系统可以支持新策略的添加,但是也仅限于简单策略的添加,当策略较为复杂时,缓存系统无法提供充分的支持。

(3)系统部署不灵活:一些缓存系统或者与文件系统绑定,或者与具体的协议绑定,这就导致了这些缓存系统不能灵活的部署到I/O路径上的各个位置。

5结束语

缓存技术是提高计算机系统性能的重要手段之一,其基本思想:利用数据访问的局部性原理[45],有效减少访问低速介质的次数,提高计算机系统的整体性能。缓存技术从几方面提高了存储系统的I/O性能:

(1)直接从高速介质中获取数据:由于缓存介质相对于下级设备存储介质的性能更高,因此,整个系统在缓存命中率较高时,其所请求的数据主要从性能较高的缓存介质中取得,大大减少了对下级低速介质的I/O操作,从而能够能有效地降低数据访问的延迟。

(2)减轻下级存储设备负载:缓存命中将会使得系统直接访问缓存设备取得待访问的数据,这显然减轻了针对下级存储设备的负载。研究[46]表明,磁盘类存储设备在负载较轻时的I/O性能要明显优于其在负载较重时的性能。由于缓存系统减轻了下级存储设备的负载,因此在缓存失效而必须访问下级存储设备时, 存储系统的整体性能也能得到有效的改善。

(3)改善下级存储设备的工作负载模式:缓存的过滤效应[20,47,48]能够有效地改善下级存储设备的工作负载模式,预取和回写操作通过大读和聚合写技术可以有效地增强下级存储设备工作负载的顺序性[49],从而减少、甚至避免了随机这一类对下级存储不利的工作负载模式,提高了存储系统的性能。

关闭缩略图缓存 篇5

关闭缩略图缓存

但是这在某些方面会减慢运行速度,占用硬盘空间。如果不需要可以把它关闭。

运行组策略:gpedit.msc

以速度名义管理好缓存 篇6

分类管理上网缓存

在利用浏览器上网访问时,浏览器会自动将用户访问过的所有信息保存在缓存文件夹中。不同类型的上网浏览器,其缓存位置是不同的,比方说IE浏览器的缓存目录位于“C:\Documents and Settings\用户名\Local Settings\Temporary Internet Files”路径。通过浏览器的缓存,可以改善页面浏览速度,因为用户所有访问过的信息,包括动画、视频、音频、网页、图片等,都会自动保存在浏览器缓存目录中,从中能找到以前访问过的任何内容,避免了重复下载的麻烦。然而,保存在缓存中的内容默认没有任何排列规律,当随着时间的推移,缓存内容越来越多时,容易给日后的文件查询带来不小的繁琐。比方说,希望从浏览器缓存中搜索特定时间段浏览某个网站,保留下来的动画、视频、音频、网页、图片等文件,显然是一件很头疼的事情。为了解决上述烦恼,我们可以借助Cache View Plus这款专业的缓存管理工具,来对缓存内容进行分类管理,确保上网缓存高效为我们服务。

默认状态下,Cache View Plus工具能对IE浏览器的缓存内容进行自动处理,如果希望该工具能处理其他类型浏览器的缓存内容时,可以按下该程序界面工具栏中的相关浏览器图标按钮,来对相关浏览器缓存进行管理。例如,点击工具栏中的“IE”按钮,在主界面左侧列表区域中,我们能看到对应浏览器所浏览过的所有站点URL地址、网站名称、访问时间以及缓存文件数量等。如果某个网站是在不同时段访问的,Cache View Plus工具能自动按照时间对其分类显示,这样就能有效提升查询灵活性。选中某个网站名称,在对应程序界面的右侧列表中,点击“All”标签,在对应标签页面中,我们能看到与目标网站有关的所有缓存内容,包括网页访问时间、文件大小、链接地址等信息。为了帮助用户快速查询缓存文件,Cache View Plus工具还会自动对缓存中的内容进行分类,并将各类信息分别显示在“SWF”、“Sounds”、“Html”、“Pictures”、“Other”标签页面中,点击进入相关标签页面,我们就能轻松查询到以前访问过的动画、视频、音频、网页、图片等文件了。

如果我们希望能够准确找到某个缓存文件时,可以充分利用Cache View Plus工具的内容预览功能,来预先查看某个缓存文件的具体内容。当选中某个待查文件时,点击主程序界面中的“Preview”标签,在对应标签页面中就能预览到具体内容了,如此一来,用户就能直接判断目标图像、动画、视频等文件,是否是自己想要寻找的文件。找到自己想要的缓存文件后,怎样将其快速提取出来呢?很简单!进入所需的分类标签设置页面,例如要提取某个图像文件时,可以先进入“Pictures”标签设置页面(如图1所示),借助Ctrl键将其中一个或多个文件选中,再按下“F5”功能键,点击其后界面中的浏览按钮,打开文件保存对话框,设置好保存路径,按下“Copy”按钮,就能将所有选中的文件都拷贝到指定路径中。对于当前正在访问的网站内容,不妨在Cache View Plus工具主界面左侧列表区域,展开“Hot URLs”列表,在这里能找到与正在访问网站有关的所有内容,在右侧列表中我们可以任意管理对应的缓存文件。

倘若我们调整了浏览器的缓存位置,可以逐一点击主程序界面中的“Options”、“Options”命令,切换到Cache View Plus主程序界面设置对话框,按下浏览器Cache Folder位置处的浏览按钮,将指定的缓存位置导入进来即可。如果希望Cache View Plus工具能自动加载处理浏览器的缓存内容时,不妨在设置对话框的“At Startup”位置处,选中“Load IE Cache”、“Load Opera Cache”等选项。

正确管理脱机缓存

在长时间使用Windows系统以后,我们往往会感觉到系统分区空间容量会越来越紧张,这会明显影响系统运行性能,为什么会出现这种现象呢,此时该采取什么措施进行应对呢?之所以会出现这种现象,主要是Windows系统默认会将脱机文件的缓存位置指向系统分区,这么一来系统分区空间自然就容易被脱机文件消耗掉了。为了有效节省宝贵的系统分区空间,我们可以想办法调整脱机文件的缓存位置,不让脱机文件消耗系统分区空间。现在以Vista系统为例,向大家详细介绍一下调整脱机文件缓存位置的操作步骤:

首先依次选择“开始”|“所有程序”|“附件”|“命令提示符”选项,并用鼠标右键单击该选项,执行快捷菜单中的“以管理员身份运行”命令,打开DOS命令行窗口,输入“regedit”命令,弹出系统注册表编辑界面。将鼠标定位在该界面左侧列表区域中的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CSC\Parameters分支上,在目标分支下面手工创建一个名为“MigrationParameters”的双字节键值,用鼠标双击该键值,弹出对应键值编辑对话框,输入数字“1”(如图2所示),确认之后刷新系统注册表。

其次在DOS命令行窗口中输入“c:\windows\system32\migwiz\migwiz.exe”命令,弹出Windows系统轻松传送向导对话框,按照提示选择“外部硬盘或USB闪存驱动器”选项,点击“这是我的旧计算机”按钮,单击“自定义”选项(如图3所示),设置好需要传送的用户帐户、文件和配置,特别是要将脱机文件选中,最后按“下一步”按钮开始传输。

nlc202309022307

接着再次打开系统注册表编辑界面,将鼠标定位到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CSC\Parameters分支下,在该分支下手工创建一个名为“CacheLocation”的字符串键值,并用鼠标双击该键值,在其后弹出的编辑对话框中输入新的缓存位置,比方说,要是我们想将缓存位置指向“F:\aaa”文件夹时,只要在这里输入“F:\aaa”即可,单击“确定”按钮返回。

之后重新启动Windows系统,打开系统运行对话框,输入“c:\windows\system32\migwiz\migwiz.exe”命令并回车 ,切换到Windows系统轻松传送向导对话框,按照提示导入新的缓存位置,并进行文件传输操作。接下来注销并重新登录计算机系统,这样就能正确访问位于新位置处的脱机文件了。

按需管理图标缓存

Windows系统一般都支持缩略图显示功能,为了有效提升那些被频繁访问图标的显示速度,系统默认会将那些已经访问过的缩略图图标保存到系统缓存中,日后再次访问相同图标时,就能直接从系统缓存中调用,而不会从硬盘位置中调用,这么一来图标显示速度自然会被加快。

不过,开启了缩略图图标缓存功能后,容易暴露用户的访问痕迹,如果想保证数据访问安全时,可以停用该缓存功能,因为缓存中的内容能轻易被任何用户访问到。在停用缩略图图标缓存功能时,可以按照下面的操作来进行:

首先依次单击“开始”|“运行”命令,弹出系统运行对话框,输入“gpedit.msc”命令并回车,切换到系统组策略控制台界面,在该界面左侧列表中,逐一展开“用户配置”|“管理模板”|“Windows组件”|“Windows资源管理器”节点,如图4所示。

其次从该节点下面找到“关闭缩略图的缓存”组策略,并用鼠标双击该选项,打开对应选项设置对话框,检查其中的“已启用”是否处于选中状态,如果发现其还没有被选中时,应该立即将其重新选中,单击“确认”按钮保存设置操作。这么一来,缩略图图标缓存功能就不会轻易泄露数据访问隐私了。而且,缩略图图标不经过缓存处理,反而会有效改善第一次访问速度。

当然,有时我们会遇到缩略图无法显示的故障现象,这种现象多半是图标缓存文件发生了错误,这时我们可以按照下面的操作重建缓存文件:首先依次单击“开始”|“所有程序”|“附件”|“系统工具”|“磁盘清理”命令,弹出磁盘清理管理界面。选中系统分区盘符或其他分区盘符,确认之后Windows系统开始扫描指定分区,扫描结束时会弹出如图5所示的设置对话框,选中“缩略图”选项,确认后删除“缩略图”缓存文件。再次打开文件时,缩略图缓存文件应该就能恢复正常了。

此外,打开系统资源管理器窗口,展开“%USERPROFILE%\AppData\Local\Microsoft\Windows\Explorer”文件夹,删除其中的thumbcache_32.db、thumbcache_96.db、thumbcache_256.db、thumbcache_1024.db等文件,也能达到重建缓存文件的目的。

合理管理DNS缓存

在上网冲浪的过程中,善于使用DNS缓存,可以有效改善网页浏览速度,从而提高上网冲浪效率!然而,Windows系统默认只会从计算机硬盘中划出一小部分空间作为DNS缓存,这样只有很少站点地址解析记录能被记忆存储下来,如果希望将该缓存容量调整得更大一些,来保存更多的网站地址解析记录时,不妨按照下面的操作,将DNS缓存空间设置得更大:

首先逐一点击“开始”|“运行”选项,切换到系统运行框,输入“regedit”命令并回车,弹出注册表编辑界面,依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters节点,手工创建一个名为“CacheHashTableBucketSize”的双字节值,同时将该键值数值设置为“00000001”,按“确定”按钮保存设置操作。在相同的注册表节点下,手工创建好“CacheHashTableSize”双字节键值,将其数值调整为十六进制的“00000180”,手工创建好“MaxCacheEntryTtlLimit”双字节键值,将其数值设为“0000fa00”,手工创建好“MaxSOACacheEntryTtlLimit”键值,将其数值设为“0000012d”,再重新启动Windows系统即可。

当发现QQ、MSN等聊天工具无法工作,或IE浏览器无法显示网站页面时,可以尝试刷新DNS缓存,来解决DNS解析不正确问题。在进行这项操作时,可以先打开系统控制面板窗口,依次双击“网络和共享中心”、“更改适配器设置”图标,切换到网络连接列表界面,右击目标网络连接图标,点击右键菜单中的“诊断”命令(如图6所示),就能对本地DNS缓存成功执行刷新操作了。如果熟悉DOS命令时,也可以先进入DOS命令行窗口,在该窗口命令提示符下输入“ipconfig /flushdns”命令并回车,那么本地DNS缓存的内容也会被强行清空。

默认状态下,DNS缓存需要用到53服务端口,不过该端口容易被恶意用户利用。为了安全起见,我们可以将DNS服务端口号码修改成陌生的号码,在进行修改操作时,首先展开系统资源管理器中的“WinNT/System32/drivers/etc”文件夹,使用记事本程序打开“services”文件,找到其中的“Domain Name”关键字,将DNS服务端口从默认的“53”变成“77”,再按同名文件执行保存操作。日后客户端系统也要进行相同的设置操作,将本地DNS服务端口修改为“77”,才能正常享受到DNS缓存服务。

为了防止他人随意调整DNS缓存配置,我们需要进行相关控制操作。首先展开Windows资源管理器,进入“WinNT/System32/DNS”文件夹窗口,同时右击该文件夹图标,执行快捷菜单中的“安全”命令,弹出对应文件夹安全设置对话框,删除这里的所有陌生用户账号,再点击“添加”按钮切换到账号选择框,导入合法用户账号。之后打开注册表编辑界面,依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS分支,并用鼠标右击该分支名称,选择右键菜单中的“权限”命令,展开如图7所示的权限设置框,将所有陌生账号全部删除,再点击“添加”按钮导入合法用户账号,同时为它们设置好正确的访问权限,最后重新启动计算机系统即可。

倘若担心恶意用户从DNS缓存中偷窥上网隐私时,可以按照下面的操作,来关闭本地计算机的DNS缓存服务。依次单击“开始”|“运行”选项,弹出系统运行对话框,输入“services.msc”命令并回车,进入系统服务列表界面,用鼠标双击其中的DNS Client服务,展开目标服务属性设置框,点击“常规”标签,查看对应标签页面中指定服务的工作状态是否正常,要是看到它已处于工作状态时,那就说明DNS缓存正在发挥作用,此时不妨按下“停止”按钮,同时将该服务启动类型调整为“自动”即可。

设置内存作为缓存

当计算机的物理内存容量很大时,不妨使用RAMDISK工具,想方设法从物理内存中划出一块空间,作为虚拟缓存,来存储上网过程中访问过的文件,下次访问相同内容时速度就会大大被提升。要将物理内存设置成虚拟上网缓存时,可以进行下面的操作:

首先启动Internet Explorer程序,逐一点选“工具”|“Internet选项”等菜单命令,进入Internet选项对话框,单击“隐私”标签,按下该标签设置页面中的“高级”按钮,选中如图8所示界面中的“替代自动cookie处理”选项,同时将第一方Cookie设置为“接受”,将第三方Cookie设置为“阻止”,之后进入“高级”标签设置页面,选中“安全”位置处的“禁用仿冒网站筛选器”选项,单击“确定”按钮保存设置操作。

其次下载安装好RAMDISK程序,并打开对应程序设置界面,将虚拟缓存空间设置为“300MB”左右(建议该数值不能定义得过大,以防止影响本地计算机整体运行性能),再重新启动计算机系统,这样就能找到刚刚创建好的虚拟缓存分区了。重新打开Internet选项设置框,切换到“常规”标签页面,按下“设置”按钮,将缓存空间定义为300MB,同时在“当前位置”位置点击“移动文件夹”,再选中之前创建的虚拟缓存分区,确认后IE浏览器日后就能自动将上网内容临时存储到虚拟缓存中了,那么上网速度就会大大加快了。

缓存和通道联合技术的应用 篇7

关键词:apt-cacher,bonding,缓存,负载均衡

1. 引言

在当前的网络环境中,虽然网络技术不断发展,但是带宽资源还是非常有限的。随着网络应用的进一步扩大,带宽要求越来越高,特别是在高校中,由于扩招、数字化校园建设等因素,学生人数越来越多,网络应用越来越深入,校园网络出口带宽不能满足需求。尤其当基于debian的linux发行版更新时,大量用户同时更新,压力就很明显。仅通过增加出口带宽不仅成本高,而且无法长时间满足用户对带宽的需求。通过基于linux的apt-cacher技术、通道联合技术,把软件仓库缓存到校园网内部,可以减轻网络出口并发流量的压力,把出口带宽留给数字化校园建设中重要的网络应用。

2. apt-cacher技术

随着linux技术的发展,各个linux发行版都建有自己的软件仓库,使得用户可以便捷地获取软件及相关更新。在debian linux快速发展的同时,管理软件仓库的apt包管理工具也出现了,通过该工具用户在获取软件时无须考虑软件包依赖的问题,极大减轻了用户的负担,降低了linux的入门门槛。apt-cacher是基于apt技术和apache web服务器,利用perl脚本实现的。只要有用户通过它获取一次软件,它就会把获取过的软件包缓存到本地服务器,当其他用户再次获取该软件包时,apt-cacher会根据软件包的头文件、上一次的下载时间等条件进行验证,如果符合就直接返回本地软件包给用户,否则则通过本地服务器获取最新的软件包。这样可以减少软件包重复下载而造成的带宽浪费,也不会因为缓存时间较长而导致用户无法获取较新的软件包。apt-cacher服务器还可以通过导入新发行版光盘中的软件包,即时获得较多的软件包缓存,减少第一个利用它升级系统的用户所需要等待的时间。该技术通用性强,可以用于任何基于debian的linux发行版的软件仓库。

3. 与本地软件仓库相比

本地软件仓库是在一定时间间隔内把官方的软件仓库做一次镜像。因此本地软件仓库存放着大量软件,所占空间需要上百GB或更多,在更新时需要占用大量带宽和时间。校园网用户所使用的linux系统和所需要的软件很大部分是一样的,因此制作完整的本地软件仓库是与减轻网络出口并发流量压力的目的是相悖的。apt-cacher是根据用户的需求而缓存下载过的软件包,减少了存储空间,并较大程度上地减少了同步大量的软件包所产生的网络压力和消耗的时间。

4. 通道联合技术

通过apt-cacher技术缓存软件包到本地仅减轻了网络出口的带宽压力,由于用户数较大,还需要在apt-cacher缓存服务器上使用通道联合(bonding)技术。联合服务器上两个或以上的网络接口,增加服务器的网络带宽和冗余,以便达到负载均衡,避免在新发行版发行时大量用户升级出现堵塞。

通道联合技术有7种策略:(1)轮询策略(Round-robin policy),模式代号是0。该策略是按照设备顺序依次传输数据包,直到最后一个设备。这种模式提供负载均衡和容错能力。(2)活动备份策略(Active-backup policy),模式代号是1。该策略只有一个设备处理数据,当它宕机的时候就会由备份代替,仅提供容错能力。(3)异或策略(XOR policy),模式代号是2。该策略是根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。(4)广播策略(Broadcast policy),模式代号是3。该策略通过全部设备来传输所有数据,提供容错能力。(5)IEEE 802.3ad动态链接聚合(IEEE802.3ad Dynamic link aggregation),模式代号是4。该策略通过创建聚合组来共享相同的传输速度,需要交换机也支持802.3ad模式,提供容错能力。(6)适配器传输负载均衡(Adaptive transmit load balancing),模式代号是5。该策略是根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力。(7)适配器负载均衡(Adaptive load balancing),模式代号是6。该策略在IPV4情况下包含适配器传输负载均衡策略,由ARP协商完成接收的负载,通道联合驱动程序截获ARP在本地系统发送出的请求,用其中一个设备的硬件地址覆盖从属设备的原地址。

5. 基于apt-cacher和通道联合技术的缓存平台应用

5.1 服务端设置

apt-cacher基于linux系统,对CPU要求不高,利用一台或多台装有两张或以上的网卡的机器就可以进行搭建。在这里,利用一台拥有两张千兆网卡、操作系统为基于debian的ubuntu server 9.10的linux服务器进行搭建。在服务器上以管理员权限执行以下命令:

sudo apt-get update

sudo apt-get install apache2

sudo apt-get install apt-cacher

sudo apt-get install ifenslave

安装好最新的apache web服务器、apt-cacher服务、bonding的通道联合工具。web服务器无需手动配置,在apt-cacher服务的安装过程中会自动对其进行配置。apt-cacher服务配置要点为:主要缓存仓库地址为http://debian.ustc.edu.cn/ubuntu/,缓存过期时间为6个月。这样设置是因为ubuntu linux易用性强,每6个月更新发行版一次,使用ubuntu桌面版作为桌面的用户占了我校linux用户的很大比例,可以使用其升级和更新的软件包为缓存主要对象;而且中国科学技术大学的仓库与ubuntu官方仓库同步时间间隔短,软件包齐全。

5.2 客户端设置

通道联合技术使用轮询策略,这个策略同时利用两个网卡进行并行传输,能提供更高的带宽,容错性强,而且这个策略应用时对其它网络设备没有特殊要求,部署容易,兼容性强,维护方便。

在ubuntu客户端中,只需要把/etc/apt/sources.list中原来的软件仓库地址改成http://apt-cacher服务器ip:3142debian.ustc.edu.cn/ubuntu/,或者通过修改/etc/apt/apt.conf.d/01proxy文件,把apt-cacher服务器设置成为客户端apt更新时所用的http代理,再进行软件更新即可。甚至可以进一步设置为自动更新。通过这个方案的应用,以相对较小的硬盘空间换取网络出口带宽的占用,可以减少网络出口带宽并发流量的压力,缩短下载软件包所需要的时间。

6. 结束语

本文针对校园网流量进行分析,根据用户需求来动态定制缓存服务。经过实践,该平台可以在较低成本的基础上减轻网络出口带宽的并发压力,提供稳定高效的网络服务。因此该方案是提高校园网带宽利用率的可行方法之一。

参考文献

[1]董春生.基于校园网的网络透明缓存系统的构建与实现[J].中国教育信息化:高教职教.2009.

[2]黄文枫.基于主动网络的缓存技术研究[D].西安:西安电子科技大学.2007.

分布式数据缓存技术研究 篇8

随着Web技术的不断发展,应用系统业务访问量与日俱增,众多频繁的数据访问,对应用服务器和数据库要求越来越高,如何合理提高数据访问效率且对服务器不产生过多压力,成为提升系统性能的关键,在服务器与数据库之间增加缓存可以解决这个问题。

1 数据缓存

1.1 缓 存

在计算机系统中,缓存就是开辟一个用来保存数据的空间,使用缓存,就不需要频繁地访问存储在内存或硬盘中的数据。当执行一个操作,将操作结果放入缓存中后,可以很迅速的重复访问这些数据。

使用缓存技术的目的是为了提高数据利用率和检索效率。系统将访问过的数据放入缓存,当用户多次访问系统时,避免每次都查询数据库,直接在缓存中获取所需要的数据。缓存按照应用领域不同,主要有存储器缓存技术、磁盘缓存技术、WWW服务器缓存技术和数据缓存技术等几种。

1.2 数据缓存

现今,很多的系统都使用了数据缓存技术,典型的数据检索系统,将数据检索技术和数据缓存技术结合起来,极大地提高了检索效率。

数据缓存系统大概分为三类[1]:客户端数据缓存系统、集中式数据缓存系统和分布式数据缓存系统。客户端数据缓存系统指在网络中接受数据的一方即客户端建立数据缓存区,对接受的数据进行缓存。集中式数据缓存系统是在某个关键节点上设置数据缓存区,依据设置数据缓存区的位置不同分为服务器端数据缓存系统和网关代理级的数据缓存系统。服务器端数据缓存系统主要是在服务器上设有数据缓存区,适用于局域网。而网关代理级的数据缓存系统主要是在处理数据频繁的网关和代理服务器上设有数据缓存区,适于局域网和远程网。分布式数据缓存系统是在网络数据传输中的网络节点对数据进行缓存,这种节点不仅包含服务器,也包含各个客户机。

2 分布式数据缓存

数据缓存的意义在于将大量的数据拉到应用程序层,将大部分的访问在应用程序层拦截掉。在访问经常使用的数据时缓存能够成数量级的减少潜在的访问时间。这样的结果,大大提高了应用程序的速度,也减少了数据库服务器的负载,将时间集中在业务处理上,使数据库服务器的访问性能大大提高。缓存技术和服务器集群结合起来使用,这就是分布式缓存。

3 分布式缓存研究

关于分布式缓存技术,目前国内外文献中研究的比较多[3,4],存在多种缓存工作模型,但这些缓存模型大多属于从集中式向分布式的一种过渡,如图1所示。从严格意义上讲,它们更趋向于集中式数据缓存系统,不能归为分布式数据缓存系统。这些数据缓存系统的工作思路是:在客户端和服务器中也都建立了属于它们自己的本地数据缓存区,这些本地数据缓存区只为自己服务,互相之间没有联系,或者仅和服务器的数据缓存区之间存在着一种点到点的联系。

3.1 拓扑结构

P2P:多台服务器配置成一个缓存组,服务器两两之间都建立了连接,每台服务器既是客户端也是服务端;Client/Server拓扑:服务器被分成服务端和客户端两种角色。客户端的缓存层会主动去连接服务端。

3.2 数据分布模式

分布式缓存特点之一是通过不同的方法把数据分布在多个服务器上。三种数据分布模式分别是Replicated Cache:每个节点都复制了完整的相同的缓存数据;Partitioned Cache:将缓存数据通过分区算法分布在集群的各个节点上;Near Cache:在Partitioned Cache之前加上一个本地的缓存来存储最近访问和最常访问的数据。

3.3 数据同步模式

TTL模式:定义了对象在缓存中的存活时间,每次从数据库中取出对象保存到缓存中时,都会给对象加上信息;客户端轮询模式:客户端客户或者缓存服务器定期询问主服务器,检查缓存对象的有效性;每次轮询模式:每次对象被访问的时候都要向主服务器询问数据的有效性;服务器端失效模式[2]:服务器端负责跟踪监测所有客户端的缓存数据,适用于Client/Server分布式系统中;客户端失效模式:每个缓存服务器负责把更新数据通知给其他所有的缓存服务器。适用于没有中心服务器概念的P2P分布式环境。

3.4 缓存替换算法

缓存替换算法指明了当缓存需要额外的存储空间时,如何选择被替换的缓存数据项。传统的缓存替换算法主要利用对数据块的访问频率或者最近的访问时间为标准,判断数据块在本次替换操作中是否应该被替换掉。缓存替换算法按照层次可以划分为单级缓存算法和多级缓存算法[5],主要有MRU、LRU、LFU、LRU-K、FIFO、LRFU、ARC、MQ/2Q和TQ、DEMOTE等。

3.5 当今分布式缓存技术

一些分布式缓存的模式,已经在现有的产品中体现出来了,其中包括开源产品和商业应用产品,如OSCache、JCS、Ehcache、Memcached、JCache、JBossCache等。

4 分布式数据缓存模式设计

4.1 缓存思路

本文设计的缓存思路如下:为每个表设立三个缓存Map(key=value键值对),第一个Map是对象缓存A,key是数据库表的id,Value是数据库对象(也就是一行数据);第二个Map是通用列表缓存B,B的最大长度一般为1000左右,key是查询条件拼出来的String(如start=0,length=15#active=0#state=0),Value是该条件查询下的所有id组成的List;第三个Map是散列缓存C,key是散列的字段(如根据userId散列的话,其中某个key就是userId=109这样的String)组成的String,value是一个和B类似的HashMap,其中列表缓存B中的Map是需要遍历的。举例如图2所示。

这种缓存思路一般用数据库表的索引键做散列,且最散的字段放前面先散列,可以存储大规模的列表和长度,缓存命中率很高,因此可以承受超大规模的应用。

4.2 缓存策略

根据ID获取记录,首先从本机缓存即内存中查询并获取数据,如果没有则转向Memcached Server获取,如果Memcached Server也没有才从数据库中获取,从数据库中获取数据后放入Memcached缓存和本地缓存,这样可以大大减轻数据库服务器的压力。

创建一个数据库记录,直接把对象放入本机缓存和Memcached缓存。而数据更新策略分即时更新和非即时更新,即时更新用到UDP报文,更新数据库,同时重设本地缓存和Memcached缓存。非即时更新用在更新比较频繁但又不影响排序的时候,比如一个帖子的点击和回复次数。

数据删除缓存的时候,实现了分布式删除,通过发送UDP报文通知其他服务器自动删除缓存,列表缓存的key必须是由字段名称=字段值组成,如#boardId=1#threadId=3#state=1#,所以删除时只要利用要删除的对象的字段值组成一个条件字符串,看key中的条件是否满足这些条件决定是否要删除这些缓存List。

Memcached缓存中存的不是List而是由#分开的id列表,第一步从Memcached缓存中查找,先从公共缓存区RECORDS_LIST_CACHE开始,然后到二级散列缓存HASH_LIST_CACHE中查找。第二步到数据库中进行查询,对照放入List或者Hash中。

缓存替换算法采用最为广泛的经典LRU衍变算法,加入其他因子如被引用次数,最近一次被引用后经历的时间,存活时间等分配不同的权重。缓存同步是当数据更新时通过服务器发送UDP报文通知其他服务器和客户端保证数据一致性。

5 缓存系统性能应用与测试

分布式数据缓存应用广泛,特别适用于具有高并发、高访问量的读多写少和更新不是很频繁的系统中。本文将分布数据缓存技术应用于某社区平台开发,系统主要使用轻型J2EE框架设计,构建在Hibernate之上,采用分布式解决方案,相当于在Memcached上做了两级缓存,模式采用Client/Server拓扑结构、较为简单有效的Replicated Cache、与Client/Server拓扑结构相对应的服务器端失效模式。

首先用一台普通计算机对社区进行压力测试,配置为内存2G,2个Intel P4 CPU,Linux AS4系统,数据库Mysql5.0,apache2.0.63/resin3.1.8/jdk5.0的环境,对帖子列表页面进行压力测试,测试结果如表1所示,Mysql5.0的CPU占用率都在20%以下,Java进程的CPU占用比较高,为50%左右。

然后用分布式缓存环境进行性能测试,3台服务器和1台数据库服务器Intel P4 2.8G,内存2G,操作系统是Linux AS4,1台客户端测试机Intel P4 2.8G,内存2G,操作系统是Window Server 2000。为简便起见,测试并发情况下查看和搜索纯JSP页面的帖子使用分布式缓存技术前后的整体性能。

第一组数据是测试查看帖子的速度,第二组数据是测试搜索帖子的速度。测试数据和性能结果如表2-表3和图3-图4所示。

由第一组数据表2和图3可以看出,查看帖子在有数据缓存的情况下,帖子的列表缓存和长度缓存都起了很大的作用,当并发数为20的时候,曲线上升的趋势已经开始有明显区别,缓存的效果比较明显。第二组数据表3和图4效果更为明显,搜索帖子用到了数据缓存中的数据库对象缓存、列表缓存和长度缓存,并发用户多的事情下,搜索相同数据的可能性增加,数据缓存的功能也体现出来,从图中可以看出,使用分布式数据缓存的情况下,系统性能提升很多。

6 结 语

分布式数据缓存模式越来越广泛被应用到各类系统中,大规模的企业级应用可以使用集群来保证,中小规模的部门级应用可以使用轻型J2EE框架来实现。数据缓存可以减少数据库访问量,提高数据命中率,分布式模式可以均衡服务器的压力,进一步提升系统的性能。分布式缓存模式将是未来缓存的研究重点。

参考文献

[1]Kataoka Mikio,Toumura Kunihiko,Okita Hideki.Distributed CacheSystem for Large-Scale Networks[C]//2006 International Multi-Con-ference on Computing in Global Information Technology(ICCGI'06),IEEE computer society,2006.

[2]Xin Yu.A distributed adaptive cache update algorithm for the dynamicsource routing protocol[C]//Proceedings IEEE INFOCOM,2005:730-739.

[3]Tewari R,Dahlin M.Design Considerations for Distributed Caching onthe Internet[C]//9th IEEE International Conference on DistributedComputing Systems,1999:273-284.

[4]黄世能,奚建清.分布数据缓存体系[J].软件学报,2001,12(7):1094-1107.

ASP.NET中的缓存技术 篇9

缓存技术的原理是把访问频繁的数据以及需要耗费大量系统资源的数据存储在内存中, 当用户请求使用这些数据时, 系统直接将内存中的数据返回给用户, 从而大大提高应用程序的性能。这样, 只有当用户第一次发送请求时, 服务器需要执行复杂的逻辑处理过程, 而之后如有其它重复请求, 只需要从缓存中返回处理结果, 极大的减少了服务器的负荷, 同时大大提高了数据访问的效率。但是, 当采用缓存技术后, 也很容易产生数据过期的问题。ASP.NET为了应对不同情况对缓存实时性的要求, 采用如下几种技术。

1 整页缓存

整页缓存是最简单最常用的缓存形式, 它将整个页面进行缓存, 适合不需要频繁更新数据、占用大量时间和资源才能编译生成的页面。

基本语法格式如下所示:

<%@Output Cache

Duration=”5”

Vary By Param=”id;name”

Vary By Control=”none”

Location=”any”

Vary By Custom=”browser”%>

整页缓存的主要属性如下图所示:

2 页面部分缓存

在实际的开发过程中, 采用整页缓存的页面中, 经常需要实时更新一定的内容。这时, 就需要采用页面部分缓存的方法。

页面部分缓存就是缓存页面的一部分, 而不是缓存整个页面。它适用于页面内某些部分可能需要更新数据的情况。在采用页面部分缓存的技术下经常采用先将整个页面缓存, 然后替换页面中不需要缓存的部分的“缓存后替换”的方法。

缓存后替换主要采用Substitution控件来实现。例如某些在线售票系统, 需要实时提供当前所剩票得数量。步骤如下:

在后台数据库中添加一张有关票务信息的表Tickets

在需要部分缓存的页面中, 放入一个Substitution控件。在Substitution控件的声明代码中, 利用Method Name属性调用Get Num () 方法。Get Num () 需满足三个条件

(1) 必须是静态 (static) 方法。

(2) 返回类型必须是string型。

(3) 参数类型必须是Http Context类型。

该方法的代码如下所示:

protected static string Get Num (Http Context context)

//Http Context代表的是当前访问的上下文, 包含当前会话的相关信息

{

Data Table dt=Get Tickets Data Table (“3”) ;

Return dt.Rows[0][“num”].To String () ;

}

3 应用程序缓存

前两种缓存技术中难以实现对页面进行一些有条件的控制。而应用程序缓存是用来存储与应用程序有关的对象, 主要由Cache类来实现, 可以以编码的方式灵活地控制缓存的操作。应用程序缓存主要有添加、检索和删除几种操作。

3.1 添加缓存的方法

在添加缓存之前需要添加Cache命名空间的引用如以下的代码:

using System.Web.Caching;

(1) 指定键和值

Cache[“”]=datatable;//添加缓存

(2) 使用Add () 方法。适用于需要设置缓存的有效期、依赖性等特性的缓存。

Cache.Add (“test1”, ”使用Add缓存”, null, Date Time.Now.Add Seconds (5) , Time Span.Zero, Cache Item Priority.High.null) ;

(3) 使用Insert () 方法, 实现多种方式的方法重载。

这种方法比较灵活。只需要指定键和值两个参数就可以添加缓存。

Cache.Insert (“test2”, ”使用Insert缓存测试”) ;

添加依赖项的缓存如下:

//事先已经先准备一个存放数据的xml文件list.xml

C a c h e D e p e n d e n c y d e p e n d e n c y=n e w Cache Dependency (Server.Map Path (“list.xml”) ) ;

Cache.Insert (“test3”, ”使用Insert测试带依赖性的缓存”,

new System.Web.Caching.Cache Dependency (null, dep endency) ) ;

设置有效期策略的缓存如下:

Cache.Insert (“test4”, ”使用Insert测试设置有效期的缓存”, Date Time.Now.Add Minutes (ld) , System.Web.Caching.Cache.No Sliding Expiration) ;

添加优先级的缓存如下:

Cache.Insert (“test5”, ”使用Insert测试添加优先级的缓存”, null, System.Web.Caching.Cache.No Absolute Expiration,

System.Web.Caching.Cache.No Absolute Expiration,

System.Web.Caching.Cache Item Priority.High, null) ;

3.2 检索缓存

由于缓存信息容易丢失, 所以在缓存中检索应用程序数据缓存对象时, 要先判断缓存项是否存在, 然后再检索。

3.3 移除应用程序数据缓存对象

(1) 自动移除:出现缓存已满、过期、依赖项更改等情况时, 缓存项就会自动移动。

(2) 显示移除

Cache.Remove (“test1”) ;//test1为键名

缓存技术是一项应用十分广泛的技术, 也是ASP.NET不可缺少的特性。使用缓存技术, 可以大大提高程序的性能。

参考文献

[1]张敏蒋毅, ASP.NET开发动态王章, M.

缓存技术 篇10

MMF,全称Memory Mapped Files,从宏观上看,它是一种数据内存映射的技术。微软MSDN中,Randy Kath这样定义了MMF:Memory-mapped files(MMFs)offer a unique memory management feature that allows applications to access files on disk in the same way they access dynamic memory-through pointers。从微观上看,MMF是具有以下特性:MMF是windows的对象,可以被任何进程、线程所访问,具有进程间共享的特性。因为MMF的所有存取操作均在内存中进行,所以具备快速的特点。

基于以上特点,MMF的所有操作均可通过Windows API获得,使得DNA架构下COM可以跨进程访问数据。利用MMF可以将数据库端业务数据缓存到应用服务器段或客户端的MMFs减少频繁的数据库开销,极大的提高系统访问的性能。在java的jdk1.4的NIO规范下,可以在FileChannel和ByteBuffer类的文档中找到FileChannel对象具有映射文件到内存的功能,也就是前文的MMF。

因此,我们可以利用MMF来这样搭建整个系统:系统每次启动时,程序访问数据库,获取表中数据,通过一系列步骤将缓存应用到服务器端的MMFs,客户端请求数据时,直接访问应用服务器端MMFs,同时将数据缓存到客户端。

整个系统架构采用客户端/APP服务器/数据库模式进行设计。在客户端,可以采用CSR和Web Server(IIS)方式,对客户框架和Gui模式结合与APP服务器端进行交互。在APP服务器端,主要采用COM+技术,对客户对象和商业对象进行操作。同时,利用CA、XML等技术搭建辅助服务。同时,在服务器端和数据库直接利用Server Cache创建Business Rules,作为他们的中间件。利用这样的设计模式,可以保证系统的合理性和数据操作的有效性。

在这种系统架构下,当处理缓存端数据时,如何保证缓存中数据的正确性和时效性,以及保证大数据量吞吐时缓存的效率是我们需要考虑的重要问题。在现有缓存算法的基础上,设计了价值度权衡因子的数据缓存算法可以有效提高效率。

算法的解决思路如下:用户提出访问请求时,调用相应的决策引擎进行数据分析并产生响应的结果集。当结果集请求进入相应的缓存空间时,如果缓存空间已满,则需对空间中每个查询数据做出判断。数据di的价值度Valued(di)地的被替换,为新的结果集提供空间,同时对缓存数据的空间进行管理。

算法设计如下:

定义:数据缓存C表示如下:C=(Q(d),P(d)),d∈D D为数据集合。D={d1,d2,…,dn}。

Q(d)为数据对应的查询集合。Q(d)={Q(di)|di∈D},Q(di)={q1,q2,…,qm}。

P(d)为数据的属性集合。P(d)={pd(di)|di∈D},pd(d)=(flag(di),vd(di),μ(di),σ(di),fd(di),dud(di),sized(di),timed(di),rfd(di),Valued(di))。

其中:

Tmd(di)为数据的上次修改时间。

Tud(di)为数据的下次更新时间。

Flagd(di)为缓存数据的类型,包括立方体缓存数据和块缓存数据两种。

timed(di)为缓存数据的时间集。timed(di)={Tu(di),Tm(di),Tn(di)}。vd(di)为缓存数据di的被访问次数。

fd(di)为缓存数据di的被访问频率。fd(di)=vd(di)/Σv(di),Σv(di)为所有数据被访问次数之和。

μd(di)为缓存数据di的获取时间。

dud(di)为获取数据di的获取代价,dud(di)=μ(di)/Σμ(di),Σμ(di)为所有数据的获取时间。

σd(di)为缓存数据di所占空间的大小。

sized(di)为缓存数据did的空间代价,sized(di)=σ(di)/Σσ(di),Σσ(di)为所有缓据所占的空间之和。

Tnd(di)为当前时间。

rfd(di)为缓存数据的剩余寿命,rf(di)=(Tu(di)-Tm(di)/(Tn(di)-Tu(di))。

valued(di)为缓存数据价值度。缓存数据价值度和访问频率、剩余寿命、数据获取代价、数据空间代价越小成正比。故Valued(di)=fd(di)×rfd(di)/costd(di)×sized(di))。

由以上定义得出:

Valued=fd(d)×rfd(d)/sized(d)

Rfd(d)=(Tud(d)-Tmd(d))/(Tn-Tu(d))

本文以本项目的信息在线服务系统为例,将研究结果应用其中。由于本系统数据处理量大,实时要求高,在系统硬件服务器固定的条件下,采用新的算法可以有效改进系统性能。

将原系统和采用MFF新架构算法后的系统利用LoadRunner进行测试,测试时间设置了30分钟。虚拟用户逐渐增加时,每秒处理的事务数是0.687个;录制的完整脚本运行时,每秒处理的事务数为1.256个;释放虚拟用户时每秒处理的事务数是0.687个。

由前后系统性能的比较可以看出,采用MMF架构应用数据缓存新算法可以大幅度提高系统性能。当然,随着数据缓存的大量使用,势必会出现某种程度上的数据差错、数据同步机制以及与平台相关性等方面的问题。但无可否认,这种新算法的应用可以大幅度的提高系统的性能,值得我们做进一步的探讨和研究。

参考文献

[1]李华银.控制系统性能评估算法与应用研究.浙江大学,2010年硕士论文.

幕后英雄 隐藏在硬件背后的缓存 篇11

我们都知道,缓存是用于平衡高速设备和低速设备之间速度差异的纽带,也是一种用于存储临时文件的交换区,其最大意义就是“尽可能”帮助低速设备不拖高速设备的后退。之所以是“尽可能”,是因为缓存的容量通常都很小,而且数据在缓存中的命中率也是有限的。但无论如何,缓存都是提高整体性能中不可或缺的关键一环。

以CPU内集成的L2、L3等小容量高速缓存为例(图1),它们就是CPU与内存之间的纽带。在数据交换的过程中,由于CPU的运算速率远超内存,因此CPU在更多的时间中都是在等待数据到来,或是把数据写入内存。而缓存会提前预读CPU即将访问的数据,当CPU需要读取数据时会绕过内存直接从缓存中调用,从而提高读取效率。

HDD的缓存情结

继CPU缓存之后,HDD机械硬盘的缓存也是声名在外。限于物理结构的制约,就速度一项HDD和内存相比简直堪比“垃圾”,如果没有缓存用于作为硬盘和内存之间数据交换的纽带简直就是“作死”,因此如今的HDD大都会配备64MB容量的缓存芯片(图2)。

受SSD固态硬盘的步步紧逼,机械硬盘领域还逐渐衍生出了新的品类:SSHD(混合硬盘)。与HDD相比,SSHD内除了传统的硬盘控制芯片和缓存芯片以外,还会额外加入NAND闪存芯片(多为8GB)和SSD主控芯片(图3~4)。其实,我们可以将新加入的两颗芯片理解为SSHD的特殊缓存模块,它们会将用户频繁使用的各种应用、数据预存到NAND中缓存,这个缓存具备学习和记忆功能,它预存的数据不会因为关机而消失,从而给用户带来PC越用越快的感觉。

SSD和缓存的暧昧关系

SSD固态硬盘的速度远远超过HDD,为何此类高速存储设备内也会内置缓存芯片呢? 如果将这颗芯片取消会不会影响性能呢?这个问题的答案源于SSD所采用的主控芯片与存储介质。

简单来说,由于SSD的工作机制与HDD不同,其特有的FTL机制让操作系统只能对LBA(逻辑地址)进行操作而不能干涉到PBA(物理地址)的操作。因此,SSD需要一个可以动态转换LBA与PBA层的对应关系的FTL表。SSD容量越大,FTL表也就越大。而SSD内置的DRAM外部缓存芯片就可以用于保存FTL表,从而节省系统访问FTL表的时间提高读写效率。

另一方面,像三星840这类采用TLC闪存的SSD(图5),它所内置的高达512MB的DRAM外部缓存芯片并非提升系统性能,而是起到了延长TLC闪存耐久度的功效。此外,通过主控的特殊算法,还能将缓存用于4K小文件,从而明显提高4K性能。

问题来了,既然都说SSD离不开缓存,那为什么以东芝旗下Q系列SSD为代表的固态硬盘产品,会取消看似重要的缓存芯片呢(图6)?原来,这个秘密就源于东芝Q系列SSD所选用的主控芯片。

SSD主控可弥补缓存作用

东芝Q系列SSD所用的主控芯片是基于Marvell主控的二次开发,和Marvell最新的88NV11X0系列主控有着血缘关系。88NV11X0系列包括88NV1120和88NV1140两款,它们最大的特色就是不再需要DRAM外部缓存芯片。

88NV11X0系列主控芯片内置了两颗Cortex-R5 CPU核心,并通过嵌入式的SRAM硬件加速来优化IOPS随机性能。换句话说,88NV11X0主控可以通过更为复杂的固件算法来模拟DRAM外部缓存的功能,从而可以帮助SSD节省出一个缓存芯片的空间。要知道,88NV11X0主控的封装尺寸只有8×8mm2,最少仅需两颗芯片就可做成一个SSD。也许对2.5英寸标准尺寸SSD来说不算什么,但对M.2(NGFF)接口的迷你SSD来说就意义非凡了,使大容量2230(22mm宽,30mm长)规格的M.2成为了可能。

就性能而言,东芝Q系列SSD与同价位带缓存的SSD相比也是不遑多让(图7),失去了缓存芯片的帮忙并没有出现想象中的性能和寿命衰减。在M.2成为新一代主板和笔记本的标准接口后,不需要缓存的SSD主控将有更为广泛的发展前景,相同容量但尺寸更小的SSD可以帮助PC们进一步瘦身。

缓存成集显“激素”

笔记本用户肯定都发现了一个有趣的现象,CPU集成显卡在配备双内存时的性能更好,内存频率越高,集显性能也就越强。实际上,对CPU集显而言,系统会将一部分内存空间虚拟成集显的“缓存”(也可称为显存),缓存规格越高(如双内存时就是双通道),性能自然也就越强了。

而英特尔旗下的Iris/Iris Pro(锐炬)系列核芯显卡之所以可以获得媲美GT640M级别独立显卡的性能,答案就源于在CPU上加入了一颗128MB容量的eDRAM嵌入式缓存(图8),代号“Crystalwell”。我们可以将Crystalwell视为内存体系中的“四级缓存”,任何从三级缓存中被赶出来的数据都会到这里边来,其双向带宽可达50GB/s,从而彻底解决了集成显卡面临内存带宽不足的问题。

小    结

缓存技术 篇12

在Internet飞速发展的今天,互联网已成为网上生活的基本工具,是人们获取和传播信息的重要途径,用户通过Web获取大量信息的同时,对Web应用系统的响应速度上升到最高的需求,为了提高用户的感受、降低企业和服务提供者的成本(包括提高处理速度和增加网络带宽),人们开始研究在当前的Web构架基础上如何提高Web应用系统的交互速度,调查发现大量的Web流量中,绝大部分是冗余数据,即一个位置上的多个用户要查询大量相同的内容。为减少大量Web冗余数据在网络上的传输,经过研究人员的深入探索,缓存技术是在不增加成本的前提下提高Web应用系统性能的最有效的解决方案之一。

2 缓存技术的基本原理

在计算机系统中,缓存就是开辟一个用来保存数据的空间,使用缓存,就不需要频繁的访问存储在内存或硬盘中的数据,当执行一个操作,并且将操作结果放入缓存中后,你就可以很迅速的重复访问这些数据了。

在Web应用系统中,缓存用来存储最近通过Web访问过的信息。通常,用户对Web对象的请求需要在Internet路由经过多次跳跃到达原始服务器,再从原始服务器取得所请求的对象返回给用户。Web应用系统中缓存技术的主要思想就是将Web对象(页面、图像及其它Internet内容)进行本地存储,使得这些被访问过的Web对象更靠近需要使用它们的用户,从而大大提高用户通过Web访问Internet的速度。其工作的基本原理如图1所示。图1中,1为缓存服务器接受客户浏览器的请求;2、3为缓存服务器从原始服务器获得缓存中的未存储对象(Cache Miss);4为缓存服务器存储获得的对象,并将获得的信息副本发送给客户浏览器。此后,当用户对相同的对象(网站)提出访问请求时,就由缓存服务器来满足其要求,将已经存储对象(Cache Hit)的拷贝发送给客户浏览器。

3 缓存技术在Web应用中的使用

3.1 静态Web应用中的缓存技术

静态Web应用中页面对用户的响应时间由网页内容传输的时间、Web服务器读取数据以及进行数据输出的时间组成。因此降低静态Web应用中页面的响应时间主要从这两方面着手。根据缓存所处的位置不同,可以把缓存技术分为3类:(1)客户端的缓存技术;(2)基于代理服务器的缓存技术;(3)服务器端的缓存技术。

3.1.1 客户端的缓存技术

在客户浏览器中使用缓存技术的思路很简单,把用户历史访问过的网页都缓存储在用户本地的硬盘上,在用户以后访问同样的网页时,浏览器就可以从本地硬盘中取出网页的内容,而不需要重新建立一次HTTP连接。如果该网页在服务器上有更新,则浏览器重新连接Web服务器,从Web服务器上读取新的网页的内容响应给用户,同时用新的网页去置换缓存中对应的过期的缓存页面。在此种缓存技术中,客户浏览器直接使用了本地缓存中的内容进行显示,未和Web服务器进行通信,因此降低了服务器的负载,间接提高了服务器的并发访问量,同时也降低了网络通信量以及服务器访问的任何后台资源,从而优化了各种Web应用的响应时间。

3.1.2 基于代理服务器的缓存技术

建立一个缓存代理可以使分布的用户访问网络时都经过这个代理,该代理服务器处于客户浏览器和Web服务器的中间。这样能加快使用该代理的用户网络的反应速度。当一个用户访问一个文档时,首先访问该代理服务器,由于该文档在早些时候可能被另一个同局域网的用户访问过而在缓存中,对这个用户来说,文档就可以直接从代理服务器的缓存中获得,而不必到原始的web服务器中获得了。所以,如果用户的web浏览器配置Proxy代理,这样用户对所有Web应用系统的请求都经过代理去访问Internet。在用户请求访问Internet之前,代理服务器首先检查自身是否己经缓存了用户请求访问的Web对象,如果己经缓存并且没有过期,那么就用本地缓存的Web对象响应用户的请求,从而加快了用户的访问时间,并节省了带宽资源。此种类型称Forward-Proxy正向代理。不使用代理服务器的访问流程如图2所示;使用代理服务器的访问流程如图3所示。

使用代理端缓存技术具有以下的优点:(1)减少网络信息流量;(2)减少用户访问延迟;(3)减轻服务器的负载;(4)提高了web应用系统的健壮性。

3.1.3 服务器端的缓存技术

当用户访问Web服务器读取HTML页面时,一般Web服务器需要从硬盘上读取HTML文件,然后传输给用户。每次用户访问,Web服务器都重复相同的处理过程。服务器端缓存的目的是降低服务器对用户请求的反应时间、增加服务器的吞吐量。静态内容缓存则将用户经常访问的HTML页面或者Web处理结果存储在服务器的内存当中,在用户请求某一服务时,服务器首先从内存中检索是否有相同的结果,如果存在,则不必重新处理,而直接将结果发送给用户。由于内存的存取速度远远比硬盘的存取速度快,所以Web应用服务器系统的响应时间可以缩短。服务器端的缓存可以处理大部分的用户静态请求,于是大大加快了用户请求的响应时间,并降低了原始Web应用系统服务器的负载。静态内容缓存设备放在Web服务器前面,用于处理用户对静态内容的请求,因此提高了前端Web服务器处理用户连接的能力,这个办法在静态Web应用系统请求占很大比例的环境中是非常有效的。

3.2 动态Web应用中的缓存技术

动态Web应用中页面的编译和解释执行均是在服务器端解析和执行的。因此对于动态Web应用页面的缓存技术主要体现在服务器端缓存技术上,服务器端缓存的目的是缩短服务器对用户请求的响应时间、增加服务器的吞吐量。其缓存方式一般有两种。

3.2.1 数据库连接缓存

用户通过Web应用服务器访问数据库时,Web服务器上的应用程序和数据库服务器之间需要首先建立数据库连接,然后才能存取数据,在处理结束后,这种连接被关闭。每次用户访问都需要重复这样的步骤。由于数据库连接过程是一个严重消耗系统资源的过程,而且时间开销也比较大,因此通常情况下,数据库连接过程对系统响应时间的影响是巨大的。数据库连接缓存是指在Web服务器和数据库服务器之间建立数据库连接池,在系统初始化时即生成一些数据库连接存放在数据库连接池中。数据库连接池的实质是在内存中开辟一个数组,数组的元素即是数据库连接。当用户需要访问数据库时,直接从数据库连接池中取得一个已经存在的数据库连接,操作结束后,连接仍然保持而不关闭,直接返还给数据库连接池。在此过程中,由于数据库连接是事先生成的,因此在一次业务逻辑操作中,生成和关闭数据库的时间减少到O,这样一来,用户访问数据库的步骤被简化,进而优化动态Web应用系统的效率。

3.2.2 内容缓存

内容缓存则将用户经常访问的动态页面的响应内容或者动态页面处理过程中的中间结果存储在服务器的内存当中,在用户请求某一服务时,服务器首先从内存中检索是否有相同请求的处理结果,如果存在,则不必重新计算和处理,而直接将结果响应给用户或者把中间结果从缓存中取出进行一系列计算后对用户做出响应。由于对用户的输出是把内存中的响应内容对用户输出或者是根据缓存中的“半成品”内容进行计算后的输出,在此过程中省略了执行动态页面的业务逻辑的步骤以及对数据库查询、对其他信息系统访问的过程,所以Web应用服务器系统的响应时间可以大大缩短。内容缓存的内容通常是对数据库查询后,数据库返回给Web应用服务器的结果集。对动态页面进行缓存的关键是尽量减少动态页面中业务逻辑的执行次数。对动态Web应用页面的高速缓存一般采取3种缓存实现方案:(1)动态页面变静态页面技术;(2)利用开源的缓存API缓存请求处理过程中的中间对象;(3)缓存一个对象的方法的执行结果。

4 结束语

缓存技术不是着眼于网络设备性能的提高和扩容,而是在更深一个层次上分析用户数据流的统计特征,利用数据的可复用性和共享性,在边缘网络复制和保存网络数据的一项重要技术。它不但可以减少网络和服务器负载,提高数据访问速率和服务可靠性,而且大大节省了网络运营费用,同时提高Web应用系统的响应速度,增强用户感受和认可,进一步优化Web应用系统的性能。因此缓存技术有着非常广阔的发展前景,相信随着各种Web应用的不断深入,缓存技术会发挥越来越重要的作用。

参考文献

[1]赵玉伟.WWW中缓存机制的应用研究[D].保存地点:武汉理工大学,2006.5,14-23.

[2]贺琛,陈肇雄,黄河燕.Web缓存技术综述[J].小型微型计算机系统,2004,25(5),836-842.

[3]乐德广,郭东辉,吴伯僖.网络缓存技术及应用的研究[J].应用技术,2003.5,33-35.

上一篇:水力机械试验台下一篇:课程考核的改革创新