用于在分布式缓存存储器中自适应分区的系统和方法与流程

文档序号:11623847阅读:183来源:国知局
用于在分布式缓存存储器中自适应分区的系统和方法与流程

本公开涉及用于对分布式缓存或储存存储器进行自适应分区的系统和方法。



背景技术:

计算机集群包括两个或更多个可以通过网络互连的计算机节点。计算机集群可以实现分布式储存存储器系统,例如,分布式缓存系统。集群的总储存容量通常被划分成具有某一标准大小的若干个切片(slice)。这些切片分布在集群的计算机节点之间。每一个切片可以对一个且仅对一个计算机节点来说是本地的。在一个计算机节点处对驻留在由远程计算机节点拥有的切片中的逻辑块地址(lba)的任何请求需要经过网络发送以在该远程节点处处理。

这可以增加网络上的流量,其可能由于网络竞争而恶化网络带宽和延迟。因此,期望用于合适地分配这些切片的系统和方法,其可以减少远程数据请求对网络性能的影响。



技术实现要素:

提供了用于对分区成缓存切片的分布式缓存执行自适应分区的方法和系统。基于路由表,将分布式缓存的切片分配到集群的不同的计算机节点。在预定的时间段之后,可以基于访问统计将缓存切片重新分配到集群的其它计算机节点,并且提供新的路由表,其对应于对集群的计算机节点的缓存切片的重新分配。

根据本公开的一些方面,提供了一种用于对集群中的分布式缓存进行自适应分区的方法,所述集群包括通过网络互连的多个计算机节点,所述分布式缓存被分区成缓存切片。所述方法可以包括步骤:基于第一路由表,分配第一多个缓存切片到第一计算机节点;在第一时间段之后,基于对于计算机节点的缓存切片的访问统计,重新分配第二多个缓存切片到第一计算机节点、以及重新分配第一多个缓存切片的第一子集到除了第一计算机节点之外的至少一个计算机节点;以及根据在第一时间段之后对计算机节点的缓存切片的分配,提供第二路由表。

根据本公开的一些方面,提供了一种用于对集群中的分布式缓存进行自适应分区的系统,所述集群包括通过网络互连的多个计算机节点。所述系统可以包括:被分区成缓存切片的分布式缓存和第一计算机节点。所述第一计算机节点可以被配置为:基于第一路由表,分配第一多个缓存切片到第一计算机节点;在第一时间段之后,基于对于计算机节点的缓存切片的访问统计,重新分配第二多个缓存切片到第一计算机节点、以及重新分配第一多个缓存切片的第一子集到除了第一计算机节点之外的至少一个计算机节点;以及根据在第一时间段之后对计算机节点的缓存切片的分配,提供第二路由表。

附图说明

结合以下附图时,参考以下详细的描述可以更全面地理解本公开的各种目标、特征和优点,附图中相似的标号标识出相似的元素。以下附图仅是为了说明的目的,并且不旨在限制本发明,本发明的范围在随后的权利要求中予以阐述。

图1示出了根据本公开各方面的示例性集群系统。

图2示出了根据本公开各方面的示例性集群系统、每个集群节点的数据传输速率、以及示例性切片分配。

图3示出了根据本公开各方面的例性集群系统、每个集群节点的数据传输速率、以及切片重新分配。

图4示出了根据本公开各方面的用于在集群系统中更新路由映射的示例性方法。

具体实施方式

公开用于分布式缓存系统的自适应分区的系统和方法。集群的全部的缓存被分为多个切片,其与集群的计算机节点相关联。所公开的系统和方法检查集群的网络利用率并且能够将切片重新分配到新的计算机节点。代表新的分配的新的路由映射能够路由至集群的每个计算机节点。

图1示出计算机节点的示例性集群100。具体地,集群100含有计算机节点102、104和106。节点102包含服务器108和存储设备110,节点104包含服务器112和存储设备114,并且节点106包含服务器116和存储设备118。通过网络120将节点102、104和106互连。一些现有技术的分布式存储系统典型地通过条带化(striping)跨计算机节点分布切片。例如,通过循环的方式,数据条带化技术在不同的计算机节点的物理存储设备上存储逻辑上顺序的切片。例如,集群100中的切片能够被连续地按此顺序分配至节点102、104和106。例如,使用散列函数(hashfunction),其他的现有技术的分布式存储系统能够在集群的节点之中随机地分布切片。

