掌桥专利:专业的专利平台
掌桥专利
首页

保持缓存中的摘要一致性的设备和方法

文献发布时间:2023-06-19 12:07:15


保持缓存中的摘要一致性的设备和方法

技术领域

本公开总体上涉及信息处理设备和方法,更具体地,涉及保持高性能缓存中的摘要一致性的设备和方法。为此,本发明提出了一种包括一个或多个缓存的设备。所述设备用于每次转储缓存时分配不断增加的不同标识,并使用所述不同标识来保持所述缓存中的摘要一致性。

背景技术

通常,缓存是一种通过将对象保存在存储器中而提高对象性能的结构。然而,缓存的问题在于当为缓存分配的存储器用完(例如,需要访问大量对象)时无法保持高性能,并且必须切换到磁盘。随机访问模式下,几乎每次访问都必须切换到磁盘,这是一个关键问题。例如,对数据容器的元数据(Metadata,MD)进行缓存,有非常多的容器(数百万个,每个容器有10KB的元数据)。此外,在重复数据删除过程中,需要以随机读取模式访问这些容器元数据结构。

有如下几个传统方法可以帮助解决切换问题:

·将对象的摘要(用于读取)和对象的动作(用于更新,即,事务日志)保存在缓存中。

例如,所述动作可以是对所述对象的操作,如添加对容器MD的引用、为容器添加或删除数据,以及实际更改容器或其MD的其它操作。所述事务日志是按照执行顺序写入的所有操作的列表。此外,摘要可以是容器总使用大小等容器只读信息,以及其它需要非常小的大小并且可以在不占用太多内存的情况下为所有对象保存在存储器中的信息。

·双缓存,允许切换更新到磁盘,并将更新应用到后台中的对象。

例如,双缓存是一种使用两个缓存对象的方法,其中一个缓存对象处于主用状态,而在所述后台对另一个缓存执行某些操作而不延迟所述主用缓存。

然而,传统设备和方法的缺点是,将对象操作保存在缓存中以进行更新以及将对象的摘要保存在缓存中以进行读取时,需要访问磁盘上的完整对象以确保摘要的一致性。因此,对性能的影响非常大,即,降低了缓存的性能。

发明内容

鉴于上述问题和缺点,本发明实施例的目的为改进传统设备和方法。目的是通过为转储的缓存(即,事务日志)分配越来越多的标识(identifier,ID),并使用所述标识来防止不一致摘要,从而解决一致性问题。

通过所附独立权利要求中提供的实施例来实现所述目的。在从属权利要求中进一步定义所述实施例的有益实现方式。

本发明第一方面提供一种设备,包括:存储器,所述存储器包括一个或多个缓存和摘要结构,所述一个或多个缓存用于存储与多个对象中的至少一个对象相关的信息,所述摘要结构用于存储所述多个对象中的至少一个对象的至少一个摘要;存储装置,所述存储装置包括卷,所述卷用于存储包括所述多个对象的至少一个合并文件和转储文件集,每个转储文件与所述一个或多个缓存的特定缓存转储操作相关联。所述设备还包括处理器,所述处理器用于:将第一标识分配给所述一个或多个缓存中的缓存;执行缓存转储操作,生成与所述第一标识相关联的转储文件,并且将所述缓存中的与所述至少一个对象相关的信息存储到所生成的转储文件;然后将第二标识分配给所述一个或多个缓存中的缓存,其中所述第二标识大于所述第一标识。

第一方面所述的设备可以在更新对象和摘要查询方面保持传统设备的高性能优势,同时有利地确保摘要的一致性。这可以通过以下方式实现:通过为每个已转储的高速缓存(以下也称为缓存转储操作)和当前主用缓存分配不同的标识(例如,通过添加不断增大的标识),并且在将事务应用到所述对象时,使用所述标识来保持摘要一致性。

例如,所述设备可以包括一个或多个缓存。此外,所述设备可以将所述第一标识分配给缓存,还可以执行缓存转储操作。缓存转储操作可以是所述设备执行的操作,在所述操作中将所述缓存的所述信息转储(存储)到文件中。例如,所述设备可以生成可定义为转储文件的文件,即,为特定缓存转储操作生成的文件。所述设备可以将所述第一标识分配给所述缓存,并且还可以执行所述缓存转储操作,例如,通过将所述缓存的信息存储在所生成的转储文件中并将所述第一标识分配给所生成的转储文件。之后,所述设备可以为所述缓存分配所述第二标识。并且,所述第二标识大于所述第一标识。所述设备分配标识,所述标识是不断增加的。

