网络目标高速缓存器引擎 【发明领域】
本发明涉及用于高速缓存使用计算机网络传送的目标的设备。
有关技术
在用于传输信息的计算机网络中,经常呼叫信息供应者(有时称为“服务器”)以向多个接收方(有时称为“客户机”)传送相同或相似信息或向同一个接收方传送多次。这就产生多次传输相同或相似的信息,增加了网络通信结构和服务器资源的负担,并使客户机遭受相对长的反应时间。在几种情况下该问题尤其严重:(a)一个特定服务器突然变得很流行;(b)来自特定服务器的信息被例行分配给相对大量的客户机;(c)来自特定服务器的信息是相对限时的;和(d)在服务器和客户机之间或客户机与网络之间的通信路径相对慢些。
一个已知的方法是提供一种设备(例如在软件控制下工作的通用处理器),该设备用作代理服务器,接收来自一个或更多客户机的信息请求,从一个或更多服务器获得信息,并将该信息传送给代替服务器的客户机。当代理服务器已预先从一个或更多客户机获得信息时,它能够将该信息发送给客户机而不必重复请求服务器。虽然该方法实现降低网络业务量和服务器负荷的目的,其缺点是本地操作系统和本地文件系统或代理服务器的文件服务器需要大量开销。这增加了操作网络地费用并减慢服务器和客户机之间的通信路径。
存在几个延迟因素,主要由代理服务器放弃对本地操作系统和本地文件系统的存储控制引起:(a)代理服务器不能在大容量存储器中来自服务器的信息以便最快速存取;和(b)代理服务器不能以优化对大容量存储器存取的方式删除从服务器接收的旧网络目标和存储从服务器接收的新网络目标。除了增加费用和延迟,代理服务器放弃对存储的控制还限制了代理服务器对存储器使用的操作性:(a)当代理服务器正工作时很困难或不可能增加或减少分配给代理服务器的存储器;和(b)代理服务器和其本地文件系统不利用昂贵的冗余存储技术例如RAID存储系统就不能恢复存储的任何丢失。
因此,需要提供一种方法和系统用于高速缓存器使用计算机网络所传输的信息,该方法和系统不易因必须使用本地操作系统和本地文件系统或文件服务器而增加延迟和限制操作性。这一优点在本发明实施例中实现,其中耦合到网络的一个高速缓存器引擎提供所传输目标的高速缓存器,通过采取对何时何地将这些目标存储在大容量存储的直接控制而存储到内存和大容量存储器中。高速缓存器引擎可以将这些目标全息存储以便继续平缓地操作和从其大容量存储器的增加,失败,或删除中慢慢地恢复。
发明概述
本发明提供一种方法和系统,用于高速缓存使用计算机网络传输的信息目标。在本发明中,高速缓存器引擎直接确定在内存(例如RAM)和大容量存储(例如一个或更多磁盘驱动器)中何时何地存储这些目标,以便优化地将这些目标写入大容量存储并在以后从大容量存储中读取,而不必持续地维护它们。该高速缓存器引擎主动地将目标分配给内存或磁盘,确定在磁盘上何地存储这样目标,响应它们的网络标志符(例如它们的URL)检索这些目标,和确定从高速缓存器中删除哪个目标以便保存合适的剩余空间。
在优选实施例中,高速缓存器引擎采集在写操作中写入磁盘的信息,以便当将信息写入磁盘时使效率最高和以便当以后从磁盘中读取这些信息时效率最高。该高速缓存器引擎执行写操作以便在每个写操作期间自动提交磁盘更新,因此该高速缓存器引擎不会随电源或存储的损失或其它高速缓存器部分的中间故障而失败。该高速缓存器引擎在多个磁盘的每个上存储密钥体制目标,以至在磁盘的任何子集损坏仅减少可用高速缓存器数量的意义上保存了高速缓存器全息性。该高速缓存器引擎选择在删除操作中将从磁盘上删除的信息,以便当从磁盘上删除信息时使效率最高和以便当以后将新信息写入磁盘的这些区域时使效率最高。该高速缓存器引擎响应磁盘的增加或删除作为可用高速缓存器数量的增加和减小。
附图简介
图1表示在计算机网络中网络目标高速缓存器引擎的方框图。
图2表示数据结构的方框图,用于保存一组高速缓存器的网络目标的存储块。
图3表示用于高速缓存器网络目标的数据结构的方框图。
图4表示一组原有和修改过的块的方框图。
图5表示一种方法的流程图,用于将修改过的块自动写到一个单独的磁盘驱动器。
图6表示大容量存储上的一组指针和区域的方框图。
优选实施例的详细说明
在下列说明中,针对最优处理步骤和数据结构描述了本发明的一个优选实施例。本领域技术人员在阅读本申请后将认为本发明实施例能够使用通用处理器和存储设备,专用处理器和存储设备,或在此描述的其它适合于特定处理步骤和数据结构的电路来实现,和在此描述的这些处理步骤和数据结构的实现将不需要过度的实验或进一步的发明。
高速缓存网络目标
图1表示了在计算机网络中的网络目标高速缓存器引擎的方框图。
一个高速缓存器引擎100被连接到计算机网络110,以便该高速缓存器引擎100能够从一组也连接到网络的设备111中接收消息。
在优选实施例中,该网络110包括多个这样的设备111,使用通信介质112相互连接。例如,在网络110包括LAN(局域网)的地方,该通信介质112包括以太网电缆,光纤连接,或其它媒介。该网络110最好包括网中网,有时称为“互联网”或“内部网”。
在优选实施例中,连接到网络110的设备111与使用一个或更多通信协议例如HTTP(超文本传输协议)或其变体之一的FTP(文件传输协议)或其它协议与高速缓存器引擎100通信。该高速缓存器引擎100包括一个处理器101和一个高速缓存器102。在优选实施例中,该处理器101包括一个通用处理器,在软件控制下工作以执行在此描述的方法和构成并使用在此描述的数据结构;如在此所用的,当高速缓存器引擎100执行具体任务或维护具体数据结构时,参考包括在软件控制下由处理器101作出的适当操作,该软件保存在程序和数据存储器103中。
该高速缓存器引擎102包括程序和数据存储器103和一个大容量存储器104。在优选实施例中,该大容量存储器104包括多个磁盘驱动器例如磁盘驱动器,但也可以另外包括光或磁光盘驱动器。如同在此所使用,参考“磁盘”和“磁盘驱动器”表示大容量存储器104和其各个驱动器,即使大容量存储器104和各个驱动器不包括物理上为盘状的元件。该高速缓存器引擎100连接到网络110和能够根据一个或多个协议接收和发送一组协议消息113,这些协议由设备111用来与高速缓存器引擎100通信。
该高速缓存器引擎100在高速缓存器102中保存一组网络目标114。高速缓存器引擎100从一组“客户机”设备111接收协议消息113以请求从一组“服务器”设备中检索网络目标114。随后,该高速缓存器引擎100发布协议消息113以从一个或多个服务器设备111中请求网络目标114,接收这些网络目标114并存储在高速缓存器102中,和将这些网络目标114发送到正请求的客户机设备111。
当在此使用时,术语“客户机”和“服务器”表示该客户机或服务器与高速缓存器引擎100之间的关系,不必是具体的物理设备111。当在此使用时,一个“客户机设备”111或一个“服务器设备”111可以包括下列任何东西:(a)一个执行软件的单独物理设备111,该设备带有对高速缓存器引擎100的客户机或服务器关系;(b)物理设备111的一部分,例如在一硬件设备111上执行的一个软件程序或一组软件程序,物理设备的该部分带有对高速缓存器引擎100的客户机或服务器关系;或(c)多个物理设备111,或其部分,合作形成带有对高速缓存器引擎100的客户机或服务器关系的物理实体。该词汇“客户机设备”或“服务器设备”是指这种逻辑实体但不必是具体的各个物理设备111。
高速缓存器引擎100在高速缓存器102中保留网络目标114,和通过向请求它们的客户机设备111连续提供它们而重复使用这些网络目标114。当高速缓存器102变得足够满时,高速缓存器引擎100从高速缓存器102中删除网络目标114。例如,高速缓存器引擎能够如同在“从高速缓存器中删除目标”部分所描述的那样删除目标。
在优选实施例中,高速缓存器引擎100使用存储器103作为高速缓存器用于使用大容量存储器104所维护的这些网络目标114,而使用合并的存储器103和大容量存储器104作为高速缓存器102用于在文件网络110上可用的网络目标114。
高速缓存器102不是文件存储系统,和存储在高速缓存器102中的网络目标114可以由高速缓存器引擎100在任何时间自动从高速缓存器102中删除。所有网络目标114和所有由高速缓存器102维护的其它数据是暂态的,除了被要求用于操作的非常少量的系统目标,和这些系统目标被冗余保存在大容量存储104中,以便保存这些系统目标防备大容量存储器104(例如一个或多个磁盘驱动器损坏)一部分的可能损坏。这样高速缓存器引擎100不必保证存储在高速缓存器102中的网络目标114在被存储后的任何时间都是可用的,并且高速缓存器102(例如大容量存储器104的部分)部分失败或甚至有意删除不能引起高速缓存器引擎100失败。类似地,恢复或有意地增加额外的大容量存储器104(例如磁盘驱动器的“热交换”)被平稳地合并到高速缓存器102中而不必中断高速缓存器引擎100的操作。
另外,高速缓存器引擎100独自操作以执行高速缓存器网络目标114的操作。不存在单独的“操作系统”,没有用户,和不存在在处理器101上独立执行的用户应用程序。在存储器103内,不存在单独的用于“用户”和“操作系统”的存储空间。高速缓存器引擎100自身维护网络目标114的高速缓存器102并选择用于在高速缓存器102中保存或从高速缓存器102中删除的网络目标114,操作以便(1)定位将网络目标114写入大容量存储器104,(2)定位从大容量存储器104中删除网络目标114,和(3)用新的网络目标114有效代替在高速缓存器102中的网络目标114。在优选实施例中,高速缓存器引擎100有效地执行这些操作同时操作由网络目标114相关填充的高速缓存器102。
在优选实施例中,高速缓存器引擎100保存有关对高速缓存器102存取的统计。这些统计可以包括下列内容:
·一组用于高速缓存器102的命中率,包括(1)与从服务器设备111中必须检索出的网络目标相比在高速缓存器102中发现的用于网络目标114的命中率,和(2)与从大容量存储器104中必须检索出的网络目标相比在存储器103中发现的用于网络目标114的命中率;
·一组在存储器103上的操作统计,包括(1)保存在存储器103中的网络目标114的数量,和(2)专用于高速缓存器网络目标114的存储器103部分比存储系统目标或未分配的部分;和
·一组在大容量存储器104上的操作统计,包括(1)从大容量存储器104读取操作的数量,(2)对大容量存储器104的写操作的数量,包括在此描述的“写操作”数量,和(3)专用于高速缓存器网络目标114的大容量存储器104的部分比存储系统目标或未分配部分。
该高速缓存器引擎100也能够保存上述的组合或变体。
使用高速缓存器引擎
在许多情况下高速缓存器引擎100能够在网络110中提供性能改善或额外功能。例如,高速缓存器引擎100能够用作代理服务器高速缓存器(是否提供防火墙,提供用于连接到局域网的客户机设备111的高速缓存器,或反之),用作反向代理服务器高速缓存器,用作高速缓存器用于由单独ISP客户机作出的请求,用作高速缓存器用于“推行”协议,或用作加速器或服务器高速缓存器。
高速缓存器引擎100向客户机设备111提供对网络目标114相对更快的存取或反之从服务器设备111直接可得到。一般客户机设备111从高速缓存器引擎100请求这些网络目标114,或者将它们从高速缓存器102传输到客户机设备111,或者从服务器设备111获得和然后传输到客户机设备111。
高速缓存器引擎100能够行使更多智能和预先动作,而非简单等待由客户机设备111请求的文件:
·高速缓存器引擎100能够配置成利用所选择的网络目标114预加载,该目标预计由客户机设备111请求。例如,已知某些网络目标114通常由客户机设备111通过熟悉的互联网的网络110一般地请求;这些网络目标114能够在制造时预加载在高速缓存器引擎100中。这些网络目标114可以包括知名公司(例如NETSCAPE)的主页和知名搜索引擎(例如DIGITAL公司的“ALTA VISTA”)。
·高速缓存器引擎100能够响应有关通常所请求的网络目标114的一组统计而定期请求网络目标114。例如,有关通常所请求的网络目标114的信息可以保存在服务器设备111上;高速缓存器引擎100能够从服务器设备111请求这些信息和定期请求这些网络目标114用于存储在高速缓存器102中。在优选实施例中,当客户机设备111不主动使用高速缓存器引擎100时高速缓存器引擎100能够定期执行这些操作,例如在深夜或清晨相对无载荷时间。
·高速缓存器引擎100能够响应客户机设备111上的一组客户机优先权统计而定期请求网络目标114。例如,高速缓存器引擎10能够从客户机设备111接收(或者根据请求或反之)一组书签并能够从服务器设备111请求这些网络目标114。在优选实施例中,高速缓存器引擎100能够请求这些网络目标114,该目标在例如一天的所选择时间周期内已经改变。
·高速缓存器引擎100可向一个或多个服务器设备111提供镜像站点。通过周期地或根据请求,自服务器设备111接收的网络目标114由服务器设备111发送给客户机设备111,该目标已在所选的例如一天的时间周期内改变。
·通过接收对分布在多个高速缓存器引擎100中的服务器设备111的请求,高速缓存器引擎100能够为一个或更多服务器设备111提供加速器。每个高速缓存器引擎100维护带有网络目标114的高速缓存器102,该网络目标由服务器设备111发送给客户机设备111。这样由服务器设备提供的服务被加速,因为每个高速缓存器引擎100能够响应一些信息的加载请求,而对所通过信息请求数量的限制必须由服务器设备111自身处理。
·高速缓存器引擎100能够提供对一个或更多服务器设备111第一类推行协议辅助,通过使用一个推行协议将网络目标114传输到一个或更多客户机设备111或代理高速缓存器。例如,当服务器设备111提供网络广播服务时,高速缓存器引擎100能够从将广播到网络110子集的服务器设备111接收网络目标114和能够独立广播这些网络目标114。
·高速缓存器引擎100能够提供对一个或更多服务器设备111第二类推行协议辅助,通过允许服务器设备111将网络目标114广播给多个高速缓存器引擎100。每个高速缓存器引擎100能够使广播网络目标114对客户机设备111可用,这些客户机设备从高速缓存器引擎100请求这些网络目标114就象高速缓存器引擎100就是用于这些网络目标114的服务器设备111。
网络目标114能够包括数据,例如HTML页,文本,图形,图片,音频,视频;程序,例如JAVA或ACTIVE X应用小程序或应用程序;或其它类型的网络目标,例如推行协议目标。高速缓存器引擎100能够在高速缓存器102中记录流动音频或流动视频信息帧,用于由多个客户机设备111的延迟使用。某些类型的已知网络目标114不高速缓存器,例如CGI输出或由服务器设备111标记为非高速缓存器的项目。
在优选实施例中,高速缓存器引擎100能够从协议消息113或通过其它方式搜集关于客户机设备111的知识,例如网络110中的询问路由设备,和能够对这些信息反应以向不同的客户机设备111提供不同的网络目标114。例如,高速缓存器引擎100能够因相近或内容而响应关于客户机设备111的信息选择服务器设备111,如下:
·高速缓存器引擎100能够因快速反应而选择特定服务器设备111,例如因网络路由相近或因在多个服务器设备111上扩展业务负载。
·高速缓存器引擎100能够响应关于客户机设备111的信息而选择服务器设备111上的内容,例如编制回应语言(例如英语或法语的帮助页),或例如编制本地信息(例如广告,新闻,或气象)。在优选实施例中,本地信息例如广告可以从本地服务器设备111中检索,该服务器设备提供用于插入服务本地客户机设备111的页上的广告。
高速缓存器
图2表示数据结构的方框图,用于为一组所高速缓存器的网络目标保存存储块。
每个块100能够包括任一数据块200,其中包含数据,即高速缓存器引擎100不使用但为客户机设备111保存的信息,或控制信息,即由高速缓存器引擎100使用而客户机设备111不使用的信息。
块200组成一组目标210,每个目标包括一个目标描述符211,一组数据块200,和一组从目标描述符211引用数据块200的块指针212。目标描述符211包括一个分开的控制块200。在块指针212不符合一个单独的控制块200的地方,或对于相对较大目标210的其它类型,目标描述符211能够引用一组间接块216,每个间接块引用下级间接块216或数据块200。每个间接块216包括一个分开的控制块200。相对较小的目标210不需要间接块216。
高速缓存器102包括一组块200,在优选实施例中每个块包括4096个字节,和每个块可以存储在存储器103或大容量存储器104中。在可选实施例中,每个块200可以包括并非4096字节的规模,和可以对应于可用存储器103或大容量存储器104的数量。
每个块指针212包括一个指针值215,该值包括一个单独32位字并表示块200在大容量存储器104上的位置,例如一个物理磁盘块地址。
在另一个实施例中,每个块指针212包括一个第一位213,表示所引用的块200是存储在存储器103中还是存储在大容量存储器104中,一个第二位214,表示所引用的块200是控制块200(包括控制信息)还是数据块200(包括用于网络目标114的数据),和指针值215包括一个30位数值,表示块200的位置。在这样一个实施例中,当块200存储在存储器103时,指针值215表示在存储器103中的一个字节地址;当块存储在大容量存储器104中时,指针值215表示在大容量存储器104上的一个物理磁盘块地址。
在优选实施例中,由根目标220引用每个目标210,根目标冗余地保存在每个大容量存储器104的每个磁盘驱动器的多个(优选两个)根块221拷贝中。在优选实施例中,对于大容量存储器104的每个磁盘驱动器存在一个根目标220。这样,大容量存储器104的每个磁盘驱动器具有一个单独的根目标210,其使用根块221的两个拷贝保存。每个磁盘驱动器的根目标220引用用于该磁盘驱动器的每个当前目标210。
在优选实施例中,根块221的一个拷贝保存在大容量存储器104的每个磁盘驱动器的每个物理磁盘块2和3上。当用于该磁盘驱动器的根块221被写入大容量存储器104时,首先写入到物理磁盘块2,和然后同样地写入物理磁盘块3。当高速缓存器引擎100被启动或重新启动时,根块221被从物理磁盘块2中读取。如果该读取操作成功,然后同样地再写入到物理磁盘块3;可是,如果该读取操作不成功,而是从物理磁盘块3读取根块221,和然后同样地再写入到物理磁盘块2。
在优选实施例中,高速缓存器引擎100也冗余地在大容量存储器104的每个磁盘驱动器上存储某些系统目标210,以便在磁盘驱动器的任何子集损坏而减少可用高速缓存器数量时保存高速缓存器102全息。这样,每个这样的系统目标210由根目标220引用用于磁盘驱动器和使用其目标描述符211的两个拷贝保存。这些冗余保存的系统目标210包括根目标220,一个块映象目标210,和一个散列表350(图3),每个如同在此所描述,和其它系统目标,例如用于所采集的统计文件和程序代码的目标210。
在存储器103中保存了块200的一个子集,以便使用存储器103作为用于大容量存储器104的高速缓存器(正如存储器103和大容量存储器104共同地作为用于网络目标114的高速缓存器102)。保存在存储器103中的该块200由一组块处理230引用,其也保存在存储器103中。
每个块处理230包括一个正向处理指针232,一个反向处理指针233,一个引用计数器234,一个块地址235,一个缓冲器指针236,和一组标记237。
正向处理指针232和反向处理指针233引用块处理230的双重链接表中的其它块处理230。
引用计数器234保存由高速缓存器引擎100的过程对块200的引用记数。当用于块200的一个块处理被高速缓存器引擎100的过程要求或被释放时该引用计数器234被更新。当引用计数器234达到零时,不存在对块200的引用,和在已经被写入磁盘后其被安放在可用块200的空闲表中,如果在下次写操作中已经被修改。
块地址235具有与块指针212相同的格式。高速缓存器区指针236引用用于块200的高速缓存器区。标志237记录关于块200的其它信息。
在一个实施例中,块处理230也使用一组应用“2Q”技术的2Q指针238和2Q引用计数器239来索引块处理230,如同对“2Q”进一步的说明:THEODORE JOHNSON和DENNIS SHASHA所著“一种低开销高性能高速缓存器管理置换算法”在此引用作为参考。
如何高速缓存器网络目标
图3表示用于高速缓存器网络目标的数据结构的方框图。
高速缓存器引擎100从网络110接收协议请求。在优选实施例中,每个协议请求使用HTTP协议(或一种变体例如SHTTP),和每个HTTP请求包括一个URL(唯一资源定位器)310,该定位器识别网络110中的一个网络目标114。在优选实施例中,每个URL310识别用于网络目标114的服务器设备111和在服务器设备111上的网络目标114的位置。
在可选实施例中,高速缓存器引擎100可以使用HTTP或其变体以外的其它协议;和高速缓存器引擎100可以响应除其URL310之外的用于网络目标114的一个或更多标识符。因此,如在此所用的,术语“URL”一般指能够标识或有助于标识一个特定网络目标114的任何类型的标识符。
该URL310包括一个主机标识符,其标识该网络目标114所处的服务器设备111,和一个文件标识符,其标识网络目标114处于服务器设备111上的位置。在优选实施例中,该主机标识符包括一个字符串名称用于服务器设备111,其能够被解析成一个IP(互联网协议)地址。可是,在可选实施例中,该主机标识符可以包括用于服务器设备111的IP地址,而非用于服务器设备111的字符串。
高速缓存器引擎100包括一个散列函数320,其使URL 310与一个散列署名相关联,其在高速缓存器102中的散列表350中索引一个散列表元。在优选实施例中,该散列表350包括一组用于每个磁盘驱动器的散列表350,其每个引用大容量存储器104的该磁盘驱动器上高速缓存器102中存储的这些网络目标114。每个这样的散列表350具有其自己的目标描述符211;该散列表350共同形成一个单独的逻辑散列表。
在优选实施例中,该散列标记330包括一个32位未署名号整数值,该值对应URL310确定,和该值预计相对唯一地分布在32位无符号整数值的所有可能区域上。在优选实施例中,URL310还与一个64位URL相关联署名,其也是一个响应该URL10的未署名整数值,和其预计相对唯一地分布在64位无符号整数值的所有可能区域上;当比较URL310时,首先比较URL署名,和仅当它们相等时是被比较的URL310自身。在优选实施例中,在确定散列标记330或URL标记之前URL310也被转换为一个标准形式,例如通过将在此的所有字母字符转换为一个单一格式(小写或大写)。在优选实施例中,每个非空散列表元340包括一个数据块200。
因为散列表350用散列表350中的散列表元340直接关联URL310,在高速缓存器102中存储的网络目标114不是全息的;每个网络目标114能够被引用和在固定时间内从高速缓存器102存取,例如少于大约两个磁盘的读存取时间。另外,对于高速缓存器102中的网络目标114必须具有唯一名称方面没有特别要求;当网络目标114具有相同名称时(例如当它们是相同网络目标114的旧的和新的版本时),散列表350对于它们两个都简单地指向相同的散列表元340。
当存在相同网络目标114的旧和新版本时,高速缓存器引擎100通过URL310将新引用解析成为网络目标114的新版本。当网络目标114的新标本存储到高速缓存器102时已经存取旧的网络目标114版本的客户机设备将继续存取网络目标114的旧版本。可是,即使用URL310通过相同客户机设备对该网络目标114的随后存取将由高速缓存器引擎100解析成为网络目标114的新版本。当所有客户机设备111使用旧版本完成时,马上将网络目标114的旧版本删除。
高速缓存器102与文件系统的不同在于客户机设备111不具备在高速缓存器102中存储网络目标114的控制权,包括(1)用于网络目标114存储的名称空间,(2)命名或重新命名网络目标114的能力,(3)任何时候是否从高速缓存器102中删除网络目标114,和(4)网络目标114是否完全存储在高速缓存器102中。
在优选实施例中,高速缓存器引擎100使用存储器103和大容量存储器104(最好是多个磁盘驱动器)来高速缓存器网络目标114以便在高速缓存器102中保存最可能由客户机设备111请求的网络目标114。可是,在可选实施例中,高速缓存器引擎100可以在保存最可能由客户机设备111请求的网络目标114之外实施所选择的管理要求,例如选择或排斥某些网络目标114的种类或客户机设备111或服务器设备111的某些种类,是否在是全天或在所选择的时间和所选择的日子。
高速缓存器引擎100使用散列函数320和散列表350识别与URL310(并由此与网络目标114相关)相关的一个目标210(和这样的一个或更多数据块200)。该高速缓存器引擎100操作该目标210从高速缓存器102检索由HTTP请求的网络目标114,并将该网络目标114发送给客户机设备111。高速缓存器引擎100使用存储器103和大容量存储器104维护高速缓存器102,以致目标210是否在高速缓存器102中,和如果在高速缓存器102中,目标210是否在存储器103内或在大容量存储器104上对于客户机设备111是透明的(除了从存储器103或从大容量存储器104检索目标210时的不同时间延迟的可能)。
如同在“写入磁盘”部分中所描述的,高速缓存器引擎100偶尔将块200(和包括这些块200的目标210)从存储器103写入大容量存储器104,以便在最频繁存取的存储器103中保存这些块200。
如同在此所描述,当从存储器103将块写入大容量存储器104时,高速缓存器引擎100控制块200被写到大容量存储器104上的何处(例如确定在大容量存储器104的哪个磁盘驱动器上和在该磁盘驱动器上的哪个位置),和何时写到大容量存储器104上(例如确定何时将数据写到大容量存储器104上有利)。高速缓存器引擎100试图优化块200写到磁盘上的时间和位置,以便使从磁盘上读取和写入的时间和空间最小。
散列表350是一个系统目标210,和类似于其它系统目标210,包括一个目标描述符211,零或更多间接块216,和零或更多数据块200。因为散列表350预计相对频繁地被使用,其间接块216预计总是保存在存储器103中,尽管对于相对大的散列表350一些数据块200将保存在大容量存储器104中。在优选实施例中,散列表350分布在大容量存储器104的多个磁盘驱动器上,和每个磁盘驱动器的散列表350部分在该磁盘驱动器的根目标220中引用。
每个散列标记330均使用以散列表350中的散列表元340的数量为模数的散列标记330索引到散列表350内。每个散列表元340包括一个块200。每个散列表元340包括零或更多散列项目360;每个散列项目360包括对于散列项目360的目标210的一个引用(包括对于该目标210的目标描述符211的一个指针)。
散列表元340包括一个二级散列表,具有多个二级散列表项目系列(例如32个这样的系列)。使用散列标记330来选择该系列之一以便搜索有关URL310的散列项目360。
在另一个实施例中,散列项目360以二级散列值顺序列表保存在散列表元340内,带有可能分散的零项目(当有关的网络目标114已经删除或反之从散列表350中删除时);二级散列值也根据散列署名330来确定,例如通过计算以所选择的值例如2**32为模数的散列署名330。如果存在带有相同二级散列值的多个散列项目360,高速缓存器引擎100检查与多个散列项目360的每个相关的目标描述符211以查出与具有相关散列署名330的URL310有关的正确网络目标114的URL310。
在优选实施例中,每个散列表元340具有所选择的规模,该规模足够保存至少15到2倍预计散列项目360的数量,如果散列项目360是最优均匀分布的(该选择规模最好是一个数据块200)。如果散列项目360被指定给一个满的散列表元340,已经与该散列表元340有关的网络目标114之一与有关的散列项目360一起被从散列表元340和从高速缓存器102中删除以产生用于新的散列项目360的空间。
在优选实施例中,能够存在多个不同操作策略用于选择哪个目标210是可删除的。
具有多个磁盘驱动器的大容量存储器
高速缓存器引擎110为在大容量存储器104上当前或最近出现的每个磁盘驱动器保存一个DSD(磁盘设备描述符)目标210,其包括描述该磁盘驱动器的一个数据结构。高速缓存器引擎100也保存一个DS(磁盘设备)目标210,其引用所有DSD目标210,和其冗余地保存在大容量存储器104的一个或多个磁盘驱动器上。这样,DS目标210冗余保存在大容量存储器104的多个磁盘驱动器上(最好所有的),且每个磁盘驱动器的信息被保存在该磁盘驱动器的DSD目标210中。
每个DSD目标210包括至少下列信息:(1)磁盘驱动器数量;(2)所有磁盘驱动器集中的总规模;(3)对于每个磁盘驱动器---该磁盘驱动器的单独规模,对于该磁盘驱动器的一个描述符,和所有磁盘驱动器阵列的一个索引;和(4)对于每个磁盘驱动器---保存在该磁盘驱动器上的散列标记330的区域。保存在每个磁盘驱动器上的散列标记330的区域也保存在一个单独的系统目标210中,该目标将每个散列标记330映射到一个具体磁盘驱动器。在优选实施例中,规模是由所选择的值例如1兆字节的倍数来表示的。
散列项目360按照每个磁盘驱动器的大小成比例地分布在多个磁盘驱动器上,围绕散列项目360的一个整数值。
当增加,删除,或替换一个磁盘驱动器时,高速缓存器引擎100产生或修改有关的DSD目标210,和更新DS目标210。该操作以更新数据块200相似的方式进行;这样,任何引用DS目标210或DSD目标210之一的控制块也被更新,和利用下次写操作自动执行对大容量存储器104的更新。(对每个磁盘驱动器自动执行对DS目标210的更新,每次一个。)这样,大容量存储器104能够动态地更新,包括改变标识或磁盘驱动器数量,同时高速缓存器引擎100连续工作,和对高速缓存器引擎100的唯一影响是改变了可用于高速缓存器102的大容量存储器104数量的感觉。
写入到磁盘
高速缓存器引擎100应用“延迟写入”技术,其中写入到高速缓存器102(包括已经在高速缓存器102出现的旧目标210的新版本目标210)的目标210首先被写入到存储器103,和随后写到大容量存储器104。不同于使用延迟写入技术的文件系统,不需要提供非易失随机存储器或UPS(不间断电源)和有关的顺序关机程序,因为高速缓存器引擎100不保证在高速缓存器102中的网络目标114的持久性。例如,如果一个具体的网络目标114从高速缓存器102中丢失,该网络目标114一般能够从有关的服务器设备111中重新获得。
可是,使用延迟写入技术以保存高速缓存器102的一致性,通过不重写控制块200或数据块200(除了根块221)。相反,修改的块200被写入到大容量存储器104,替换原来的块200,和原来的块200被释放,自动操作的所有步骤称为“写操作”。如果写操作中断或失败,整个写操作自动失败和原来的块200保存可用。
当原来数据块200的下层数据被修改时产生一个修改后的数据块200(或当新的下层数据,例如用于新的网络目标114,存储在新数据块200时)。当由原来控制块2200引用的原来控制块200之一(原来数据块200或原来控制块200)被修改后的块200(修改后数据块200,新的数据块200,或修改后控制块200)替代时,产生一个修改后的控制块200;该修改后控制块200引用修改后块200而非原来块200。
建立每个写操作以便优化将块200写入到大容量存储器104的操作和而后将这些块从大容量存储器104读取的操作。下列技术被使用以实现读取和写入的最佳目标:
·采集和写入的修改后块200并在可能时写入大容量存储器104的磁盘驱动器顺序磁道;
·间接块216被写入靠近的并在它们所引用的那些数据块200之前的存储块,以便能够在任何可能的时刻以相同读取操作读出所引用的数据块200;
·与顺序有关的数据块200被写入用于大容量存储器104的磁盘驱动器之一上的顺序的空闲存储块(如果可能,连续的空闲存储块),以便能够在任何可能的时刻以相同读取操作读出所引用的数据块200;
·将被写入的块200(控制块200或数据块20)因它们的相关目标210被采集到一起并由相对地址在每个目标210内排序,以便能够在任何可能时刻以相同读取操作为一个特定目标210读取块200。
图4表示一组原来和修改后的块的方框图。
图5表示将修改后块自动写入一个单独磁盘驱动器的方法的流程图。
块200的树型结构(图4)包括原来控制块200和原来数据块200,其已经被写入到大容量存储器104和由根目标220引用。一些或全部原来块200能够被保存在存储器103中用于使用。
方法500(图5)包括一组注释的流程点,和由高速缓存器引擎100执行的步骤。
在流程点510,修改后数据块200和新的数据块200被保存在存储器103中还没有写入到磁盘。
因为没有数据块200被重写,引用修改后数据块200的每个原来控制块200(和每个引用修改后控制块200的每个原来控制块200)必须被修改后控制块200所替代,沿树型结构一直向上到根目标200。
在步骤521,对于每个修改后数据块200,在大容量存储器104上分配一个空闲存储块用于记录修改后数据块200。块映射目标210被修改以反映用于修改后数据块200的存储块分配和释放用于原来数据块200的存储块。
块映射目标210保存关于在大容量存储器104上哪个存储块被分配并具有所存储的数据的信息,和那个存储块被释放并可以使用。高速缓存器引擎100搜索用于空闲存储块的块映射目标210,将写入指针保存在块映射目标210中以便以循环法方式执行搜索。这样,当写入指针250超越块映射目标210尾端时,其绕回到块映射目标210的始端。写入指针250被保存在根目标220中以至搜索以循环法持续下去,甚至在高速缓存器102失败和重新启动后。
为保存高速缓存器102在失败情况下的一致性,如果仍然被引用,甚至如果被根目标220间接引用,空闲存储块200不能被认为空闲(和因而被使用)。因此,这些在根目标200自动提交之前空闲的块200不被认为空闲,直到根目标220被自动写入到磁盘。
在步骤522,对于引用将在写操作中修改的原来块200的每个原来控制块200,产生一个修改后控制块200。以与步骤521类似方式,在大容量存储器104上的空闲存储块被分配用于记录修改后控制块200。以与步骤521类似方式,块映射目标210被修改以反映用于修改后控制块200的存储块分配和释放用于原来控制块200的存储块。
为树型结构400的每一级重复步骤522直到根目标200。
在步骤523,为被修改的块映射目标210的那些块200重复步骤521和步骤522的操作。
在步骤524,修改后数据块200和修改后控制块00(包括块映射目标210)被写入所分配的大容量存储器104上的存储块。
在步骤525,根目标220被重新写入大容量存储器104上的位置。
在流程点530,根目标220已经被重新写入,树型结构400的所有改变已经被自动提交;修改后块200已经变成树型结构400的一部分和被修改后块200替代的原来块200已经变成空闲的并适合重新使用。修改后块映射目标210没有自动提交直到根目标220已经重新写入,因此指示为已分配或空闲的存储块不再被如此指示,直到在流程点530写操作已经自动提交。
当修改后块200实际分配给存储块和被写入这些大容量存储器104上的存储块时,它们以下列方式写入:
·在以深度优先从上到下方式遍历树型结构,以便保证在它们引用修改后数据块200之前修改后数据块200被按照存储块顺序写入;
·在每个修改后控制块200,所引用的修改后数据块200在以深度优先从上到下方式遍历,以便保证在引用它们的修改后数据块200之后所引用的修改后数据块200被按照存储块顺序一起被组成簇;
该技术帮助保证当读取控制块200时,它们引用的数据块200在任何可能时刻被先读(READ-AHEAD),以便使从大容量存储器104读取控制块200和数据块200所需要的操作数量最少。
响应存储器103条件(包括在存储器103中修改后块200的数量),大容量存储器104的条件(包括在大容量存储器104上可用的空闲存储块数量),和高速缓存器102的条件(包括在高速缓存器102中网络目标114的命中率),高速缓存器引擎100确定何时执行写操作。
在优选实施例中,使用方法500的写操作根据下列任一条件执行:
·当由于前面的写操作使某个时间已经过去时(例如10秒);或
·当修改后块包括存储器的过大比例时。
使用方法500的写操作也能够根据下列任一条件执行:
·在存储器103中的修改后块200的数量接近在大容量存储器104上的可用空闲存储块数量而少于用于块映射目标210所需要的存储块数量;或
·在存储器103中的修改后块200的部分接近在存储器103的网络目标114的出错率时。
可是,在大容量存储器104上的空闲存储块200的数量正常应大大多于在写操作期间将写入的块200的数量。
每个目标210具有相关的“存取时间”,该时间表示最后一次写成读取该目标210的时间,然而无论何时读取目标210都不需要为每个目标210更新磁盘上的存取时间,因此这将产生一组修改后的控制块200(在下一次写操作期间该控制块必须写入磁盘)而不论何时读取任何目标210。
因此,保存一个易丢失信息表记录关于目标210的易丢失信息,包括已读取目标210的存取时间,和用于这些目标210的存取数量,当读取目标210时,其存取时间只在易丢失信息表中被更新,而非在用于目标210自身的目标描述符211中。该易丢失信息表保存在存储器103中和不写入到磁盘。
在优选实施例中,网络目标114能够连续被读取同时使用方法500的写操作被执行,即使这些网络目标114包括修改后数据块200,因为修改后数据块200在存储器103中被连续保存同时执行写操作,不论是否将它们实际成功地写入到大容量存储器104中。
从高速缓存器中删除目标
图6表示在大容量存储器上的一组指针和区域的方框图。
在大容量存储器104上的每个磁盘驱动器上的一组存储块由圆图600代表,具有从零到最大值NMAX的索引。在该图中,索引以逆时针方向增加,从终端绕回到每个磁盘驱动器的始端,以最大值NMAX为模。
保存包括用于每个可删除的目标210的项目的一个DT(删除表)目标210。每当散列表350中的散列表元340之一被存取时,在DT目标210中插入一个引用用于由该散列表元340中的散列项目360之一引用和限制为可删除的的每个目标210。
在可选实施例中,保存一个目标映射目标210,该目标包括用于目标映射目标210中的每个块映射项目的一个项目。在该例中,目标映射目标210中的每个项目或者是空的,其表示对应的块200不包括一个目标描述符211;或不是空的,其表示对应的块200包括一个目标描述符211,和进一步包括信息以确定是否对应目标210能够被删除。在目标映射目标210中的每个非空项目包括至少一个命中率,一个加载时间,一个经历值(LIVE TIME)时间和一个散列标记330用于索引到散列表350中。
高速缓存器引擎100搜索块映射目标210用于可删除的目标210(一个由DT目标210引用的目标210),保存一个删除指针260到块映射目标210中,类似于写入指针250以循环方式执行搜索。这样,类似写入指针,当删除指针超越块映射目标210终端时,其绕回到块映射目标210的始端。也类似写入指针250,删除指针260保存在根目标220中以便搜索以循环方式继续,甚至在高速缓存器102失败和重新启动后。
用于大容量存储器104中的每个磁盘驱动器的写入指针250和删除指针260每个包括在映射600中的一个索引。
在优选实施例中,删除指针260至少保存在写入指针250一个所选择的最小距离d0601之前,但是不会前到再次绕过写入指针250,以便选择用于删除可删除目标210的每个磁盘驱动器的删除区域610,该目标接近所使用的用于写入修改后和新目标210的写入区域620。写入区域620至少具有由最小距离d0601指定的规模。尽管没有对删除区域610容量的特别要求,删除区域610的容量最好是几倍于写入区域620(最好大约五倍)。高速缓存器引擎100由此规定所有对磁盘的写入只出现在每个磁盘驱动器相对较小的部分中。这允许大容量存储器104更快地工作,因为在每个写操作期间用于大容量存储器104的一组磁头只需要移动相对较小的距离。
因为高速缓存器引擎100试图在写入指针250和删除指针260之间保存相对固定的距离关系,写操作和删除操作将相对频繁出现。在优选实施例中,高速缓存器引擎100在写操作与删除操作之间交替,以便每个删除操作工作以在磁盘上为以后的写操作制造空间(下次随后的写操作将块映射目标210写入到磁盘,表示块200将被删除;在这之后的写操作能够使用新近空闲的块200)和每个写操作工作以消耗在磁盘上的空闲空间和要求以后的删除操作。
采集区域630被选择得靠近并在删除区域610之前,以便选择用于删除的目标210。选择采集区域610的大小,以便在估计的写入指针250时间内推进通过采集区域630(这将花费几个写操作),几乎所有散列项目360将通过高速缓存器引擎100的正常操作存取。这样,因为每个散列项目360包括确定其有关目标210是否应删除的足够信息,几乎所有目标210将被评估用于在写入区域620移动通过采集区域630所需要的几个写操作中删除。
已经评估用于删除的目标210被放置在一个删除列表上,根据删除的适合条件排序。在优选实施例中,根据下述标准之一评估用于删除的目标210:
·由于HTTP协议(或其变体,例如SHTTP)的工作如果目标210被明确选择由高速缓存器引擎100删除,目标210马上被放置在删除列表的开头;
·如果产生带有相同名称的新目标210,一旦所有对于旧目标210的引用被释放,旧的目标210马上被放置到删除列表的开头(即,在高速缓存器引擎100上不再处理引用旧目标210);
·如果目标210已经过期,其马上被放置到删除列表的开头;
·如果第一目标210具有比第二目标210更旧的存取时间,第一目标210比第二目标210更适合被选择删除,和由此被排序到删除列表中第二目标210之前。
根据这些标准中的最后两条(即,由于过期或旧存取时间)选择删除列表上目标210的一部分,最好选择删除列表上三分之一的目标210来删除。
在每个写操作之后,以下次写入区域的预计大小推进采集区域630。在优选实施例中,下次写入区域620的预计大小通过将用于以前几个(最好七个)写操作的写入区域620的大小取平均来估计。这样在推进到删除区域610之前在删除列表上和在删除区域610之后的目标210被计划删除;这些目标被一个个选择并在下次删除操作中删除(在优选实施例中,下次删除操作在写操作完成后马上进行)。
在优选实施例中,对于大容量存储器104上的每个磁盘驱动器写操作和删除操作是独立的,因此对于在大容量存储器104上的每个磁盘驱动器存在分开的删除区域610,写入区域620,和采集区域630。
改型实施例
尽管优选实施例在此公开,在保存本发明原理,区域,和精神区域内许多改型都是可能的,对本领域技术人员来说通过研究本申请这些改型将变得很明显。
按PCT的条件修改
权利要求书
1.一种用于网络上目标的系统,所述系统包括:
一个接收机连接到所述网络;和
一个高速缓存器将来自所述网络的一个目标有效地记录在大容量存储器上;
其中所述高速缓存器引擎能够选择时间以记录所述目标,选择位置以记录所述目标,全息地存储所述目标以便在所述大容量存储器的一部分丢失后可连续工作,或使写入所述大容量存储器所需要的时间最少。
2.一种用于保存一组网络目标的设备,包括:
一个处理器用于控制一个配置为储藏包括所述一组网络目标的多个目标的高速缓存器机构,所述处理器能够与网络通信和配置为在所述网络上发送所述网络目标组中的至少一个;
一个大容量存储器,与所述高速缓存器机构相关,与所述处理器通信;
一个存储器,与所述高速缓存器机构相关,与所述处理器和所述大容量存储器通信;
一个散列机构,配置为在所述高速缓存器机构中定位所述多个目标的任意一个,响应一个目标标识符;和
一个目标存储机构,响应所述散列机构,配置为在所述存储器与所述大容量存储器之间传输一个或更多的所述多个目标。
3.权利要求2的设备,其中所述高速缓存器机构被组织成多个块和该散列机构返回一个块指针以存取储存,在所述高速缓存器机构中的所述多个目标的任意一个。
4.权利要求3的设备,其中大容量存储器的所述多个块独立于施加在该大容量存储器上的任何文件系统而直接存取。
5.权利要求2的设备,其中目标存储机构进一步包括一个延迟写入装置用于执行一个自动写入操作以将包含一个或更多所述多个目标的多个块写入到所述大容量存储器。
6.权利要求3,4或5的设备,其中该目标存储机构进一步包括一个优化装置用于使传输所述多个块所需要的时间最少。
7.权利要求2,3,4,5或6的设备,其中该大容量存储器包括多个磁盘驱动器和所述多个磁盘驱动器的每个与对应的磁盘设备描述符目标相关,由一个磁盘设备目标引用每个所述对应磁盘设备描述符目标。
8.权利要求7的设备,进一步包括一个动态大容量存储器配置装置用于响应所述多个磁盘驱动器中的一个或更多的增加,删除,失败或替换,更新所述磁盘设备目标和产生或修改所述对应磁盘设备描述符目标,同时所述设备连续工作。
9.一种计算机控制方法用于保存一组网络目标,包括步骤:
控制一个高速缓存器机构,该高速缓存器机构配置为储藏包括所述网络目标组的多个目标;
在所述高速缓存器机构中定位所述多个目标的任意一个,响应一个目标描述符;
响应定位步骤,在一个存储器和一个大容量存储器之间自动传输所述多个目标的一个或更多;和
在所述网络上发送所述网络目标组中的至少一个。
10.权利要求9的计算机控制方法,其中所述高速缓存器机构被组织成多个块和一个散列机构执行返回一个块指针的步骤以存取储存在所述高速缓存器机构中的所述多个目标中的任意一个。
11.权利要求9的计算机控制方法,其中该方法进一步包括执行一个自动写操作的步骤,以将包含所述多个目标中的一个或更多的多个块写入到所述大容量存储器。
12.权利要求9,10或11的设备,进一步包括使传输所述多个块所需要时间最少的步骤。
13.权利要求9,10,11或12的计算机控制方法,其中所述大容量存储器包括多个磁盘驱动器和每个所述磁盘驱动器与对应的磁盘设备描述符目标,由一个磁盘设备目标引用每个所述对应磁盘设备描述符目标相关,该方法进一步包括保存所述磁盘设备目标和所述对应磁盘设备描述符目标的步骤,以将所述网络目标组全息地存储在所述大容量存储器上。
14.权利要求13的计算机控制方法,进一步包括步骤:
更新所述磁盘设备目标;和
响应所述多个磁盘驱动器中的一个或更多的增加,删除,失败或替换,修改所述对应磁盘设备描述符目标。根据19条的声明
申请人相信对权利要求书的修改不对说明书或附图产生任何影响。
本发明包括一个高可靠和高效率的网络高速缓存器(和相关的方法)。
YAMMINE(US5564011)公开了一个系统和方法,用于文件系统磁盘上动态控制块的再生。YAMMINE设想了一个大容量存储器,其上施加了一个包含目录和文件的分层文件系统。YAMMINE使用在文件系统初始化期间保留的信息来再生磁盘的文件系统,将使现存的文件系统变得不一致。
JONES(EP0359384)公开了一种写后排队方法和设备用于对一个磁盘驱动器排列多个单独扇区写入。如果连续的写入请求被排列到该磁盘用于该磁盘上的连续扇区,该磁盘驱动器执行一个多扇区写入,而非多个单独的扇区写入。
本发明是一个独立网络高速缓存器装置用于有效地高速缓存网络目标。本发明不需要使用面向文件的大容量存储器系统。反之,在用于优化存储和目标检索的写操作期间,目标(包括网络目标)被直接存储到大容量存储器装置的数据块上。另外,在这些写操作期间在存储器和大容量存储器装置之间自动地传输目标以便所保留信息的状态在大容量存储器上总是一致的。另外,在多个驱动器组成的大容量存储器上,本发明自动地检测任何驱动器的增加,删除和失败并利用增加或减少的大容量存储器连续执行高速缓存操作。