这些现有技术的系统的可扩展性差。例如,假设在集群中“n”个节点之中的切片的随机和均匀分布,从被本地存储的特定节点的服务器到所述节点的请求的数据包的概率仅为1/n。如果请求的数据包不是本地存储的,那么用于数据包的请求需要通过网络被发送至远程节点并且数据包需要通过网络被传输至请求它的节点。随节点数量的增长,越来越多的数据包必须通过网络被传输以满足数据包请求。这能够对网络的可用带宽有负面的影响。因为上层应用也可能尝试竞争网络带宽,系统由于网络拥塞而可能性能不佳。

在没有关于访问的现有知识的情况下,如上述所讨论的,切片可以跨集群中的所有节点被初始条带化。每个节点可以具有带有关于集群中的每个切片所有权的信息的路由映射,其可以被用来将请求路由至适当的所有者。每个节点也可以维护对所有切片的访问统计。用于存储该信息的数据结构可以是数组,该数组可以根据切片的数量定义大小并且还可以具有针对时间戳的数组中的字段。可以从数组索引中暗示切片数量,并且每个数组中的索引可以指示对那个切片的访问统计,例如,从那个节点至那个特定切片被读取和/或被写入的数据的量。可以针对整体数据结构存储时间戳以便可以自上一次数据结构中的信息重置后对于时间间隔轻易计算数据速率(mb/秒)。

无论何时特定节点接收到针对逻辑块地址(lba)的请求,其可以确定lba属于哪个切片并然后可以咨询路由映射以确定特定切片的所有者节点。如果特定节点为特定片的所有者,那么其在不消耗任何网络资源的情况下可以本地地服务该请求。如果特定切片被另一节点所有,那么该请求被路由至那个所有者。特定节点也可以相应地修改对那个切片的访问统计计数器。

根据本公开的方面,在预定的时间段之后,所公开的系统和方法可以对每个切片确定新的所有者,其可能降低网络利用率。在预定的时间段之后可以确定新的所有者,在该时间段内已收集了足够的关于访问统计的信息,以通知关于新的所有者的决定。如果所公开的方法确定切片可以改变为新的所有者,其可以被动态地重新分配,例如,在没有用户干预或对重新创建缓存的要求的情况下。

因为多于一个节点可以在相同的切片内访问数据,因此在将切片重新分配至新的所有者后,其他节点可以仍要求远程访问该切片。因此,网络仍应适应在远程节点中用于数据访问的请求。根据本公开的方面,切片可以基于局部访问被重新分配至节点,例如,分配至传输最多数据的节点,其可以使对网络的效果最小化。

除网络利用率降低以外,切片的动态分配还可以提高可扩展性,因为其可以允许更多的计算机节点添加至集群中。所公开的系统和方法还可以更好的适应访问模式中的改变,例如,在新的应用、应用失败的情况下,或用于负载平衡。

图2和图3示出切片的示例性动态分配以及产生的网络利用率降低。具体地,图2示出具有两个节点(n1,n2)的集群200。集群的总缓存被分为四个切片202。最初切片202以循环的方式在节点n1与n2之间被分配,如路由映射204中所示。具体地,切片{0,2}被分配至节点n1而切片{1,3}被分配至节点n2。根据路由映射204将服务在切片中任何接收到的针对数据的请求。例如,将本地地服务用于驻留于切片0中的lba的节点n1上的请求。例如,通过请求来自节点n2的lba,将通过网络服务用于驻留于切片1中的lba的节点n1上的请求。如以上所讨论的,例如,通过检查对于集群中节点的访问统计,在预定的时段后,所公开的系统和方法可以为切片确定新的所有者。作为说明性的示例,表206示出对于节点n1的访问统计而表208示出对于节点n2的访问统计。例如,表206示出节点n1以50mb/s的传输速率从切片0中请求数据210,并且以100mb/s的传输速率从切片1中请求数据212。如以上所讨论的,只有远程请求增加网络利用率,其降低总的可用网络带宽,因此,对于节点n1,请求远程切片中的数据,例如,切片1和3有助于网络利用率。因此,对于节点n2,请求远程切片中的数据,例如,切片0和2有助于网络利用率。基于表206和208中的访问统计,基于下列等式可以计算对于节点n1的远程请求速率:

远程请求速率(n1)=传输速率切片1+传输速率切片3