例如,在一些实施例中,所述标识可以通过加上增加量(例如,将前一标识加1)、特定数字、系统时间、任何总是增大的其它数目来增大。

此外,所述多个对象中的每个对象可以具有自己的ID,并且可以被标识,这是技术人员通常知道的。在下文中,对象的标识称为对象ID。

在一些实施例中,所述设备可以使用若干性能增强操作,例如,执行事务日志以减少缓存大小、将所有对象摘要保存在所述缓存(即,第一存储器)中、双缓存、切换到磁盘和在后台合并。

在第一方面的一种实现方式中,所述设备还用于将所生成的转储文件添加到所述转储文件集中。

在第一方面的另一实现方式中,所述设备还用于将所述转储文件集合并到所述至少一个合并的文件。

这是有益的,因为可以提高所述缓存的性能。

在第一方面的另一实现方式中,以N秒的时间间隔周期性地执行所述缓存转储操作;和/或当所述缓存的存储容量达到预定阈值执行所述缓存转储操作。

在第一方面的另一实现方式中,以M秒的时间间隔周期性地执行所述合并,其中M等于或大于N。

在第一方面的另一实现方式中,所述设备还用于:如果存储与确定的对象相关信息的给定转储文件从所述转储文件集合并到所述至少一个合并文件,则为所述确定的对象更新所述至少一个摘要;将更新后的所述至少一个摘要与所述给定转储文件的所述标识符相关联。

这是有益的,因为可以保持摘要的关键一致性(防止数据丢失),同时确保操作(更新和摘要查询两者)的高性能。

在第一方面的另一实现方式中,所述设备还用于:如果分配了给定标识的给定缓存转储操作更改了与确定的对象相关的信息,则更新所述确定的对象的所述至少一个摘要;将所述至少一个摘要与所述给定缓存转储操作的所述分配的标识相关联。

在第一方面的另一实现方式中,所述至少一个对象的每个摘要包括:

-与所述至少一个对象相关的摘要信息;

-指示更新所述摘要的转储文件的标识的ID-1信息;

-指示更改所述至少一个对象的缓存转储操作的标识的ID-2信息。

在第一方面的另一实现方式中,所述设备还用于:将所述摘要结构中的每个摘要分配给表示在所述摘要不一致的情况下导致非关键错误的一类摘要的常规摘要组;或表示在所述摘要不一致的情况下导致关键错误的一类摘要的关键摘要组。

例如,在一些实施例中,所述设备可以将所述摘要分为两种类型,包括常规摘要和关键摘要,所述常规摘要可以是影响用户行为但不一致不会导致关键错误的摘要,所述关键摘要是在不一致时可能导致关键错误的摘要。例如,对象的参考计数,查询参考计数是否为0(是否可以删除所述对象)来判断摘要的类型。在本示例中,参考计数为0时即关键摘要。

在第一方面的另一实现方式中,所述设备还用于:对于确定的摘要,将ID-1中指示的所述标识与ID-2中指示的所述标识进行比较;当确定ID-1中指示的所述标识大于或等于ID-2中指示的所述标识时,在执行所述合并操作时,将所述确定的摘要分配到所述关键摘要组中。

例如,在一些实施例中,当对对象进行的操作以防止所述摘要成为关键摘要(例如inc-ref-count)的方式更改对象时,所述设备可以用所述转储文件标识来标记所述摘要结构(存储在存储器中)中所述对象的摘要。此外,所述合并操作(例如,对id=K的转储文件)仅在检查摘要结构以指示完成对具有较小标识(即,id<=K)的对象的操作之后,将摘要更改为关键摘要。

例如,在一些实施例中,在合并标识达到K的转储文件时,所述设备可以仅改变所述存储器的摘要结构中转储文件ID等于且不大于K的对象的摘要。

在第一方面的另一实现方式中,所述设备基于双缓存设备。

本发明的第二方面提供一种方法,包括:将与多个对象中的至少一个对象相关的信息存储在存储器的一个或多个缓存中;将所述多个对象中的至少一个对象的至少一个摘要存储在所述存储器的摘要结构中;将包括所述多个对象的至少一个合并文件和转储文件集存储在存储装置的卷中,每个转储文件与所述一个或多个缓存的特定缓存转储操作相关联。所述方法还包括:处理器将第一标识分配给所述一个或多个缓存中的缓存;所述处理器执行缓存转储操作,生成与所述第一标识相关联的转储文件,并且将所述缓存中的与所述至少一个对象相关的信息存储到所生成的转储文件;所述处理器然后将第二标识分配给所述一个或多个缓存中的缓存,其中所述第二标识大于所述第一标识。

