虚拟机环境下的web缓存方法及装置制造方法

文档序号:6546826阅读:168来源:国知局
虚拟机环境下的web缓存方法及装置制造方法
【专利摘要】一种虚拟机环境下的web缓存方法,其特征在于,所述方法包括:通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包;获取所述http响应数据包中的缓存标识符;判断所述缓存标识符是否为可缓存,若是,则:获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中;将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。此外,还提出一种虚拟机环境下的web缓存装置。上述虚拟机环境下的web缓存方法及装置能够提高I/O效率。
【专利说明】虚拟机环境下的web缓存方法及装置
【技术领域】
[0001]本发明涉及虚拟机【技术领域】,特别是涉及一种虚拟机环境下的web缓存方法及装置。
【背景技术】
[0002]现有的虚拟化技术中,通常使用虚拟机管理对象(Hypervisor)将一台物理的计算机模拟成多台虚拟的计算机,并在虚拟化的环境里面运行操作系统的软件,典型的代表有:VMware公司的ESX、ESXi系列软件。
[0003]而由于多个虚拟机在同一个物理主机上共享存储,当多个虚拟机同时读写磁盘时,I/o就会变得非常的随机,产生一种“I/O搅拌器”的效果。特别对于虚拟机上运行的浏览器程序而言,由于其缓存的文件通常是数量较多的小文件,因此,其产生的I/o操作就更加随机,当同时运行浏览器程序的虚拟机数量较多时,大量的随机读写即会导致I/o效率较低。

【发明内容】

[0004]基于此,有必要提供一种能提高I/O效率的虚拟机环境下的web缓存方法。
[0005]一种虚拟机环境下的web缓存方法,包括:
[0006]通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包;
[0007]获取所述http响应数据包中的缓存标识符;
[0008]判断所述缓存标识符是否为可缓存,若是,则:
[0009]获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中;
[0010]将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。
[0011]在其中一个实施例中,所述方法还包括:
[0012]通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包;
[0013]获取所述http请求数据包的链接地址,在所述web缓存中查找所述链接地址对应的缓存数据;
[0014]将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
[0015]在其中一个实施例中,所述在所述web缓存中查找所述链接地址对应的缓存数据的步骤之后还包括:
[0016]若未查找到,则转发所述http请求数据包。
[0017]在其中一个实施例中,所述将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机的步骤之前还包括:[0018]判断所述查找到的缓存数据是否过期,若否,则执行将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机的步骤。
[0019]在其中一个实施例中,所述web缓存为内存缓存、压缩文件或reiserfs文件系统中的至少一种。
[0020]此外,还有必要提供一种能提高I/O效率的虚拟机环境下的web缓存装置。
[0021]一种虚拟机环境下的web缓存装置,所述装置包括:
[0022]数据包检测模块,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包;
[0023]缓存标识检测模块,用于获取所述http响应数据包中的缓存标识符,并判断所述缓存标识符是否为可缓存;
[0024]统一缓存模块,用于在缓存标识符为可缓存时,获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中;
[0025]缓存标识重设模块,用于将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。
[0026]在其中一个实施例中,所述装置还包括请求命中模块,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包;获取所述http请求数据包的链接地址,在所述web缓存中查找所述链接地址对应的缓存数据;将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
[0027]在其中一个实施例中,所述装置还包括请求转发模块,用于在未查找到相应的缓存数据时,转发所述http请求数据包。
[0028]在其中一个实施例中,所述请求命中模块还用于判断所述查找到的缓存数据是否过期,若否,则将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
[0029]在其中一个实施例中,所述web缓存为内存缓存、压缩文件或reiserfs文件系统中的至少一种。
[0030]上述虚拟机环境下的web缓存方法及装置中,并没有将web缓存的任务交由虚拟机上运行的浏览器程序自行进行处理,而是通过在虚拟机管理程序中设置统一的缓存区域,然后由虚拟机管理程序对web缓存进行统一的存储。并通过将http响应数据包中的缓存标识符修改为不可缓存来防止虚拟机上的浏览器程序对http响应数据进行缓存。使得虚拟机上运行的浏览器程序不会产生对虚拟机所在的物理主机上的磁盘的随机性较强的I/O操作,而由虚拟机管理程序在统一的缓存区域中进行读写,由于I/O操作的随机性大大降低,从而提高了 I/O效率。
【专利附图】

