热点数据迁移流控方法、装置、电子设备及存储介质与流程

文档序号:15849928发布日期:2018-11-07 09:41阅读:264来源:国知局
热点数据迁移流控方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,具体涉及一种热点数据迁移流控方法、装置、电子设备及存储介质。

背景技术

缓存就是数据交换的缓冲区,当某一硬件,如cpu,要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

然而,缓存只是内存中少部分数据的复制品,所以硬件到缓存中寻找数据时,会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),此时硬件去内存中找数据,这样整个系统的运行速度就会慢下来。

热点数据是硬件经常需要用到的数据,将热点数据提前存入到缓存中去,可以便于硬件调用热点数据时,能够直接从缓存中获取,以此节省数据获取的时间。

然而,在将热点数据存储到缓存的过程中,会产生大量的输入输出(input/output,io),如果此时正好是用户应用的io高峰期,会影响用户应用的响应时间,给用户带来不好的体验。



技术实现要素:

鉴于以上内容,有必要提出一种热点数据迁移流控方法、装置、电子设备及存储介质,能够在将热点数据写入缓存中、节省读取热点数据的时间的同时,避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

本发明的第一方面提供一种热点数据迁移流控方法,所述方法包括:

每隔预设时间段记录用户访问的数据集;

将所述数据集划分为多个数据块;

判断所述多个数据块中是否有数据块为热点数据;

当确定有数据块为热点数据时,判断被确定为热点数据的数据块是否写入缓存中;

当判断被确定为热点数据的数据块没有写入缓存中时,获取迁移周期内的当前统计周期对应的流控阈值;

基于所述当前统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中。

优选的,将所述数据集划分为多个数据块包括:

将所述数据集平均划分为预设数量的数据块;或

将所述数据集随机划分为预设数量的数据块;或

将所述数据集按照预设大小划分为多个数据块。

优选的,所述判断所述多个数据块中是否有数据块为热点数据是通过计算数据块被访问的概率值,基于所述概率值预测数据块是否为热点数据,包括:统计每个数据块在所述预设时间段内被访问的次数;基于每个数据块在所述预设时间段内被访问的次数,计算每个数据块在所述预设时间段内被访问的概率值;判断每个数据块被访问的概率值是否大于预设概率值;当判断数据块被访问的概率值大于所述预设概率值时,确定大于所述预设概率值的被访问的概率值对应的数据块为热点数据;当判断数据块被访问的概率值小于或者等于所述预设概率值时,确定小于或者等于所述预设概率值的被访问的概率值对应的数据块为非热点数据。

优选的,所述获取迁移周期内的当前统计周期对应的流控阈值包括:

判断当前统计周期是否为第一个统计周期;

当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

优选的,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值包括:

获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小;

获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延;

获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值;

根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度;

根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别;

根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

优选的,所述根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度的计算公式为:其中,x为上述上一个统计周期内的所述io的平均数据块大小,y为所述平均数据块时延,m为所述数据块大小的基准值,n为所述对应的数据块时延的基准值。

优选的,所述根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值包括:

当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值;

当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到当前统计周期对应的流控阈值;

当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

本发明的第二方面提供一种热点数据迁移流控装置,所述装置包括:

记录模块,用于每隔预设时间段记录用户访问的数据集;

划分模块,用于将所述数据集划分为多个数据块;

判断模块,用于判断所述多个数据块中是否有数据块为热点数据;

判断模块,还用于当确定有数据块为热点数据时,判断被确定为热点数据的数据块是否写入缓存中;

获取模块,用于当所述判断模块判断被确定为热点数据的数据块没有写入缓存中时,获取迁移周期内的当前统计周期对应的流控阈值;

迁移模块,用于基于所述当前统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中。

本发明的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述热点数据迁移流控方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述热点数据迁移流控方法。

本发明所述的热点数据迁移流控方法、装置、电子设备及存储介质,每隔预设时间段记录用户访问的数据集,将所述数据集划分为多个数据块,在确定有数据块为热点数据且未被写入缓存时,通过获取迁移周期内的不同统计周期对应的流控阈值,基于所述每一个统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中,在提高用户数据迁移至缓存的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例一提供的热点数据迁移流控方法的流程图。