=100(mb/s)+30(mb/s)=100(mb/s)

类似地,基于下列等式可以计算对于节点n2的远程请求速率:

远程请求速率(n2)=传输速率切片0+传输速率切片2

=20(mb/s)+60(mb/s)=80(mb/s)

总网络利用率因此为130mb/s+80mb/s=210mb/s,该总网络利用率高。根据本公开的方面,基于远程传输速率和总网络利用率,切片可以被重新分配以减小总网络利用率。这在图3中示出。例如,图3示出图2的集群,其中两个切片已被重新分配。具体地,之前被分配至节点n2的切片1,已被重新分配至节点n1302,而之前被分配至节点n1的切片2,已被重新分配至节点n2304。在所有重新分配之后,新的路由映射306流转至所有节点,以便每个节点能够意识到新的切片分配。

在重新分配后,基于下列等式可以计算对于节点n1的远程请求速率:

远程请求速率(n1)=传输速率切片2+传输速率切片3

=20(mb/s)+30(mb/s)=40(mb/s)

类似地,基于下列等式可以计算对于节点n2的远程请求速率:

远程请求速率(n2)=传输速率切片0+传输速率切片1

=20(mb/s)+40(mb/s)=60(mb/s)

总网络利用率因此为50mb/s+60mb/s=110mb/s,该总网络利用率非常低,例如,与初始值相比低了52.3%。对于在给定的时间窗口内已访问的每个切片,集群中的每个节点可以维持访问大小的累计值,例如,以字节。然后通过将访问大小通过窗口尺寸划分,可以计算对于每个切片的传输速率。在重新映射时,对于每个切片,重新映射算法可以校验每个节点的传输速率并且可以将它分配至具有最高传输速率的节点。在切片的当前所有者对于特定切片具有最大传输速率的情况下,切片不需要被重新映射。如果多个节点具有最高传输速率,则可以使用例如访问大小、切片所有权切换的周期性、缓存污染以及其他启发法来打破束缚。通过由远程节点对于每个切片的传输速率的相加能够计算原始的和新的网络利用率。在一轮重新映射后,可以重置该统计。

可以由管理员确定重新映射的频率。例如,它可以在白天期间的特定时间运行,例如,当请求流量低时。重新映射也可以是自动的,例如,后台处理可以周期地轮询来自每个节点的传输速率并确定是否存在从稳定状态的改变,例如,由于应用访问模式的改变。

根据本发明可选的方面,其他的启发法可以用来确定改善的切片布置,诸如在节点上的缓存空间利用率,在所有权改变后需要被迁移的无用数据的量和赶出。每个节点能够追踪能被刷新的无用数据的量。能够避免切片的重新映射,这意味着刷新高于阈值的无用数据。在重新映射期间通过不同节点刷新大量的数据能够创建随机写入磁盘,以及因此能够影响执行重新映射的时间,并且还对需要从缓存遗漏上的磁盘中取出数据的应用i/o有影响。缓存利用率也能被考虑因为节点能够是对于切片的最佳所有者,例如,基于传输速率,但这不意味存储在它的最佳所有者上的切片会提高性能。对于每个节点,基于传输速率能够将优先级分配至这些切片。在重新映射期间能够使用这些优先级与缓存利用率一起来确定特定的切片是否应被重新映射至给定的节点。如果缓存利用率低,那么能够发生重新映射,否则映射低优先级的切片能够引起来自其他高优先级的切片的数据被赶出,这将对性能产生负面影响。

在创建了新的路由映射后,宜在每个集群中动态更新路由映射,例如,没有任何停机时间、没有删除或重新创建集群,或没有停止长持续时间的数据请求的处理。

根据本公开的方面,新的路由映射可以通过集群中的所有节点被自动地更新。例如,节点的其中之一可以被分配为可以负责协调更新的管理节点。管理节点可以向集群的全部其它节点提供新的路由映射以及可以请求他们开始更新过程。根据本公开的方面,更新过程可以包含三个步骤。在第一步骤期间,所有节点可以单独的比较新的路由映射与当前路由映射并且可以确定哪个切片被从新分配至他们,例如,增加的切片,以及哪个切片不再被分配至他们,例如,丢失的切片。