在第二方面的一种实现方式中,所述方法还包括将所生成的转储文件添加到所述转储文件集中。

在第二方面的另一实现方式中,所述方法还包括将所述转储文件集合并到所述至少一个合并的文件。

在第二方面的另一实现方式中,以N秒的时间间隔周期性地执行所述缓存转储操作;和/或当所述缓存的存储容量达到预定阈值执行所述缓存转储操作。

在第二方面的另一实现方式中,以M秒的时间间隔周期性地执行所述合并,其中M等于或大于N。

在第二方面的另一实现方式中,所述方法还包括:如果存储与确定的对象相关信息的给定转储文件从所述转储文件集合并到所述至少一个合并文件,则为所述确定的对象更新所述至少一个摘要;将更新后的所述至少一个摘要与所述给定转储文件的所述标识符相关联。

在第二方面的另一实现方式中,所述方法还包括:如果分配了给定标识的给定缓存转储操作更改了与确定的对象相关的信息,则更新所述确定的对象的所述至少一个摘要;将所述至少一个摘要与所述给定缓存转储操作的所述分配的标识相关联。

在第二方面的另一实现方式中,所述至少一个对象的每个摘要包括:

-与所述至少一个对象相关的摘要信息;

-指示更新所述摘要的转储文件的标识的ID-1信息;

-指示更改所述至少一个对象的缓存转储操作的标识的ID-2信息。

在第二方面的另一实现方式中,所述方法还包括将所述摘要结构中的每个摘要分配给表示在所述摘要不一致的情况下导致非关键错误的一类摘要的常规摘要组;或表示在所述摘要不一致的情况下导致关键错误的一类摘要的关键摘要组。

在第二方面的另一实现方式中,所述方法还包括:对于确定的摘要,将ID-1中指示的所述标识与ID-2中指示的所述标识进行比较;当确定ID-1中指示的所述标识大于或等于ID-2中指示的所述标识时,在执行所述合并操作时,将所述确定的摘要分配到所述关键摘要组中。

在第二方面的另一实现方式中,所述方法用于双缓存设备。

第二方面所述的方法及其实现方式中实现了上文针对第一方面所述的设备及其相应的实现方式中描述的所有优势和效果。

本发明的第三方面提供一种包含计算机程序代码的计算机程序产品,当处理器执行所述计算机程序代码时,执行第二方面或第二方面的实现方式中所述的方法。

本发明的第四方面提供了一种存储计算机程序产品的非瞬时性计算机可读记录介质,当处理器执行所述计算机程序产品时,执行根据第二方面或第二方面的实现方式中所述的方法。

必须注意,本申请中描述的所有设备、元件、单元和装置可以软件元件或硬件元件或它们的任何种类的组合实现。本申请中描述的各种实体执行的所有步骤和所描述的将由各种实体执行的功能旨在表明各个实体适于或用于执行各自的步骤和功能。虽然在以下具体实施例的描述中,由外部实体执行的特定功能或步骤没有在执行特定步骤或功能的该实体的具体元件的描述中反映,但是技术人员应该清楚的是这些方法和功能可以在各自的硬件或软件元件或其任意组合中实现。

附图说明

结合所附附图,下面具体实施例的描述将阐述上述本发明的各方面及其实现方式。

图1为本发明实施例提供的设备的示意图。

图2为本发明实施例提供的用于保持摘要一致性的设备的另一示意图。

图3为本发明实施例提供的用于对双缓存执行缓存转储操作的方法的流程图。

图4为本发明实施例提供的用于合并转储文件的方法的流程图。

图5为本发明实施例提供的用于合并转储K至K+n的方法的流程图。

图6为本发明实施例提供的一种方法的流程图。

具体实施方式

图1为本发明实施例提供的设备100的示意图。

所述设备100包括存储器110和存储装置114。所述存储器110包括一个或多个缓存器(111、112)和摘要结构113,所述一个或多个缓存器(111、112)用于存储与多个对象中的至少一个对象相关的信息,所述摘要结构113用于存储与所述多个对象中的至少一个对象的至少一个摘要。所述存储装置114包括卷,所述卷用于存储包括所述多个对象的至少一个合并文件115和一组转储文件116,每个转储文件与所述一个或多个缓存(111、112)的特定缓存转储操作相关联。