图2是本发明实施例二提供的根据上一个统计周期内用户应用的io负载确定当前统计周期对应的流控阈值的方法的流程图。

图3是本发明实施例三提供的热点数据迁移流控装置的功能模块图。

图4是本发明实施例四提供的电子设备的示意图。

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

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

在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本发明实施例的热点数据迁移流控方法应用在一个或者多个电子设备中。所述热点数据迁移流控方法也可以应用于由电子设备和通过网络与所述电子设备进行连接的服务器所构成的硬件环境中。网络包括但不限于:广域网、城域网或局域网。本发明实施例的热点数据迁移流控方法可以由服务器来执行,也可以由电子设备来执行;还可以是由服务器和电子设备共同执行。

对于需要进行热点数据迁移流控方法的电子设备,可以直接在电子设备上集成本发明的方法所提供的热点数据迁移流控功能,或者安装用于实现本发明的方法的客户端。再如,本发明所提供的方法还可以以软件开发工具包(softwaredevelopmentkit,sdk)的形式运行在服务器等设备上,以sdk的形式提供热点数据迁移流控功能的接口,电子设备或其他设备通过提供的接口即可实现对后台写盘进行流控的功能。

实施例一

图1是本发明实施例一提供的热点数据迁移流控方法的流程图。根据不同的需求,该流程图中的执行顺序可以改变,某些步骤可以省略。

s11、每隔预设时间段记录用户访问的数据集。

预设时间段为预先设置的时间周期,例如,一周或者10天等。本发明对预设时间段不做具体限定,可依据电子系统的硬件或者数据访问情况自行设置。

电子设备侦测到用户访问数据的指令时,响应用户访问数据的指令,将用户访问的数据反馈给用户。记录在所述预设时间段内所有用户访问的数据集。

s12、将所述数据集划分为多个数据块。

将所记录的用户访问的数据集划分为多个数据块。

在本发明较佳实施例中,将所述数据集划分为多个数据块可以包括以下一种或多种的组合:

1)将所述数据集平均划分为预设数量的数据块。

所述预设数量为预先设置的数据块的个数,例如,将所述数据集平均划分为10个数据块,每个数据块的大小相同。

2)将所述数据集随机划分为预设数量的数据块。

例如,将所述数据集随机划分为10个数据块,每个数据块的大小均不相同。

3)将所述数据集按照预设大小划分为多个数据块。

所述预设大小为预先设置的数据块的大小,例如,将所述数据集划分为多个数据块,每个数据块的大小为1mb。所述预设大小还可以为10mb或者更大。

s13、判断所述多个数据块中是否有数据块为热点数据。

在本发明较佳实施例中,判断所述多个数据块中是否有数据块为热点数据可以通过计算数据块被访问的概率值,基于所述概率值预测数据块是否为热点数据。

所述判断所述多个数据块中是否有数据块为热点数据具体可以包括:

1)统计每个数据块在所述预设时间段内被访问的次数;

2)基于每个数据块在所述预设时间段内被访问的次数,计算每个数据块在所述预设时间段内被访问的概率值;

3)判断每个数据块被访问的概率值是否大于预设概率值;

4)当判断数据块被访问的概率值大于所述预设概率值时,确定大于所述预设概率值的被访问的概率值对应的数据块为热点数据;当判断数据块被访问的概率值小于或者等于所述预设概率值时,确定小于或者等于所述预设概率值的被访问的概率值对应的数据块为非热点数据。

举例说明,假如预设时间段为一周,将这一周内用户访问的数据集划分为20个数据块,包括数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7、数据块8、数据块9、数据块10、数据块11、数据块12、数据块13、数据块14、数据块15、数据块16、数据块17、数据块18、数据块19以及数据块20。其中,所述数据块1在一周内被访问了10次、数据块2在一周内被访问了5次、数据块3在一周内被访问了8次、数据块4在一周内被访问了20次、数据块5在一周内被访问了50次、数据块6在一周内被访问了3次、数据块7在一周内被访问了20次、数据块8在一周内被访问了40次、数据块9在一周内被访问了1次、数据块10在一周内被访问了5次、数据块11在一周内被访问了9次、数据块12在一周内被访问了11次、数据块13在一周内被访问了10次、数据块14在一周内被访问了12次、数据块15在一周内被访问了20次、数据块16在一周内被访问了30次、数据块17在一周内被访问了14次、数据块18在一周内被访问了0次、数据块19在一周内被访问了2次以及数据块20在一周内被访问了50次。计算每个数据块被访问的概率值的公式为:其中,xi表示第i个数据块在一周内被访问的次数,pi为第i个数据块在一周内被访问的概率。由此可以计算出所述数据块1被访问的概率值如下所示:

类似的,可以计算出所述数据块2被访问的概率值p2=1.56%,数据块3被访问的概率值p3=2.5%等,其他数据块被访问的概率值不在赘述。

本发明较佳实施例中,所述预设阈值可以是,例如20%,因此被访问的概率值大于20%的数据块里面包含的数据可以被视为热点数据。

当确定有数据块为热点数据时,执行步骤s14;当确定没有数据块为热点数据时,可以返回执行上述步骤s11。

s14、判断被确定为热点数据的数据块是否写入缓存中。

当在缓存中成功命中到被确定为热点数据的数据块时,说明被确定为热点数据的数据块已经写入缓存中;当在缓存中没有命中到被确定为热点数据的数据块时,说明被确定为热点数据的数据块没有写入缓存中。

当判断被确定为热点数据的数据块写入缓存中时,可以直接结束流程;当判断被确定为热点数据的数据块没有写入缓存中时,执行步骤s15。

s15、获取迁移周期内的当前统计周期对应的流控阈值。

将被确定为热点数据且未写入缓存中的数据块从开始写入缓存到完成写入的整个过程称之为一个迁移周期。一个迁移周期可以划分为多个统计周期,一个统计周期可以为一个预设时间段,例如,一个统计周期设置为1秒钟。

所述流控是指流量控制。流控的实现方法包括以下两种:一种是通过路由器、交换机的qos模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。

本较佳实施例中,所述获取迁移周期内的当前统计周期对应的流控阈值具体可以包括:

1)判断当前统计周期是否为第一个统计周期。

可以通过判断当前时间是否为第1秒来判断当前迁移周期是否为第一个统计周期。

2)当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

本发明的迁移周期内的第一个统计周期对应的流控阈值为预先设置的流控阈值,可以由系统的管理者根据经验预先设置。即,采用一个预设的流控阈值作为迁移周期内的第一个统计周期的流控阈值。

3)当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

迁移周期内的除第一个统计周期外的剩余每一个统计周期可以对应一个流控阈值。剩余每一个统计周期对应的流控阈值是动态调整的,当前统计周期对应的流控阈值可以根据上一个统计周期内的io负载计算得到,下一个统计周期对应的流控阈值可以根据当前统计周期内的io负载计算得到。具体而言,根据第一个统计周期内的io负载计算第二个统计周期对应的流控阈值;根据第二个统计周期内的io负载计算第三个统计周期对应的流控阈值;以此类推。

所述根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值的具体过程可以参见图2及其相应描述。

s16、基于所述当前统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中。

根据所述当前统计周期对应的流控阈值将被确定为热点数据的数据块写入到缓存中,被确定为热点数据的数据块以当前统计周期控制的流量进行数据的写入,使得写入缓存中的热点数据不至于过快或过慢,能够避免对正常输入输出业务性能造成明显冲击,被写入缓存中的热点数据可供用户访问。

实施例二

图2是本发明实施例二提供的根据上一个统计周期内用户应用的io负载确定当前统计周期对应的流控阈值的方法的流程图。

s21、获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小。

所述上一个统计周期内的io的平均数据块大小可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。

举例而言,假设检测到上一个统计周期内,用户应用共有十次io,十次io的数据块大小分别为:2m,1m,3m,0.5m,10m,4m,0.1m,1.2m,5m以及8m。利用所述算术平均值算法计算所述上一个统计周期内的io的平均数据块大小为:

s22、获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延。

所述传输时延(简称为时延)是指节点在发送数据时使数据块从节点进入到传输媒体所需的时间,即一个发送站点从开始发送数据帧到数据帧发送完毕所需要的全部时间,或者一个接收站点从开始接收数据帧到数据帧接收完毕所需要的全部时间。

在本发明较佳实施例中,所述数据块的传输时延可以从每个存储节点中安装的一个负载量测工具或者性能监控工具中获取得到。