当前切片所有者可以从后端将数据取回到切片缺失上。在重新映射期间,如果旧的所有者没有刷新全部的无用数据并且将全部后续的写入当作连续写入,那么新的所有者可结束从后端取回陈旧数据(在远程敲击时期结束之后)。对于全部丢失的切片所有权,节点可以刷新任何他们在切片内的用于这些切片的无用数据并且可以同时使这些切片连续写入。因此,在被刷新之后,任何新写入的将不会使切片再一次变无用。这可以保证后端的一致性(切片设备)从而如果发生任何错误,可以不依赖于切片的旧的所有者。

对于全部增加切片的所有权,节点可以删除当前切片内的任何之前存在的数据。执行这个行为是因为,如上所解释的,丢失切片所有权的过程在不删除属于具有丢失所有权的节点的切片的情况下刷新无用数据。当属于那个被丢失的所有权的切片的数据没有创建任何问题时,当新的数据被储存时,这个行为将最终从切片驱逐出来。例如,如果切片被重新映射到新的所有者,旧的所有者可以刷新任何与所有权改变之前的切片相关的无用数据。在所有权改变之后的远程敲击时期期间,新的所有者可以向就得所有者质询关于切片缺失的数据,因为从旧的所有者当中获得数据比从后端中获得数据更快速。这通常是正确的因为网络和固态驱动器存储比硬盘驱动器存取更快速。在所有权改变之后缓存请求可以同时避免缓存污染因为不是被缓存到旧的所有者的切片的区块全部会被新的所有者需要。远程敲击时期可以为有限时间段以及可以被用于警告新的所有者的缓存。对于区块上的读取请求,新的所有者可以为区块质询旧的所有者并且可以缓存它。如果旧的所有者不具有区块,新的所有者可以从后端中将其取回。以后时间的写入请求可以修改区块,其可使得旧的所有者上的区块拷贝变为陈旧。如果在重新映射的新一轮期间切片被重新映射至其旧的所有者,如果旧的所有者在其缓存内依然具有区块,那么对于读取请求其将返回陈旧的数据。这是预先清除任何可能具有正在增加所有权的切片的节点的现存数据的原因。

完成这个步骤之后,每个节点可以通知管理节点关于步骤完成的状态,例如,是否节点已经成功地刷新无用数据并且已经删除了之前存在的数据或者是否这个步骤中有错误。根据本公开的方面,如果全部节点指示他们已经成功地完成了步骤,管理节点可以命令全部节点移动到更新过程的第二步。如果至少一个节点指示在第一步骤期间有错误,管理节点可以命令全部节点中止更新过程。

在第二步骤管理节点可以命令全部节点来单独的暂停服务他们的请求,例如,接收的请求可以保留在队列中,并且应用于新的路由映射。在完成这个步骤之后,每个节点可以通知管理节点关于步骤完成的状态,例如,是否他们已经成功地应用新的映射或者是否步骤中有错误。如果全部的节点指示步骤成功,管理节点可以命令全部节点移动至更新过程的第三步。如果至少一个节点指示在第一步骤期间有错误,管理节点可以命令全部节点中止更新过程。当节点接收到中止指令,节点可以丢弃新的路由映射并且可以根据之前的路由映射恢复他们的请求过程。根据本发明的可替代的方面,管理节点可以在一些时间之后重新连接协议。在更新过程的第三步骤,全部节点可以恢复服务他们的请求。

图4示出根据本发明的方面用于更新路由映射的示例性方法400。具体的,管理节点可以发送新的路由映射到全部节点并且可以请求他们开始更新过程402。一旦节点接收到新的路由映射,节点可以比较新的路由映射与当先路由映射404。节点可以然后确定他们已经增加和/或丢失的406切片。对于全部丢失的片所有权,节点为这些片刷新缓存内的无用数据并且使这些片连续写入408。对于全部增加的片所有权,节点删除可在缓存410内呈现的任何之前存在的数据。如果错误发生在节点412的任何一个处,那么管理节点可以中止过程414。如果没有错误发生,节点可以停止服务他们的请求416并且应用新的路由映射418。如果错误发生在节点420的任何一个处,那么管理节点可以中止过程414。如果没有错误发生,那么节点可以恢复服务请求。

在通过全部节点更新录用映射之后,片的新的所有权有效。然而新的所有者不包含任何在所有权更新刚刚结束轮之后的他们增加的片的数据。这不产生任何数据一致性的质疑因为在所有权改变之前,属于这些所有权已经改变的片的全部无用数据被刷新并且因此,新的所有者可以经常从后端取回数据以服务任何请求。这可以增加延时,然而,因为缓存需要被复温,其可以在所有权改变的每一轮之后导致锯齿形类型表现特征,

