基于高速缓存系统的遍历查询研究与设计

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:dacong966963
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:由于大型网站具有高负载和高并发的特点,Memcached作为一种解决方案在缓存数据量较大的情况下,使用Memcached的命令组合方式遍历缓存无法完成对所有有效数据的查询。本文针对这个方面研究并设计了缓存数据遍历方案,通过对Memcached客户端的应用研究与模拟实现,很好的解决的这个问题。
  关键词:Memcached;缓存;遍历
  中图分类号:TP333 文献标识码:A文章编号:1007-9599(2012)01-0000-02
  Traversal Query Research and Design Based on the Cache System
  Deng Shiquan,Lou Xinyuan
  (School of Mechanical Engineering,Southwest Jiaotong University,Chengdu610031,China)
  Abstract:The traversal query of data by the compound command in the huge web site turns to be difficult because of the high load and concurrency when we take the Memcached as an solution of data caching. This paper focuses on the problem above and provides an new Memcached based data traversal query method.According to the simulation result, the problem could be well solved by this method.
  Keywords:Memcached;Cache;Traverse
  一、引言
  Memcached是为提升站点性能而设计的分布式应用程序。最早是为liveJournal服务,它采用了C/S架构模式。Memcached可以构建高性能的缓存服务器,减少磁盘数据库的访问次数,分担传统数据的压力,并提高动态Web服务器的吞吐量。目前有许多公司都在使用这个缓存工具来构建大负载、高并发的网站。作为一个轻量级的分布式缓存服务器,Memcached没有提供遍历查询接口,许多人对它的遍历都是使用命令组合的方式来完成,这种方法在缓存中的数据量很多的时候,它无法缓存数据遍历的任务。本文设计并实现了基于XML文档的遍历查询方法弥补了这个方法的缺陷。
  二、Memcached的工作原理
  Memcached是一个高性能的分布式内存对象缓存系统,它的工作机制是在内
  存中开辟一块空间,然后建立一个HashTable,并自行管理这些HashTable。Memcached采用名为Slab Allocator的机制来进行分配和管理内存,Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合)[2]。内存分配原理如图1[2]。
  每一个server对数据对象的存储操作都在所切的块中完成,而需要缓存的对象或数据是以键值对(key/value)形式保存在Server端。没有涉及到任何磁盘IO 操作,更不会使用到SWAP 虚拟内存,其性能瓶颈都在网络通信部分 [3]。
  Memcached采用最近最少使用(LRU)置换算法,LRU置换算法是选择最近最少使用的页面予以淘汰。当内存不足时,Memcached会从slab各个class中的双向链表的尾部开始检测,
  
  
  
  
  
  
  
  图1
  即最近最少使用的页面,往前一直寻找合适的item予以淘汰。LRU算法为slab局部class淘汰的机制。
  三、遍历查询的研究与设计
  目前,Memcached在公司和网站中的应用越来越广泛,像facebook,youtube,yahoo,sina,sohu,netease,豆瓣等都在或多或少的使用。在特别注重用户体验的网站上,用户对服务器的响应速度要求很高,如sns,blog等web2.0应用的站点,Memcached的表现突出。Memcached自身只提供了get、set[4]等方法,当需要查看Memcached的数据及状态,要批量删除数据或是给部分数据增加、减少失效时间等等,都需要遍历缓存中的内容,下面介绍两种基于Memcached客户端的遍历方法。
  (一)基于Memcached的stats命令的设计与实现。这是许多人推荐的遍历方式。其设计主要通过stats items和stats cachedump 这两个命令来实现的。遍历的步骤如下:首先,通过客户端应用程序连接到Memcached服务器。其次,执行客户端程序的MemcachedClient的statsItems命令获取所有的Items数据,从返回的数据中解析出所有的slab id。再次,执行MemcachedClient的statsCacheDump命令,从该命令返回的数据中解析出所有的key(key为ITEM之后、“[”字符之前除空格之外的字符串)。最后,通过得到的有key,使用Memcached提供的get命令遍历缓存中数据。
  (二)基于XML文档遍历查询的设计与实现。在Memcached中的数据是以键值对(key/value)的方式存储的,并且Memcached没有提供直接遍历Memcached缓存数据的接口,因此要获取到Memcached的缓存中的数据,首先必须获取到存储在cache中的key,因此,获取缓存中所有key是遍历Memcached缓存的前提条件。本方法的设计是基于一个存储介质(存储介质可以是数据库表,XML文档等)来保存Memcached中所有key的信息,通过客户端来维护关于key的数据表或XML文档。
  本文的设计是基于XML文档的,文档结构如下所示:
  <?xml version="1.0" encoding="utf-8"?>
  
  
  mykey1
  0
  0
  0
  liming
  ......
  

  ......
  

  为了便于实时更新XML文档,在节点结构中加入了当前时间,过期时间,修改时间以及用户等信息。当第一次向Memcached服务器增加数据时,客户端便创建XML文档,并向XML文档中插入一条节点数据。在之后的操作中,针对每次的操作都对文档做相应的维护。遍历步骤如下
  首先,通过客户端应用程序连接到Memcached服务器。其次,需要执行遍历Memcached缓存中的数据时,先从相应的XML文档中读取所有的key,并通过过期时间与当前时间进行对比,剔除过期的key。获取XML文档中的有效key。最后,通过得到的所有key字段,使用Memcached提供的get命令遍历缓存中数据。
  四、两种方案测试结果对比
  其测试环境配置如下:在测试过程中,使用的是两台相同配置的个人PC机,一台作为客户端使用,一台作为Memcached服务器。
  PC机配置如下:
  CPU:Inter Pentium(R) T4200 2GHz;内存:3G;硬盘:250G;操作系统:Windows XP professional sp3;
  Memcached软件配置如下:
  Memcached版本:Memcached-win32-1.4.4-14;Memcached进程数:1;启动参数:Memcached.exe –d –m 350 –p 11211 start;操作系统:Windows XP professional sp3
  测试过程中一共使用了10组数据,其数据记录总数分别为:1万、2万、5万、8万、10万、12万、15万、20万、30万、40万。测试过程又分三种情况进行对比:无过期数据记录、有1/4的过期数据记录、有1/2的过期数据记录。其对比结果分别如图2、图3、图4所示。
  
  图2
  
  图3
  
  图4
  从图2可以看出方案一(基于Memcached的stats命令的设计与实现)在查询性能上优于方案二(基于XML文档遍历查询的设计),从图3(存在1/4的过期记录)和图4(存在1/2的过期记录)可以看出方案二在查询性能上优于方案一,并随着过期记录的比例增大,查询性能的差异也变得更加明显。两种方案优缺点对比结果如表一所示。
  表一 两种方案优缺点对比
  
  在测试过程中,测试数据量为80万条时,方案一由于Memcached系统设计的限制(这个限制也可参考源码文件Items.c中的char *do_item_cachedump()[1]方法。),无法遍历到全部有效记录。表二列出了方案一和方案二遍历查询所得到的结果。
  表二 80万条数据记录查询结果
  
  从表二的数据可以看出,当数据没有过期记录,有效数据为80万时,方案一实际遍历了434424调记录,获取到有效记录数为434424,没有获取到所有的有效数据(80万)。方案二达到了预期的遍历结果。当数据有过期记录(过期记录量为总量的1/4)时,方案一实际遍历了434424条数据,实际获取到的有效记录数为325818,没有获取到所有的有效数据(60万)。方案二达到了预期的遍历结果。
  五、总结
  Memcached是一个基于key-value存储的系统,它提供了高效的set、get[4]等命令,出于性能方面的考虑,Memcached并没有提供直接的遍历的操作。但是在某些时候,的确需要遍历Memcached中缓存的数据。由于遍历Memcached缓存数据的开销比较大,因此,遍历操作要谨慎使用。本文设计并实现了数据遍历的方法,满足了这种需求,并通过实验证实了设计方案和实现步骤是可行和有效的。
  参考文献:
  [1]Memcached website:http://memcached.org/
  [2]长野雅广,前坂徹著.charlee 译.memcached全面剖析. www.idv2.com
  [3]宗小忠.基于Memcached构建Web缓存服务器[J].电脑知识与技术.2011.2
  [4]http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
其他文献
摘要:中等职业学校信息技术是一门必修的基础课程,对于这门课程没有既定的教学方式,处于实践和探索阶段,其教学方式灵活多样,本文结合作者十年的教学实践,以中等职业信息技术课程的教学目标为出发点,对教学方式、采取的具体方法、手段、产生的效果以及出现的问题进行探索和总结。  关键词:中等职业学校;教学模式;实践;总结  中图分类号:TP3-4 文献标识码:A 文章编号:1007-9599 (2
期刊
摘要:针对幼教专业计算机课时量少,教学内容多的情况,教师教学时要整合知识点,精选案例,少讲多练,应用案例教学,探究式教学,发挥学生的创造力,通过幼教见习机会思考并实验计算机在教辅方面的作用。  关键词:幼教专业;整合;探究式教学;“走出去”实践教学法  中图分类号:TP3-4 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02  进入信息化时代以来,计算机技术及
期刊
摘要:随着经济社会的不断发展,加大财政信息化建设力度是推动财政管理科学化、精细化的关键举措。本文从提升财政信息化层次着手,阐述财政信息化的作用,构建财政信息系统。为加快财政“四位一体”管理进程提供坚实的技术支持,加强信息系统的管理和维护,确保系统的运行顺畅。财政管理信息化不仅是一个信息化工程,而且本质是一种财政管理方式的革新,根本的目的是通过现代信息技术实现财政的科学管理。  关键词:财政;信息化
期刊
摘要:综合文字工作是一项进入党委领导决策以及直接参与的工作,作为重要手段发挥党委办公室的参谋、助手作用。如何在更高的层次、更高的起点上做好工作,使得决策服务水平不断提高,是我们必须解决的一个重要问题。  关键词:综合文字;工作体会;提高水平;方法  中图分类号:C931.46 文献标识码:A文章编号:1007-9599(2012)03-0000-02  Excellence–Working of
期刊
摘要:在现代社会,电子办公已成为人们不可或缺的工作模式。它节省了我们时间,提高了工作的效率。可以说,电脑已经真正成为了人们的左膀右臂。对于常用电脑的白领阶层,除了要掌握最基本的电脑软件的使用之外,还需要把握一些小窍门,以进一步提高工作效率。  关键词:办公;技巧;效率;方便  中图分类号:TP316 文献标识码:A文章编号:1007-9599(2012)03-0000-02  Office Tip
期刊
摘要:随着信息化时代的到来,计算机已广泛应用于工作和生活当中。为放大计算机功能、效用,提高部门单位工作效率,机关公共机房的维护和管理工作非常重要。关于计算机机房的维护和管理涉及诸多方面,本文主要从信息化硬件和软件支持财政方面做好机房的维护和管理工作,为整合资源优势,提供便利工作环境打下良好基础。  关键词:计算机机房;精心维护;强化管理;提高效率  中图分类号:TP308文献标识码:A文章编号:1
期刊
摘要:柔性蒙皮的皮肤不像刚性蒙皮那么僵硬,本文的目的就在于将长期应用于传统影视动画制作中的柔性蒙皮技术移植到交互领域中,即改变目前应用于交互领域中的角色几何体及其动画信息的数据结构,重新塑造一种信息文件的结构方式,使得在实时骨骼蒙皮的过程中,皮肤顶点受骨骼的影响值不会受到限制,达到真正意义上的柔性节点蒙皮,从而为交互状态下的角色动画提供一种新的动画解决方案。  关键词:交互式角色动画;骨骼蒙皮技术
期刊
摘要:本文在分析某航空制造企业商业智能系统需求的基础上,利用数据挖掘技术建立构建了航空制造企业商业智能系统,提出航空制造企业商业智能系统的标准结构模型。  关键词:航空制造企业;商业智能系统;数据挖掘  中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2012) 02-0000-02  Enterprises Business Intelligence System De
期刊
摘要:随着网络的不断扩展,校园网络覆盖以及网络接入方式逐渐增多,通过对VLAN技术的构建、特点,以及安全隐患和安全问题的解决措施介绍,结合校园网的现状进行分析,对校园VLAN的应用进行探讨。  关键词:VLAN技术;校园网;安全隐患;安全措施  中图分类号:G434 文献标识码:A文章编号:1007-9599(2012)01-0000-02  Safety Management of Of Cam
期刊
摘要:本研究经由资料搜集的整合、分析、探究Flash软件本身的特质后发现,Flash的功能性确实是适合在设计网页领域表现出可期待的动态效果,由于其影像表现可在网络媒体的空间中运用,展现出不同的设计形态,未来更为广泛被运用的趋势将使网络多媒体成为信息传达和人际沟通的好方法。  关键词:AdobeFlash;动态图像;网页设计;网络多媒体  中图分类号:TP391.41 文献标识码:A文章编号:100
期刊