如上所述,所述上一个统计周期内的io的平均数据块时延也可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。假设,假设检测到上一个统计周期内,十次io的传输时延分别为:1s、0.8s、1.5s、0.4s、5s、2s、0.02s、0.6s、3s及4.5s,则所述上一个统计周期内的io平均数据块时延采用算术平均值算法来计算时,其结果为:

(1s+0.8s+1.5s+0.4s+5s+2s+0.1s+0.6s+3s+4.4s)=1.88s。

应当理解的是,若上一个统计周期内的io的平均数据块大小采用算术平均值算法来计算,则上一个统计周期内的io的平均数据块时延也采用算术平均值算法来计算;若上一个统计周期内的io的平均数据块大小采用几何平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用几何平均数算法来计算;或者若上一个统计周期内的io的平均数据块大小采用均方根平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用均方根平均数算法来计算。

s23、获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值。

在本发明较佳实施例中,所述io数据块大小的基准值以及对应的数据块时延的基准值可以由存储系统的管理员根据经验预先设置。例如,根据经验,4k的数据块在传输时,时延最小,理想状态下可以达到50ms,则所述io数据块大小的基准值可以设置为4k,对应的数据块时延的基准值可以设置为50ms。

s24、根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度。

举例而言,假设上一个统计周期内的所述io的平均数据块大小为x、平均数据块时延为y、数据块大小的基准值为m、对应的数据块时延的基准值为n,则所述上一个统计周期内的io负载强度的计算公式为:

s25、根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别。

在本发明较佳实施例中,所述io负载类别包括:高负载类别、正常负载类别、低负载类别。

优选地,所述负载分类模型包括,但不限于:支持向量机(supportvectormachine,svm)模型。将所述上一个统计周期内的io的平均数据块大小、所述上一个统计周期内的io的平均数据块时延、所述上一个统计周期内的io负载强度作为所述负载分类模型的输入,经过所述负载分类模型计算后,输出上一个统计周期内的io负载类别。

在本发明的优选实施例中,所述负载分类模型的训练过程包括:

1)获取正样本的io负载数据及负样本的io负载数据,并将正样本的io负载数据标注负载类别,以使正样本的io负载数据携带io负载类别标签。

例如,分别选取500个高负载类别、正常负载类别、低负载类别对应的io负载数据,并对每个io负载数据标注类别,可以以“1”作为高负载的io数据标签,以“2”作为正常负载的io数据标签,以“3”作为低负载的io数据标签。

2)将所述正样本的io负载数据及所述负样本的io负载数据随机分成第一预设比例的训练集和第二预设比例的验证集,利用所述训练集训练所述负载分类模型,并利用所述验证集验证训练后的所述负载分类模型的准确率。

先将不同负载类别的训练集中的训练样本分发到不同的文件夹里。例如,将高负载类别的训练样本分发到第一文件夹里、正常负载类别的训练样本分发到第二文件夹里、低负载类别的训练样本分发到第三文件夹里。然后从不同的文件夹里分别提取第一预设比例(例如,70%)的训练样本作为总的训练样本进行负载分类模型的训练,从不同的文件夹里分别取剩余第二预设比例(例如,30%)的训练样本作为总的测试样本对训练完成的所述负载分类模型进行准确性验证。

3)若所述准确率大于或者等于预设准确率时,则结束训练,以训练后的所述负载分类模型作为分类器识别所述当前统计周期内的io负载类别;若所述准确率小于预设准确率时,则增加正样本数量及负样本数量以重新训练所述负载分类模型直至所述准确率大于或者等于预设准确率。

s26、根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

具体的,所述根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值可以包括:

1)当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值。

在上一个统计周期内的io负载为高负载时,按照所述第一预设幅度降低流控阈值,以在当前统计周期内以低流控阈值对被确定为热点数据的数据块执行写入缓存的操作,通过降低数据迁移的速度来保证用户应用的高效访问。

在本发明的优选实施例中,所述第一预设幅度可以是上一个统计周期对应的流控阈值的1/2。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1/2,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1/2。

2)当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到下一个统计周期对应的流控阈值。

在上一个统计周期内的io负载为低负载时,按照所述第二预设幅度提高流控阈值,以在当前统计周期内以高流控阈值对被确定为热点数据的数据块执行写入缓存的操作,在保证用户应用的访问质量的基础上,提高数据迁移的速度。