【附图说明】
[0031]图1为一个实施例中一种虚拟机环境下的web缓存方法的流程图;
[0032]图2为一个实施例中虚拟机系统的系统架构图;
[0033]图3为一个实施例中查找http请求对应的缓存数据的流程图;
[0034]图4为一个实施例中一种虚拟机环境下的web缓存装置的结构示意图;
[0035]图5为另一个实施例中一种虚拟机环境下的web缓存装置的结构示意图。【具体实施方式】
[0036]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0037]在一个实施例中,为解决前述的多虚拟机下浏览器读写缓存I/O效率不高的问题,特提出了一种虚拟机环境下的web缓存方法,该方法的实现可依赖于计算机程序,可运行于基于冯诺依曼体系的计算机系统上。该计算机系统可以是运行多个虚拟机的物理主机,该计算机程序可以作为hypervisor系统的插件独立存在也可作为hypervisor系统的功能模块而以来存在。也就是说,该方法是对现有的hypervisor系统进行的改进。
[0038]具体的,如图1所示,该方法包括:
[0039]步骤S102:通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包。
[0040]步骤S104:获取http响应数据包中的缓存标识符。
[0041]步骤S106:判断缓存标识符是否为可缓存,若是,则执行步骤S108和步骤S110。
[0042]步骤S108:获取http响应数据包对应的链接地址,拷贝http响应数据包的数据内容,并将提取的数据内容与链接地址对应存储到虚拟机管理程序设置的web缓存中。
[0043]步骤SllO:将http响应数据包中的缓存标识符设置为不可缓存,并传递给与http连接对应的虚拟机。
[0044]虚拟机管理程序即前述的hypervisor系统,也可以称为虚拟机管理器、虚拟机监视器或虚拟机管理软件。如图2所示,虚拟机管理程序负责管理物理主机上运行的虚拟机,为虚拟机在物理主机上的运行提供了平台。
[0045]在本实施例中,可通过虚拟机管理程序拦截物理主机上的网卡接收到的数据包,判断该接收到的数据包是否包含http协议头内容,例如HTTP/或HTTP/1.12000K字段等,若是,则判定该数据包为http响应数据包。
[0046]在本实施例中,http响应数据包中的缓存标识符即为响应数据包中的http协议头内容中的cache-control字段,若该cache-control字段中包含的http协议内容的cache-control 属性值为“no-cache” 或“no-store” 或“no-cache, no-cache”,则表不缓存标识符为不可缓存,反之,若不包含属性值,则表示可缓存。
[0047]若判定得到缓存标识符为可缓存,则由虚拟机管理程序自行缓存在统一的缓存区域中,而不会将http响应数据交由虚拟机中运行的浏览器程序进行缓存。
[0048]http响应数据包中提取的数据内容即为http响应数据包的正文部分中的数据内容。例如,若用户使用虚拟机上的浏览器程序访问网页,而该网页中的某个链接对应的网页内容为图片时,根据该链接发起的请求得到的http响应数据包中提取的数据内容即为该图片。在将http响应数据包中提取的数据内容写入缓存时,还需要提取http响应数据包的链接地址即url,并将该数据与url对应存储在缓存中,后期即可根据该url查找缓存数据。
[0049]优选的,虚拟机管理程序设置的统一的供其管理的虚拟机使用的web缓存可以是内存缓存、单一压缩文件或reiserfs文件系统中的至少一种。[0050]也就是说,虚拟机管理程序可在内存中划定内存区域作为web缓存,将提取的数据内容(即由http响应数据包中提取的数据,由于该数据若发送至虚拟机中运行的浏览器程序,则将被浏览器程序作为web缓存存储在物理主机的磁盘中,因此也可称为web缓存)存储在该内存区域中。由于内存读写速度较快,因此可以显著提高虚拟机上运行的浏览器程序加载缓存数据的速度。
[0051]若运行虚拟机的物理主机内存较小,则可在物理主机的磁盘上创建压缩文件作为web缓存,例如zip、7z等压缩格式的文件,而在将由http响应数据包中提取的数据内容写入该压缩文件时,可按照偏移量在该压缩文件的指定位置写入。
[0052]或者,还可使用reiserfs文件系统作为虚拟机管理程序的web缓存。reiserfs文件系统适用于较小文件的存储管理,对小文件频繁的I/O操作具有较高的效率。而web缓存通常为网页脚本、图片等较小的文件,因此,整体上也可提高I/O效率。
[0053]另外,还需要对网卡接收的http响应数据包进行修改,将http响应数据包中的缓存标识符设置为不可缓存,即将前述提到的http响应数据包中的cache-control字段的属性值设置为“no-cache”或“no-store”或“no-cache, no-cache”,设置完毕后,虚拟机管理程序即可将其分配给相应的虚拟机上运行的浏览器程序,浏览器程序接收到该http响应数据包之后,由于其中包含的cache-control字段为“no-cache”或“no-store”或"no-cache",因此不会对将其存储到web缓存中,即不会对物理主机的磁盘产生随机读写。
[0054]需要说明的是,上述步骤S108和步骤SllO并没有执行顺序的限制。
[0055]若判定得到缓存标识符为不可缓存,则执行步骤S112,即不对http响应数据包做处理。
[0056]相应的,虚拟机上运行的浏览器程序发起的http请求即可在虚拟机管理程序的缓存中得到响应,具体的,其过程如图3所示:
[0057]步骤S202:通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包。
[0058]步骤S204:获取http请求数据包的链接地址,在web缓存中查找链接地址对应的缓存数据;
[0059]步骤S206:将查找到的缓存数据返回给http请求数据包对应的虚拟机。
[0060]也就是说,虚拟机上运行的浏览器程序发起的http请求数据包需要由底层的虚拟机管理程序通过网卡发送至外部网络,虚拟机管理程序发送之前可将其拦截,获取其url,若url包含前述的http协议头内容,且method字段的属性值为“GET”(P0ST属性则可直接转发该http请求数据包),则可在前述统一的虚拟机管理程序设置的web缓存中查找该url对应的缓存数据,并将该缓存数据封装成http响应数据包的格式分配给拦截的http连接对应的虚拟机。若未查找到相应的缓存数据,则再转发该http请求数据包至外部网络。整个过程对于虚拟机管理程序上运行的虚拟机中的浏览器程序而言,其并不知道缓存数据的位置,因此实现了功能上的分离,并降低了耦合度。
[0061]进一步的,在查找到与http请求数据包的中的url对应的缓存数据之后,还需判断该查找到的缓存数据是否过期,若否,则再执行将查找到的缓存数据返回给http请求数据包对应的虚拟机的步骤。
[0062]也就是说,虚拟机管理程序的缓存中缓存的缓存数据可设置有超时时间,若该缓存数据在虚拟机管理程序设置的web缓存中存储了过长的时间(超出超时时间的时长),则该缓存数据即为无效数据,需要重新转发该http请求数据包至外部网络来获取最新的数据。
[0063]在一个实施例中,如图4所示,一种虚拟机环境下的web缓存装置,包括:数据包检测模块102、缓存标识检测模块104、统一缓存模块106以及缓存标识重设模块108,其中:
[0064]数据包检测模块102,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包。
[0065]缓存标识检测模块104,用于获取所述http响应数据包中的缓存标识符,并判断所述缓存标识符是否为可缓存。
[0066]统一缓存模块106,用于在缓存标识符为可缓存时,获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中。
[0067]缓存标识重设模块108,用于将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。
[0068]在本实施例中,如图5所示,虚拟机环境下的web缓存装置还包括请求命中模块110,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包;获取所述http请求数据包的链接地址,在所述web缓存中查找所述链接地址对应的缓存数据;将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
[0069]在本实施例中,如图5所示,虚拟机环境下的web缓存装置还包括请求转发模块112,用于在未查找到相应的缓存数据时,转发所述http请求数据包。
[0070]在本实施例中,请求命中模块110还用于判断所述查找到的缓存数据是否过期,若否,则将查找到的缓存数据返回给http请求数据包对应的虚拟机。
[0071]上述虚拟机环境下的web缓存方法及装置中,并没有将web缓存的任务交由虚拟机上运行的浏览器程序自行进行处理,而是通过在虚拟机管理程序中设置统一的缓存区域,然后由虚拟机管理程序对web缓存进行统一的存储。并通过将http响应数据包中的缓存标识符修改为不可缓存来防止虚拟机上的浏览器程序对http响应数据进行缓存。使得虚拟机上运行的浏览器程序不会产生对虚拟机所在的物理主机上的磁盘的随机性较强的I/O操作,而由虚拟机管理程序在统一的缓存区域中进行读写,由于I/O操作的随机性大大降低,从而提高了 I/O效率。
[0072]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种虚拟机环境下的Web缓存方法,其特征在于,所述方法包括: 通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包; 获取所述http响应数据包中的缓存标识符; 判断所述缓存标识符是否为可缓存,若是,则: 获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中; 将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。
2.根据权利要求1所述的虚拟机环境下的web缓存方法,其特征在于,所述方法还包括: 通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包; 获取所述http请求数据包的链接地址,在所述web缓存中查找所述链接地址对应的缓存数据; 将所述查找到 的缓存数据返回给所述http请求数据包对应的虚拟机。
3.根据权利要求2所述的虚拟机环境下的web缓存方法,其特征在于,所述在所述web缓存中查找所述链接地址对应的缓存数据的步骤之后还包括: 若未查找到,则转发所述http请求数据包。
4.根据权利要求2或3所述的虚拟机环境下的web缓存方法,其特征在于,所述将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机的步骤之前还包括: 判断所述查找到的缓存数据是否过期,若否,则执行将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机的步骤。
5.根据权利要求1所述的虚拟机环境下的web缓存方法,其特征在于,所述web缓存为内存缓存、压缩文件或reiserfs文件系统中的至少一种。
6.一种虚拟机环境下的web缓存装置,其特征在于,所述装置包括: 数据包检测模块,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http响应数据包; 缓存标识检测模块,用于获取所述http响应数据包中的缓存标识符,并判断所述缓存标识符是否为可缓存; 统一缓存模块,用于在缓存标识符为可缓存时,获取所述http响应数据包对应的链接地址,拷贝所述http响应数据包的数据内容,并将提取的数据内容与所述链接地址对应存储到虚拟机管理程序设置的web缓存中; 缓存标识重设模块,用于将所述http响应数据包中的缓存标识符设置为不可缓存,并传递给与所述http连接对应的虚拟机。
7.根据权利要求6所述的虚拟机环境下的web缓存装置,其特征在于,所述装置还包括请求命中模块,用于通过虚拟机管理程序拦截虚拟机的http连接获取该http连接的http请求数据包;获取所述http请求数据包的链接地址,在所述web缓存中查找所述链接地址对应的缓存数据;将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
8.根据权利要求7所述的虚拟机环境下的web缓存装置,其特征在于,所述装置还包括请求转发模块,用于在未查找到相应的缓存数据时,转发所述http请求数据包。
9.根据权利要求7或8所述的虚拟机环境下的web缓存装置,其特征在于,所述请求命中模块还用于判断所述查找到的缓存数据是否过期,若否,则将所述查找到的缓存数据返回给所述http请求数据包对应的虚拟机。
10.根据权利要求6所述的虚拟机环境下的web缓存装置,其特征在于,所述web缓存为内存缓存、压 缩文件或reiserfs文件系统中的至少一种。
【文档编号】G06F9/455GK104021028SQ201410210023
【公开日】2014年9月3日 申请日期:2014年5月16日 优先权日:2014年5月16日
【发明者】张国军 申请人:深圳市深信服电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1