一种磨损感知和负载均衡的多层非易失缓存方法与流程

    专利2022-07-08  65


    本发明涉及非易失缓存领域,更具体地,涉及一种磨损感知和负载均衡的多层非易失缓存方法。



    背景技术:

    数据密集型应用和服务对数据存储的需求越来越高,大规模存储系统提供了大规模存储和快速响应能力。由于真实的工作负载通常是倾斜的(例如,请求分布符合zipf定律),一些节点会接收到更多的请求,而其他节点接收较少请求,不均衡的请求分布导致了负载的不均衡,使得热点节点成为系统瓶颈,降低了系统的性能,因此负载均衡是大规模存储系统的一个挑战。

    为了尝试解决负载均衡的问题,缓存被加以应用。在使用dram的缓存架构中,dram芯片不仅容量小,而且成本高,相比之下,非易失存储设备具有容量大和非易失等优势,因而被广泛部署于大规模存储系统中。然而,非易失存储设备的写寿命有限,只能够接受一定次数的写操作,且读写性能不对称,使得写操作延迟更高。不对称的读写操作会影响负载均衡,集中的写操作也会加快一些节点的损坏。现有缓存机制未考虑非易失存储设备的读写不对称和写寿命,因而呈现出负载不均和磨损不均等问题。显然,如何提高负载均衡和磨损均衡能力,是非易失缓存的关键所在。

    在现有技术中,公开号为cn103268292a的中国发明专利,于2013年08月28日公开了一种延长非易失外存寿命的方法及高速长寿外存系统,通过维护写缓存和原始缓存进行工作;维护方法包括写缓存混合粒度调度方法、基于字节的比较写回方法和双缓存协调方法;首先使用写缓存来合并文件系统对同一数据的多次写操作,再通过写缓存和原始缓存基于字节的比较来写回新数据。虽然该技术方案通过降低非易失存储器的写数据量,在一定程度上延长了非易失外存寿命,但是并未能解决上述问题。因此,用户急需一种磨损感知和负载均衡的多层非易失缓存方法。



    技术实现要素:

    本发明为解决大规模存储系统访问负载倾斜、非易失存储设备读写不对称和写寿命有限所导致的负载不均、磨损不均等问题,提供了一种磨损感知和负载均衡的多层非易失缓存方法。

    本发明的首要目的是为解决上述技术问题,本发明的技术方案如下:

    一种磨损感知和负载均衡的多层非易失缓存方法,包括以下步骤:建立多层非易失缓存架构,用于处理大规模存储系统中对象的读写请求;在处理对象的读写请求之前,采用独立缓存分区算法进行对象缓存;在处理对象的读写请求过程中,采用多路选择方法进行对象访问;在处理对象的读写请求过程中,监控多层非易失缓存架构的磨损情况,当磨损情况超过所设阈值时,采用数据迁移方法进行对象调换。

    优选地,通过客户端、协调节点、缓存层、存储集群搭建所述多层非易失缓存架构;其中,所述客户端与协调节点连接;所述客户端与缓存层连接;所述客户端与存储集群连接;所述缓存层与存储集群连接。

    优选地,所述缓存层包括缓存节点;所述缓存节点与客户端连接;所述缓存节点与存储集群连接。

    优选地,所述存储集群包括若干存储服务器;所述存储服务器与客户端连接;所述存储服务器与缓存节点连接。

    优选地,所述对象缓存的具体过程为:每个所述缓存层均采用独立缓存分区算法进行数据散列。

    优选地,所述对象访问的具体过程为:采用多路选择方法对不同所述缓存节点中缓存的相同对象进行访问。

    优选地,所述协调节点包括重映射表;所述重映射表用于存储迁移后的对象的位置信息。

    优选地,所述协调节点还包括磨损均衡模块,所述磨损均衡模块记录各缓存节点处理的写操作次数,并根据固定间隔计算不同缓存节点之间的写操作次数方差。

    优选地,所述对象调换的具体过程为:所述磨损均衡模块根据所述写操作次数方差进行判断,若所述写操作次数方差大于所设定的阈值,则触发缓存节点之间进行数据迁移;若所述写操作次数方差小于或等于所设定的阈值,则缓存节点之间无需进行数据迁移。

    优选地,所述数据迁移在相同缓存层中的不同缓存节点之间进行。

    与现有技术相比,本发明技术方案的有益效果是:

    本发明通过建立多层非易失缓存架构,对大规模存储系统中的读写请求进行处理;在处理读写请求之前,采用独立缓存分区算法缓存对象,有效避免两个缓存层产生相同热点节点而导致负载倾斜;在处理读写请求的过程中,采用多路选择方法访问对象,有效避免某一缓存节点处理请求次数较多而导致负载压力过重;这极大提高了大规模存储系统的负载均衡能力。再者,在某一缓存节点磨损达到阈值时,采用数据迁移方法调换对象,有效避免某一缓存节点经常处理热数据而导致磨损过重;极大提高了大规模存储系统的磨损均衡能力,并且提高了系统整体的使用寿命。

    附图说明

    图1为本方法步骤图;

    图2为多层非易失缓存架构示意图;

    图3为独立缓存分区算法示意图;

    图4为多路选择方法示意图;

    图5为同一缓存层内数据迁移示意图;

    图6为不同缓存层之间数据迁移示意图。

    具体实施方式

    为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

    在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

    实施例1

    如图1所示,一种磨损感知和负载均衡的多层非易失缓存方法,包括以下步骤:建立多层非易失缓存架构,用于处理大规模存储系统中对象的读写请求;在处理对象的读写请求之前,采用独立缓存分区算法进行对象缓存;在处理对象的读写请求过程中,采用多路选择方法进行对象访问;在处理对象的读写请求过程中,监控多层非易失缓存架构的磨损情况,当磨损情况超过所设阈值时,采用数据迁移方法进行对象调换。

    上述方案中,基于所建立的多层非易失缓存架构,对大规模存储系统中的读写请求进行处理;通过采用独立缓存分区算法进行对象缓存,能够避免产生相同热点节点,造成负载倾斜;通过多路选择方法进行对象访问,能够避免某一节点处理次数较多,造成节点压力过重;对于避免负载倾斜以及节点压力过重,能够有效提高大规模存储系统的负载均衡能力;再者,监控多层非易失缓存架构的磨损情况,并在达到阈值时通过采用数据迁移方法进行对象调换,避免某一节点经常处理热数据,磨损相比其他节点更严重;对于避免节点磨损过重,能够有效提高大规模存储系统的磨损均衡能力,从而提高系统整体的使用寿命。

    具体地,如图2所示,通过客户端、协调节点、缓存层、存储集群搭建所述多层非易失缓存架构;其中,所述客户端与协调节点连接;所述客户端与缓存层连接;所述客户端与存储集群连接;所述缓存层与存储集群连接。

    上述方案中,客户端负责发送请求,并遵循zipf分布,所述请求根据种类可分为读请求(查询一个对象)、写请求(更新一个对象),其中读请求又分为缓存命中(访问对象在缓存中)、缓存不命中(访问对象不在缓存中);协调节点负责存储迁移后对象的地址以及缓存层的磨损情况;缓存层(图示为缓存层1、缓存层2),负责缓存最近访问数据,在缓存空间不足时,使用lru算法进行缓存替换,即根据最近使用时间进行排序,上次访问离当前最远的数据将被淘汰。

    具体地,所述缓存层包括缓存节点;所述缓存节点与客户端连接;所述缓存节点与存储集群连接。

    上述方案中,缓存节点部署于各集群之中,根据局部性原理,缓存最近访问对象,处理大部分请求,未缓存对象才交由存储服务器进行响应。缓存节点使用非易失存储设备作为存储介质,利用其高集成度提高了缓存的容量,且提供了数据掉电不丢失的非易失存储能力,便于数据快速回复,提高了大规模存储系统的可靠性。

    具体地,所述存储集群包括若干存储服务器;所述存储服务器与客户端连接;所述存储服务器与缓存节点连接。

    上述方案中,多层非易失缓存架构对于读请求和写请求的处理过程分别如下:读请求:客户端发出一个读请求,先到达协调节点,若能在协调节点中获取所读对象的地址信息,则客户端将读请求直接转发至相应的缓存节点,由缓存节点进行响应,而不会到达存储服务器;若未能在协调节点中获取所读对象的地址信息,则可能该对象为未迁移的缓存对象或未缓存的对象,此时根据缓存分区算法,客户端将请求转发至对应的缓存节点,若缓存节点中有该对象,则返回结果,若缓存节点中没有该对象,则缓存节点进一步将请求转发至存储服务器,由存储服务器进行响应。写请求:客户端将写请求直接发送至存储服务器,进行数据更新,然后由存储服务器转发该请求至缓存节点进行更新,保证数据的一致性。

    具体地,所述对象缓存的具体过程为:每个所述缓存层均采用独立缓存分区算法进行数据散列。

    上述方案中,当不同缓存层采用相同的缓存分区算法时,将导致两层出现相同的热点节点,当不同缓存层采用不同的缓存分区算法时,将大概率使得一层中处于相同节点的数据,分散至另一层的不同节点,如图2所示,缓存层1使用hash1函数进行数据散列,对象ab被映射至节点c3中,对象c被映射至节点c4中,对象de被映射至节点c5中;缓存层2使用hash2函数进行数据散列,对象bc被映射至节点c0中,对象d被映射至节点c1中,对象ae被映射至节点c2中;可见,在缓存层1中对象ab处于同一节点,缓存层2中ab被分散了;另外,hash函数可采用md5算法、xxhash算法等。对象缓存的具体步骤为:存储服务器将要进行缓存的对象发送至不同的缓存层;不同的缓存层接收到要进行缓存的对象后,采用相互独立的缓存分区算法进行数据散列;根据缓存分区算法,需要缓存的对象被分散至相应的缓存节点中。

    具体地,所述对象访问的具体过程为:采用多路选择方法对不同所述缓存节点中缓存的相同对象进行访问。

    上述方案中,对于相同缓存对象,将会同时存在于多个缓存层之中,因而存在多条路径访问到该对象;此时,根据多个缓存节点的负载情况(过往处理请求数量),选择一个负载较轻的缓存节点发送请求,以降低负载较重的缓存节点的压力,减少请求排队的延迟,能够进一步提升大规模存储系统的负载均衡能力。如图3所示,对于对象a,缓存节点c2、c3均缓存了该对象,根据协调节点记录的负载信息,得知缓存节点c2最近处理请求数较多,因此将该请求转发至缓存节点3进行响应。对象访问的具体步骤为:客户端确定所要访问的对象;协调节点寻找包含有该对象的缓存节点;协调节点根据它们的负载情况进行判断;协调节点选中负载较轻的缓存节点;被选中的缓存节点进行响应。

    具体地,所述协调节点包括重映射表;所述重映射表用于存储迁移后的对象的位置信息。

    上述方案中,重映射表负责存储迁移后对象的位置信息。

    具体地,所述协调节点还包括磨损均衡模块,所述磨损均衡模块记录各缓存节点处理的写操作次数,并根据固定间隔计算不同缓存节点之间的写操作次数方差。

    上述方案中,磨损均衡模块通过记录各缓存节点处理的写操作次数来表征缓存节点的磨损情况。

    具体地,所述对象调换的具体过程为:所述磨损均衡模块根据所述写操作次数方差进行判断,若所述写操作次数方差大于所设定的阈值,则触发缓存节点之间进行数据迁移;若所述写操作次数方差小于或等于所设定的阈值,则缓存节点之间无需进行数据迁移。

    上述方案中,数据迁移是将重磨损节点上的热数据(更新频率较高的对象)迁移到轻磨损节点上,同时,将轻磨损节点上的冷数据(更新频率较低的对象)迁移到重磨损节点上。进行对象调换的具体步骤是:磨损均衡模块记录各缓存节点的磨损情况;磨损均衡模块根据磨损情况判断触发数据迁移;磨损均衡模块选中需要进行迁移的两个缓存节点;两个缓存节点之间进行对象调换。

    具体地,所述数据迁移在相同缓存层中的不同缓存节点之间进行。

    上述方案中,在多层非易失缓存架构中,重磨损节点与轻磨损节点可能处于同一缓存层,也可能处于不同缓存层。对于同一缓存层发生的数据迁移,如图4所示,将重磨损节点上的热数据与轻磨损节点上的冷数据进行交换,交换完成后系统正常运行。对于不同缓存层之间发生的数据迁移,如图5所示,选取的对象可能无法直接交换,而无效的交换或不恰当的交换都会增加缓存节点的磨损程度,降低大规模存储系统系统整体使用寿命:①若不同缓存层之间选择的对象相同(缓存层2中的对象e与缓存层1中的对象e交换),那么本次数据迁移将是无效的,交换前后对象分布没有发生改变,无法起到改善写请求分布和磨损均衡;②若本次数据迁移发生后,使得两个相同对象存在于同一个缓存节点中(缓存层2中的对象e与缓存层1中的对象d交换),则会导致后续该对象的读写请求都集中在一个缓存节点上,形成热点,使得负载和磨损都不平衡,降低系统性能。因此,数据迁移在相同缓存层中的不同缓存节点之间进行。

    相同或相似的标号对应相同或相似的部件;

    附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;

    显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。


    技术特征:

    1.一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,包括以下步骤:

    建立多层非易失缓存架构,用于处理大规模存储系统中对象的读写请求;

    在处理对象的读写请求之前,采用独立缓存分区算法进行对象缓存;

    在处理对象的读写请求过程中,采用多路选择方法进行对象访问;

    在处理对象的读写请求过程中,监控多层非易失缓存架构的磨损情况,当磨损情况超过所设阈值时,采用数据迁移方法进行对象调换。

    2.根据权利要求1所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,通过客户端、协调节点、缓存层、存储集群建立所述多层非易失缓存架构;其中,所述客户端与协调节点连接;所述客户端与缓存层连接;所述客户端与存储集群连接;所述缓存层与存储集群连接。

    3.根据权利要求2所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述缓存层包括缓存节点;所述缓存节点与客户端连接;所述缓存节点与存储集群连接。

    4.根据权利要求3所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述存储集群包括若干存储服务器;所述存储服务器与客户端连接;所述存储服务器与缓存节点连接。

    5.根据权利要求2所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述对象缓存的具体过程为:每个所述缓存层均采用独立缓存分区算法进行数据散列。

    6.根据权利要求3所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述对象访问的具体过程为:采用多路选择方法对不同所述缓存节点中缓存的相同对象进行访问。

    7.根据权利要求2所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述协调节点包括重映射表;所述重映射表用于存储迁移后的对象的位置信息。

    8.根据权利要求3所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述协调节点还包括磨损均衡模块,所述磨损均衡模块记录各缓存节点处理的写操作次数,并根据固定间隔计算不同缓存节点之间的写操作次数方差。

    9.根据权利要求8所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述对象调换的具体过程为:所述磨损均衡模块根据所述写操作次数方差进行判断,若所述写操作次数方差大于所设定的阈值,则触发缓存节点之间进行数据迁移;若所述写操作次数方差小于或等于所设定的阈值,则缓存节点之间无需进行数据迁移。

    10.根据权利要求9所述的一种磨损感知和负载均衡的多层非易失缓存方法,其特征在于,所述数据迁移在相同缓存层中的不同缓存节点之间进行。

    技术总结
    本发明公开了一种磨损感知和负载均衡的多层非易失缓存方法,包括以下步骤:建立多层非易失缓存架构,用于处理大规模存储系统中对象的读写请求;在处理对象的读写请求之前,采用独立缓存分区算法进行对象缓存;在处理对象的读写请求过程中,采用多路选择方法进行对象访问;在处理对象的读写请求过程中,监控多层非易失缓存架构的磨损情况,当磨损情况超过所设阈值时,采用数据迁移方法进行对象调换。本发明建立多层非易失缓存架构并用于处理大规模存储系统的读写请求;分别采用独立缓存分区算法缓存对象、采用多路选择方法访问对象,提高系统负载均衡能力;再者采用数据迁移方法调换对象,提高系统的磨损均衡能力以及系统整体使用寿命。

    技术研发人员:刘芳;蔡振华;陈志广;苏屹宏;黄志杰
    受保护的技术使用者:中山大学
    技术研发日:2020.10.29
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22485.html

    最新回复(0)