在本发明的优选实施例中,所述第二预设幅度可以是上一个统计周期对应的流控阈值的1.5倍。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1.5倍,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1.5倍。

3)当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

综上所述,本发明所述的热点数据迁移流控方法,每隔预设时间段记录用户访问的数据集,将所述数据集划分为多个数据块,在确定有数据块为热点数据且未被写入缓存时,通过获取迁移周期内的不同统计周期对应的流控阈值,基于所述每一个统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中,在提高用户数据迁移至缓存的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

其次,当前统计周期对应的流控阈值是根据上一个统计周期内用户应用的io负载自动进行动态调整,不需管理者手动调节,减少了管理者的工作量,避免了因管理者的主观因素导致的调整不精准的问题。

以上所述,仅是本发明的具体实施方式,但本发明的保护范围并不局限于此,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。

下面结合第3至4图,分别对实现上述热点数据迁移流控方法的电子设备的功能模块及硬件结构进行介绍。

实施例三

图3为本发明热点数据迁移流控装置较佳实施例中的功能模块图。

在一些实施例中,所述热点数据迁移流控装置30运行于电子设备中。所述热点数据迁移流控装置30可以包括多个由程序代码段所组成的功能模块。所述热点数据迁移流控装置30中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行(详见图1-2及其相关描述)热点数据迁移流控方法。

本实施例中,所述热点数据迁移流控装置30根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:记录模块301、划分模块302、判断模块303、获取模块304、迁移模块305、计算模块306、确定模块307及训练模块308。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。

记录模块301,用于每隔预设时间段记录用户访问的数据集。

预设时间段为预先设置的时间周期,例如,一周或者10天等。本发明对预设时间段不做具体限定,可依据电子系统的硬件或者数据访问情况自行设置。

电子设备侦测到用户访问数据的指令时,响应用户访问数据的指令,将用户访问的数据反馈给用户。记录模块301记录在所述预设时间段内所有用户访问的数据集。

划分模块302,用于将所述数据集划分为多个数据块。

将所记录的用户访问的数据集划分为多个数据块。

在本发明较佳实施例中,划分模块302将所述数据集划分为多个数据块可以包括以下一种或多种的组合:

1)将所述数据集平均划分为预设数量的数据块。

所述预设数量为预先设置的数据块的个数,例如,将所述数据集平均划分为10个数据块,每个数据块的大小相同。

2)将所述数据集随机划分为预设数量的数据块。

例如,将所述数据集随机划分为10个数据块,每个数据块的大小均不相同。

3)将所述数据集按照预设大小划分为多个数据块。

所述预设大小为预先设置的数据块的大小,例如,将所述数据集划分为多个数据块,每个数据块的大小为1mb。所述预设大小还可以为10mb或者更大。

判断模块303,用于判断所述多个数据块中是否有数据块为热点数据。

在本发明较佳实施例中,判断模块303判断所述多个数据块中是否有数据块为热点数据可以通过计算数据块被访问的概率值,基于所述概率值预测数据块是否为热点数据。

所述判断模块303判断所述多个数据块中是否有数据块为热点数据具体可以包括:

1)统计每个数据块在所述预设时间段内被访问的次数;

2)基于每个数据块在所述预设时间段内被访问的次数,计算每个数据块在所述预设时间段内被访问的概率值;

3)判断每个数据块被访问的概率值是否大于预设概率值;

4)当判断数据块被访问的概率值大于所述预设概率值时,确定大于所述预设概率值的被访问的概率值对应的数据块为热点数据;当判断数据块被访问的概率值小于或者等于所述预设概率值时,确定小于或者等于所述预设概率值的被访问的概率值对应的数据块为非热点数据。