所述设备100还包括处理器117,所述处理器117用于:将第一标识K1分配给所述一个或多个缓存(111、112)中的缓存111;执行缓存转储操作,生成与所述第一标识K1相关联的转储文件118,并且将所述缓存111中的与所述至少一个对象相关的信息存储到所生成的转储文件118;然后将第二标识K2分配给所述一个或多个缓存(111、112)中的缓存111,其中所述第二标识K2大于所述第一标识K1。

例如,所述第一标识K1可以是数字(例如,K1=1),第二标识K2可以是第二数字,如K2=K1+1(K2=1+1=2)。因此,所述第一标识K1可以是1,所述第二标识K2可以是2,与所述第一标识不同。因此,不同的缓存转储操作和/或转储文件可以基于它们的标识进行识别。

所述设备100可以包括电路系统(图1中未示出),所述电路系统可以包括硬件和软件。所述硬件可以包括模拟电路、数字电路,或模拟电路和数字电路两者。在一些实施例中,所述电路包括一个或多个处理器(例如,所述处理器117)和连接到所述一个或多个处理器(例如,所述处理器117)的非易失性存储器(例如,所述存储器110)。所述非易失性存储器可携带可执行程序代码,当所述一个或多个处理器执行所述可执行程序代码时,使得所述设备执行本文所描述的操作或方法。

参考图2,图2为本发明实施例提供的用于保持摘要一致性的所述设备100的另一示意图。

图2的所述设备100基于双缓存,即,所述设备100包括两个缓存:主用缓存111和备用缓存112,它们可以被定义为存储器110中的两个对象缓存。

所述设备100还包括所述存储器110中的所有对象的摘要(例如,摘要结构113)。

此外,所述设备100包括存储装置114(磁盘)。所述存储装置114包括一系列转储文件116和单个合并文件115,每个转储文件116表示缓存转储操作,所述单个合并文件115包括所述多个对象。

在图2的实施例中,假设第一未合并缓存转储标识是K+1,例如,K可以是数字。此外,假设所述第二标识为K+2。从图2中可以看出,所述设备100通过将前一标识加1来使所述标识不断增加,即K+1、K+2、K+3、K+4、K+5、K+6等。

所述设备100可以通过使用若干增强性能的方法来保持摘要一致性,所述方法包括以下中的一种或多种:

·事务日志,按顺序执行以减少缓存;

·在所述存储器110中保存所有对象摘要;

·双缓存;

·切换到存储装置114并在后台合并。

·此外,所述设备100可以将所述摘要分为两类,包括:

·常规摘要,其影响用户行为,但不一致性不会导致关键错误。

·关键摘要,不一致时可能导致关键错误。

所述设备100可以通过将标识分配给转储的缓存(事务日志)并使用此标识防止存储器中的摘要不一致来解决一致性问题。例如,每个缓存转储具有(唯一)标识(例如,ID可以不断增大)。

此外,为每个对象保存在所述存储器110中的所述摘要结构(每个对象的至少一个摘要)可以包括如下三个字段:

1.实际摘要信息(例如,对象状态、参考计数);

2.指示更新所述摘要的转储文件的标识的ID-1信息;

3.指示更改所述至少一个对象的缓存转储操作的标识的ID-2信息。

此外,当将缓存合并到磁盘结构中时,只有当此对象的最后一个缓存转储ID-2小于或等于缓存转储ID-1时,才将所述至少一个摘要更新为关键摘要信息。

参考图3,图3为本发明实施例提供的用于对双缓存执行缓存转储操作的方法300的示意图。

所述设备100可以执行所述方法300。每隔时间周期(例如n秒)或缓存满时可以调用所述方法300。所述设备100可以在所述缓存(111、112)之间切换,为新的主用缓存分配第二标识(例如,第一标识+1),并且还可以将之前的主用缓存存储到磁盘(同时继续常规操作并使用所述新的主用缓存)。例如,可以执行以下操作。

步骤301:所述设备100开始方法300。

步骤302:所述设备100确定所述缓存111是否为空。

步骤303:当确定为“是”时,即所述缓存111为空时,所述设备100休眠N秒。

步骤304:当确定为“否”时,即所述缓存111不为空时,所述设备100切换所述缓存。

步骤305:所述设备100增加所述新主用缓存ID(即,分配第二标识)。

步骤306:所述设备100将先前主用111转储到转储文件集。

参考图4,图4为本发明实施例提供的用于合并转储文件的方法400的示意图。

所述设备100可以如上文所描述的那样执行所述方法400。在每隔时间周期(例如,m秒,m>>n)都可以调用所述方法400,并且在有足够的转储文件时可以合并它们。合并过程(将转储文件K合并至K+n)可以是将所述存储装置114上的所有转储文件116合并到包括所有对象的单个文件115中,并更新所述存储器110中的所述对象的摘要。例如,可以执行以下操作。