所公开的系统以及方法可以调节这个问题。根据本公开的方面,在所有权更改之前,数据可以被传送到新的所有者而不是被刷新到后端。根据公开的可替代方面,在所有权更改之后,数据可以被传送到从旧的所有者节点到新的所有者节点的后台之内。

这些解决方法可以潜在地导致缓存污染因为并不是已经被用于特定片缓存的数据全部可被频繁地存取。例如,只有片的子集可以被频繁地存取并且剩余的被稀少地存取从而导致其不够热而不被缓存。对于这些情境,从旧的所有者节点到新的所有者节点传送用于特定片的全部缓存数据可以导致从新的所有者中驱逐出一些更频繁地存取的数据。

根据公开的方面,请求上的缓存数据可以改善锯齿形表现并且同时避免缓存污染。请求上的缓存数据是有时限的过程,被称作远程敲击时期。通过查阅新的和旧的路由映射,公开的方法可以确定当前和旧的所有者的片。对于任何请求,如果新的所有者没有数据,公开的方法可以查询旧的所有者并且可以检查如果其缓存内依然有数据。这假设在更新路由映射过程区间,用于丢失片的数据没有被删除。数据可以被刷新所以缓存内是清洁的并且根据缓存垃圾收集策略可以最终被驱逐。

根据公开的方面,如果旧的所有者依然有数据,请求可以被服务。数据同时被缓存并且定位在新的所有者之中。因此,数据可以按需从旧的所有者迁移到新的所有者,其避免了缓存污染。此外,从旧的所有者取回数据可以比从后端取回数据更快,并且因此,锯齿形表现可以被改善。数据需要被定位在新的所有者上因为其可被修改导致旧的所有者具有陈旧数据。这可在远程敲击时期期间防止属于新增加片的新的所有者上的数据的驱逐。如果旧的所有者在其缓存内没有数据,那么数据可以从后端被取回并且可以被缓存和定位在新的所有者之中。

远程敲击时期结束之后,旧的所有者不再为任何缓存丢失查询并且数据可以被释放到新的所有者上。使用不同探索方法远程敲击时期的时间长度可以被确定,例如,基于历史时刻用于缓和缓存。

本领域技术人员将会意识到在此描述说明书以及附图中的不同表示方法可以被实施作为电子硬件、计算机软件或者两者的组合。为了说明硬件和软件的这种可交换性,不同的说明性框图、模块、元件、组件、方法以及算法已经按照他们的功能性被总体的描述。是否这种功能性被实施作为硬件、软件或者组合依赖于施加到全部系统的特定的应用和设计限制。对于每个特定的应用技术人员可以以不同方式实施描述的功能性。不同的组件以及框图在不背离学科技术的范围内可以被全部不同的安排(例如,安排在不同的次序,或者分区在不同的方式)。

此外,通信协议的实施可以在一个计算机系统内以集中的方式被了解,或者在通过几个互相连接的计算机系统传播的不同元件内以分布式的方式被了解。任何种类的计算机系统,或者其它适用于完成描述在此方法的装置,适合于执行描述在此的功能。

硬件和软件的典型组合可以是具有计算机程序的通用计算机系统,当被载入以及实行时,所述计算机程序控制计算机系统完成描述在此的方法。用于通信协议的方法可以同时被嵌入到计算机程序产品,其包含全部使能描述在此方法的实施的特征,以及当载入至计算机系统中时,所述计算机程序产品可以完成这些方法。

在本背景的计算机程序或者应用表示指令的集合的任何表达方式、任何语言、代码或者标记用于导致系统具有信息处理能力直接或者之后以执行以下一个或者全部的特定功能a)转变为另一种语言、代码或者标记符号;b)在不同材料形式中复制。显著的,这个通信协议可以在其它没有背离在此的精神或者基础的特定方式中被体现,因此,引用应该被具有以下权利要求,而不是之前的说明书,作为指示本发明的保护范围。

通信协议已经与具体的引用说明性实施例被详细的描述。可以在不超过本领域保护范围的精神内对之前描述的说明书进行不同的修改以及更改是显而易见的,并且这种修改以及更改被认为是本发明的等同或一部分。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1