举例说明,假如预设时间段为一周,将这一周内用户访问的数据集划分为20个数据块,包括数据块1、数据块2、数据块3、数据块4、数据块5、数据块6、数据块7、数据块8、数据块9、数据块10、数据块11、数据块12、数据块13、数据块14、数据块15、数据块16、数据块17、数据块18、数据块19以及数据块20。其中,所述数据块1在一周内被访问了10次、数据块2在一周内被访问了5次、数据块3在一周内被访问了8次、数据块4在一周内被访问了20次、数据块5在一周内被访问了50次、数据块6在一周内被访问了3次、数据块7在一周内被访问了20次、数据块8在一周内被访问了40次、数据块9在一周内被访问了1次、数据块10在一周内被访问了5次、数据块11在一周内被访问了9次、数据块12在一周内被访问了11次、数据块13在一周内被访问了10次、数据块14在一周内被访问了12次、数据块15在一周内被访问了20次、数据块16在一周内被访问了30次、数据块17在一周内被访问了14次、数据块18在一周内被访问了0次、数据块19在一周内被访问了2次以及数据块20在一周内被访问了50次。计算每个数据块被访问的概率值的公式为:其中,xi表示第i个数据块在一周内被访问的次数,pi为第i个数据块在一周内被访问的概率。由此可以计算出所述数据块1被访问的概率值如下所示:

类似的,可以计算出所述数据块2被访问的概率值p2=1.56%,数据块3被访问的概率值p3=2.5%等,其他数据块被访问的概率值不在赘述。

本发明较佳实施例中,所述预设阈值可以是,例如20%,因此被访问的概率值大于20%的数据块里面包含的数据可以被视为热点数据。

判断模块303,还用于当确定有数据块为热点数据时,判断被确定为热点数据的数据块是否写入缓存中。

当在缓存中成功命中到被确定为热点数据的数据块时,说明被确定为热点数据的数据块已经写入缓存中;当在缓存中没有命中到被确定为热点数据的数据块时,说明被确定为热点数据的数据块没有写入缓存中。

获取模块304,用于当所述判断模块303判断被确定为热点数据的数据块没有写入缓存中时,获取迁移周期内的当前统计周期对应的流控阈值。

将被确定为热点数据且未写入缓存中的数据块从开始写入缓存到完成写入的整个过程称之为一个迁移周期。一个迁移周期可以划分为多个统计周期,一个统计周期可以为一个预设时间段,例如,一个统计周期设置为1秒钟。

所述流控是指流量控制。流控的实现方法包括以下两种:一种是通过路由器、交换机的qos模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。

本较佳实施例中,所述获取模块304获取迁移周期内的当前统计周期对应的流控阈值具体可以包括:

1)判断当前统计周期是否为第一个统计周期。

可以通过判断当前时间是否为第1秒来判断当前迁移周期是否为第一个统计周期。

2)当确定所述当前统计周期为第一个统计周期时,将预设流控阈值确定为所述当前统计周期对应的流控阈值;

本发明的迁移周期内的第一个统计周期对应的流控阈值为预先设置的流控阈值,可以由系统的管理者根据经验预先设置。即,采用一个预设的流控阈值作为迁移周期内的第一个统计周期的流控阈值。

3)当确定所述当前统计周期不为第一个统计周期时,获取上一个统计周期内用户应用的io负载,根据所述上一个统计周期内用户应用的io负载,确定所述当前统计周期对应的流控阈值。

迁移周期内的除第一个统计周期外的剩余每一个统计周期可以对应一个流控阈值。剩余每一个统计周期对应的流控阈值是动态调整的,当前统计周期对应的流控阈值可以根据上一个统计周期内的io负载计算得到,下一个统计周期对应的流控阈值可以根据当前统计周期内的io负载计算得到。具体而言,根据第一个统计周期内的io负载计算第二个统计周期对应的流控阈值;根据第二个统计周期内的io负载计算第三个统计周期对应的流控阈值;以此类推。

迁移模块305,用于基于所述当前统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中。

根据所述当前统计周期对应的流控阈值将被确定为热点数据的数据块写入到缓存中,被确定为热点数据的数据块以当前统计周期控制的流量进行数据的写入,使得写入缓存中的热点数据不至于过快或过慢,被写入缓存中的热点数据可供用户访问。

所述获取模块304,还用于获取上一个统计周期内用户应用的每一个io的数据块大小,计算所述上一个统计周期内的io的平均数据块大小。

所述上一个统计周期内的io的平均数据块大小可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。

举例而言,假设检测到上一个统计周期内,用户应用共有十次io,十次io的数据块大小分别为:2m,1m,3m,0.5m,10m,4m,0.1m,1.2m,5m以及8m。利用所述算术平均值算法计算所述上一个统计周期内的io的平均数据块大小为:

所述获取模块304,还用于获取所述上一个统计周期内的每个数据块的传输时延,计算所述上一个统计周期内的io的平均数据块时延。

所述传输时延(简称为时延)是指节点在发送数据时使数据块从节点进入到传输媒体所需的时间,即一个发送站点从开始发送数据帧到数据帧发送完毕所需要的全部时间,或者一个接收站点从开始接收数据帧到数据帧接收完毕所需要的全部时间。

在本发明较佳实施例中,所述数据块的传输时延可以从每个存储节点中安装的一个负载量测工具或者性能监控工具中获取得到。

如上所述,所述上一个统计周期内的io的平均数据块时延也可以采用算术平均值算法、几何平均数算法,或者均方根平均数算法来计算。假设,假设检测到上一个统计周期内,十次io的传输时延分别为:1s、0.8s、1.5s、0.4s、5s、2s、0.02s、0.6s、3s及4.5s,则所述上一个统计周期内的io平均数据块时延采用算术平均值算法来计算时,其结果为:

(1s+0.8s+1.5s+0.4s+5s+2s+0.1s+0.6s+3s+4.4s)=1.88s。

应当理解的是,若上一个统计周期内的io的平均数据块大小采用算术平均值算法来计算,则上一个统计周期内的io的平均数据块时延也采用算术平均值算法来计算;若上一个统计周期内的io的平均数据块大小采用几何平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用几何平均数算法来计算;或者若上一个统计周期内的io的平均数据块大小采用均方根平均数算法来计算,则上一个统计周期内的io的平均数据块时延也采用均方根平均数算法来计算。

所述获取模块304,还用于获取预先设置的io的数据块大小的基准值及对应的数据块时延的基准值。

在本发明较佳实施例中,所述io数据块大小的基准值以及对应的数据块时延的基准值可以由存储系统的管理员根据经验预先设置。例如,根据经验,4k的数据块在传输时,时延最小,理想状态下可以达到50ms,则所述io数据块大小的基准值可以设置为4k,对应的数据块时延的基准值可以设置为50ms。

计算模块306,用于根据所述上一个统计周期内的所述io的平均数据块大小、平均数据块时延、数据块大小的基准值、对应的数据块时延的基准值,计算所述上一个统计周期内的io负载强度。

举例而言,假设上一个统计周期内的所述io的平均数据块大小为x、平均数据块时延为y、数据块大小的基准值为m、对应的数据块时延的基准值为n,则所述上一个统计周期内的io负载强度的计算公式为:

确定模块307,用于根据所述上一个统计周期内的io负载强度,利用预先训练好的负载分类模型确定所述上一个统计周期内的io负载类别。

在本发明较佳实施例中,所述io负载类别包括:高负载类别、正常负载类别、低负载类别。

优选地,所述负载分类模型包括,但不限于:支持向量机(supportvectormachine,svm)模型。将所述上一个统计周期内的io的平均数据块大小、所述上一个统计周期内的io的平均数据块时延、所述上一个统计周期内的io负载强度作为所述负载分类模型的输入,经过所述负载分类模型计算后,输出上一个统计周期内的io负载类别。

训练模块308,用于训练负载分类模型。

所述训练模块308训练负载分类模型的过程包括:

1)获取正样本的io负载数据及负样本的io负载数据,并将正样本的io负载数据标注负载类别,以使正样本的io负载数据携带io负载类别标签。

例如,分别选取500个高负载类别、正常负载类别、低负载类别对应的io负载数据,并对每个io负载数据标注类别,可以以“1”作为高负载的io数据标签,以“2”作为正常负载的io数据标签,以“3”作为低负载的io数据标签。

2)将所述正样本的io负载数据及所述负样本的io负载数据随机分成第一预设比例的训练集和第二预设比例的验证集,利用所述训练集训练所述负载分类模型,并利用所述验证集验证训练后的所述负载分类模型的准确率。