步骤401:所述设备100开始执行方法400。

步骤402:所述设备100确定缓存(例如,缓存111)是否被转储X次。此外,当确定为“是”时,即存在X个缓存转储文件时,所述设备100进入到步骤403。然而,当确定不存为“否”时,即未转储X个缓存时,所述设备100进入步骤404。

步骤403:所述设备100合并所述转储文件116并进入步骤405。

步骤404:当确定为“否”时,即,未转储所述X个缓存时,所述设备100确定自上次合并以来是否经过了3*N秒。此外,当确定为“是”时,即,自上次合并以来经过了3*N秒时,所述设备100进入步骤403。当确定为“否”时,即,自上次合并以来没有经过3*N秒时,所述设备100进入步骤405。

步骤405:所述设备100休眠M秒,之后进入步骤402。

参考图5,图5为本发明实施例提供的一种用于合并ID为K至K+n的转储文件的方法的流程示意图。

所述设备100可以如上文所描述的那样执行所述方法500。例如,可以执行以下操作。

步骤501:所述设备100开始方法500。

步骤502:对于打开的每个转储文件,所述设备100加载第一对象。例如,每个对象可以通过标识(例如对象ID)来识别。

步骤503:所述设备100找到具有最小对象ID(min1)的对象。

步骤504:从与min1相同的转储文件中加载另一对象。

步骤505:所述设备100确定是否有任何对象遗留。此外,当确定为“是”时,所述设备100进入步骤507,并且当确定为“否”时,所述设备100进入步骤506。

步骤506:所述设备100删除所有合并的转储文件。

步骤507:所述设备100找到具有最小对象ID(min2)的对象。

步骤508:所述设备100从与min2相同的转储文件中加载另一对象。

步骤509:所述设备100确定“ID(min1)=ID(min2)”是否成立。此外,当确定为“是”时,所述设备100进入步骤510,并且当确定为“否”时,所述设备100进入步骤511。

步骤510:所述设备100基于“min1=merge(min1,min2)”执行合并。此外,所述设备100进入步骤505。

步骤511:所述设备100将min1保存到新的合并文件中。

步骤512:所述设备100确定“摘要(min1)=关键摘要”是否成立。此外,当确定为“是”时,所述设备100进入步骤513,并且当确定为“否”时,所述设备100进入步骤514。

步骤513:所述设备100确定“min1的上次更新ID>K+n”是否成立。此外,当确定为“是”时,所述设备100进入步骤515,并且当确定为“否”时,所述设备100进入步骤514。

步骤514:所述设备100更新所述摘要(min1)。

步骤515:确定min1=min2。

图6示出了本发明实施例提供的方法600。所述设备100可以如上文所描述的那样执行所述方法600。

所述方法600包括步骤601:处理器117将第一标识K1分配给存储器110的一个或多个缓存(111、112)中的缓存111。

所述方法600还包括步骤602:将与多个对象中的至少一个对象相关的信息存储在所述存储器110的所述一个或多个缓存(111、112)中。

所述方法600还包括步骤603:将所述多个对象中的至少一个对象的至少一个摘要存储在所述存储器110的摘要结构113中。

所述方法600还包括步骤604:将包括所述多个对象的至少一个合并文件115和转储文件集116存储在存储装置114的卷中,每个转储文件与所述一个或多个缓存(111、112)的特定缓存转储操作相关联。

所述方法600还包括步骤605:所述处理器117执行605缓存转储操作,生成与所述第一标识K1相关联的转储文件118,并且将所述缓存111中的与所述至少一个对象相关的信息存储到所生成的转储文件118。

所述方法600还包括步骤606:所述处理器117然后将第二标识K2分配606给所述一个或多个缓存(111、112)中的缓存111,其中所述第二标识K2大于所述第一标识K1。

尽管已经结合作为示例的不同实施例以及实现方式对本发明进行了描述。但是,本领域技术人员和实践本发明的人员可以理解,通过研究附图、本公开和独立权利要求,可以实现其它变型。在权利要求和说明书中,词语“包括”不排除其它元件或步骤,且“一个”不排除多个。单个元件或其它单元可满足权利要求书中所叙述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能用于有益的实现方式。

相关技术
  • 保持缓存中的摘要一致性的设备和方法
  • 用于保持旨在与大型数据库对接的多层软件系统中的缓存内容的一致性的系统和方法
技术分类

06120113170769