先将不同负载类别的训练集中的训练样本分发到不同的文件夹里。例如,将高负载类别的训练样本分发到第一文件夹里、正常负载类别的训练样本分发到第二文件夹里、低负载类别的训练样本分发到第三文件夹里。然后从不同的文件夹里分别提取第一预设比例(例如,70%)的训练样本作为总的训练样本进行负载分类模型的训练,从不同的文件夹里分别取剩余第二预设比例(例如,30%)的训练样本作为总的测试样本对训练完成的所述负载分类模型进行准确性验证。

3)若所述准确率大于或者等于预设准确率时,则结束训练,以训练后的所述负载分类模型作为分类器识别所述当前统计周期内的io负载类别;若所述准确率小于预设准确率时,则增加正样本数量及负样本数量以重新训练所述负载分类模型直至所述准确率大于或者等于预设准确率。

所述计算模块306,还用于根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值。

具体的,所述计算模块306根据上一个统计周期内的io负载类别计算当前统计周期对应的流控阈值可以包括:

1)当所述上一个统计周期内的io负载类别为高负载类别时,将所述上一个统计周期对应的流控阈值降低第一预设幅度,得到当前统计周期对应的流控阈值。

在上一个统计周期内的io负载为高负载时,按照所述第一预设幅度降低流控阈值,以在当前统计周期内以低流控阈值对被确定为热点数据的数据块执行写入缓存的操作,通过降低数据迁移的速度来保证用户应用的高效访问。

在本发明的优选实施例中,所述第一预设幅度可以是上一个统计周期对应的流控阈值的1/2。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1/2,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1/2。

2)当所述上一个统计周期内的io负载类别为低负载类别时,将所述上一个统计周期对应的流控阈值提高第二预设幅度,得到下一个统计周期对应的流控阈值。

在上一个统计周期内的io负载为低负载时,按照所述第二预设幅度提高流控阈值,以在当前统计周期内以高流控阈值对被确定为热点数据的数据块执行写入缓存的操作,在保证用户应用的访问质量的基础上,提高数据迁移的速度。

在本发明的优选实施例中,所述第二预设幅度可以是上一个统计周期对应的流控阈值的1.5倍。即当前统计周期对应的流控阈值为上一个统计周期对应的流控阈值的1.5倍,下一个统计周期对应的流控阈值为当前统计周期对应的流控阈值的1.5倍。

3)当所述上一个统计周期内的io负载类别为正常负载类别时,将所述上一个统计周期对应的流控阈值作为当前统计周期对应的流控阈值。

综上所述,本发明所述的热点数据迁移流控装置,每隔预设时间段记录用户访问的数据集,将所述数据集划分为多个数据块,在确定有数据块为热点数据且未被写入缓存时,通过获取迁移周期内的不同统计周期对应的流控阈值,基于所述每一个统计周期对应的流控阈值,将所述被确定为热点数据的数据块写入到缓存中,在提高用户数据迁移至缓存的效率、降低数据丢失风险的同时,能够避免对正常输入输出业务性能造成明显冲击,具有很好的流控效果。

其次,当前统计周期对应的流控阈值是根据上一个统计周期内用户应用的io负载自动进行动态调整,不需管理者手动调节,减少了管理者的工作量,避免了因管理者的主观因素导致的调整不精准的问题。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,双屏设备,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

实施例四

图4为本发明实施例四提供的电子设备的示意图。

所述电子设备4包括:存储器41、至少一个处理器42、存储在所述存储器41中并可在所述至少一个处理器42上运行的计算机程序43及至少一条通讯总线44。

所述至少一个处理器42执行所述计算机程序43时实现上述方法实施例中的步骤。

示例性的,所述计算机程序43可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述至少一个处理器42执行,以完成本发明上述方法实施例中的步骤。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序43在所述电子设备4中的执行过程。

所述电子设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备4还可以包括输入输出设备、网络接入设备、总线等。

所述至少一个处理器42可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。该处理器42可以是微处理器或者该处理器42也可以是任何常规的处理器等,所述处理器42是所述电子设备4的控制中心,利用各种接口和线路连接整个电子设备4的各个部分。

所述存储器41可用于存储所述计算机程序43和/或模块/单元,所述处理器42通过运行或执行存储在所述存储器41内的计算机程序和/或模块/单元,以及调用存储在存储器41内的数据,实现所述电子设备4的各种功能。所述存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备4的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述电子设备4集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在本发明所提供的几个实施例中,应该理解到,所揭露的电子设备和方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神范围。

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