一种条目提取方法和装置与流程

文档序号:12465542阅读:246来源:国知局
一种条目提取方法和装置与流程

本发明涉及信息技术领域,特别涉及一种条目提取方法和装置。



背景技术:

在大规模表存储结构中,经常需要获取访问频率高的一些条目,例如,最经常访问的前8个条目,以对条目进行分析和进行控制操作。

相关技术中,为获取访问频率最高的一些条目,通常为每一个条目增加一个计数器和一个初始计数记录,在指定的时间后观察统计每一个条目的初始计数与当前计数之间的计数差值,进行排序后取得访问频率最高的前N(例如,10个)个条目。

但是,这种获取访问频率高的条目的方法会耗费极大的存储空间。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种条目提取方法和装置,以在获取访问频率高的条目的过程中节省存储空间。

一方面,提供一种条目提取方法,其特征在于,所述方法包括:

从第一个采样周期开始直到最后一个采样周期的前一个采样周期,执行以下步骤:

a.获取当前采样周期内对各个条目的访问次数;

b.根据所述当前采样周期内对各个条目的访问次数,确定所述当前采样周期内条目访问的平均值;

c.移除所述当前采样周期内访问次数小于所述平均值的条目,并将访问次数不小于所述平均值的条目作为下一采样周期内的条目;

d.确定下一采样周期是否为最后一个采样周期;

若下一采样周期不为最后一个采样周期,重复步骤a~d,直到下一采样周期为最后一个采样周期;

当下一采样周期为最后一个采样周期时,按照访问次数从高到低的顺序提取最后一个采样周期中的指定个条目。

可选地,在一个实施例中,所述方法还包括:

确定提取的所述指定个条目中的各个条目的访问次数是否超过阈值;

将提取的所述指定个条目中超过阈值的条目封锁指定时间。

可选地,在另一个实施例中,在步骤c之后,所述方法还包括:

针对当前采样周期,确定访问次数不小于所述平均值的条目中的各个条目的访问次数是否超过阈值;

将访问次数超过阈值的条目进行封锁。

可选地,在另一个实施例中,所述方法还包括:

当封锁的条目数目达到指定的条目数目的情况下,对于后续各个采样周期,将后续各个采样周期内需要封锁的条目进行封锁,同时将已封锁的条目中的至少一个条目进行解封锁;

其中,封锁的条目数目等于解封锁的条目数目;

其中,所述需要封锁的条目为访问次数超过所述阈值的条目。

可选地,在另一个实施例中,所述将后续各个采样周期内需要封锁的条目进行封锁,同时将已封锁的条目中的至少一个条目进行解封锁包括:

在进行条目封锁时,按照访问次数从高到低的顺序选取条目进行封锁;

在进行条目解封锁时,按照访问次数从低到高的顺序或者按照封锁时间从先到后的顺序进行解封锁。

可选地,在本发明实施例中,所述条目为IP地址或统一资源定位符(URL)地址,所述阈值为每秒数据包(PPS)的阈值或每秒请求(RPS)的阈值。

可选地,在另一个实施例中,所述方法还包括:以固定大小的存储空间存储提取的所述指定个条目。

另一方面,提供一种条目提取装置,所述装置包括获取模块和处理模块;

从第一个采样周期开始直到最后一个采样周期的前一个采样周期:

所述获取模块,用于获取当前采样周期内对各个条目的访问次数;

所述处理模块,用于根据所述当前采样周期内对各个条目的访问次数,确定所述当前采样周期内条目访问的平均值;

所述处理模块,还用于移除所述当前采样周期内访问次数小于所述平均值的条目,并将访问次数不小于所述平均值的条目作为下一采样周期内的条目;

所述处理模块,还用于当下一采样周期为最后一个采样周期时,按照访问次数从高到低的顺序提取最后一个采样周期中的指定个条目。

可选地,在一个实施例中,所述处理模块还用于:

确定提取的所述指定个条目中的各个条目的访问次数是否超过阈值;

将提取的所述指定个条目中超过阈值的条目封锁指定时间。

可选地,在另一个实施例中,所述处理模块还用于:

针对当前采样周期,确定访问次数不小于所述平均值的条目中的各个条目的访问次数是否超过阈值;

将访问次数超过阈值的条目进行封锁。

可选地,在另一个实施例中,所述处理模块具体用于:

当封锁的条目数目达到指定的条目数目的情况下,对于后续各个采样周期,将后续各个采样周期内需要封锁的条目进行封锁,同时将已封锁的条目中的至少一个条目进行解封锁;

其中,封锁的条目数目等于解封锁的条目数目;

其中,所述需要封锁的条目为访问次数超过所述阈值的条目。

可选地,在另一个实施例中,所述处理模块具体用于:

在进行条目封锁时,按照访问次数从高到低的顺序选取条目进行封锁;

在进行条目解封锁时,按照访问次数从低到高的顺序或者按照封锁时间从先到后的顺序进行解封锁。

其中,在本发明实施例中,所述条目为IP地址或统一资源定位符(URL)地址,所述阈值为每秒数据包(PPS)的阈值或每秒请求(RPS)的阈值。

可选地,在另一个实施例中,所述装置还包括:

存储模块,用于以固定大小的存储空间存储提取的所述指定个条目。

另一方面,提供一种终端设备,所述终端设备包括存储器和处理器,所述存储器上存储有计算机程序,当所述处理器执行所述计算机程序时执行本发明实施例中的任一种条目提取方法。

另一方面,提供一种非临时性存储介质,所述非临时性存储介质上存储有计算机程序,当所述计算机程序被处理器执行时执行本发明实施例中的任一种条目提取方法。

本发明实施例提供的技术方案带来的有益效果是:

通过对每个采样周期内各个条目的访问次数求平均、去除访问次数在平均值以下的条目,并将当前处理后得到的条目作为下一采样周期的条目,如此循环处理,可以保证最后一个采样周期内得到的条目是访问次数高的条目,且占用的存储空间较小。

附图说明

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

图1是本发明实施例提供的条目提取方法的流程图。

图2是本发明实施例提供的条目提取装置的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的条目提取方法的流程图。参照图1,从第一个采样周期开始直到最后一个采样周期的前一个采样周期,本发明实施例提供的条目提取方法可包括:

11、获取当前采样周期内对各个条目的访问次数。

其中,本发明实施例中的“条目”可以为各种不同形式的条目,例如,所述条目为IP地址或URL地址等等。本发明实施例对条目的具体形式不做具体限定。

本发明实施例中,条目可以为服务端中的条目。对条目的访问一般是指客户端对服务端条目的访问。

12、根据所述当前采样周期内对各个条目的访问次数,确定所述当前采样周期内条目访问的平均值。

13、移除所述当前采样周期内访问次数小于所述平均值的条目,并将访问次数不小于所述平均值的条目作为下一采样周期内的条目。

14、确定下一采样周期是否为最后一个采样周期。

若下一采样周期不为最后一个采样周期,重复步骤a~d,直到下一采样周期为最后一个采样周期。

在下一采样周期为最后一个采样周期时,执行步骤15。

15、按照访问次数从高到低的顺序提取最后一个采样周期中的指定个条目。

在本发明实施例中,以三个采样周期t1-t3为例,举例而言,条目提取的过程可以为:先获取第一个采样周期t1中各个条目的访问次数,并计算第一采样周期内条目访问的第一平均值v1;然后去除第一采样周期t1中访问次数小于第一平均值v1的条目,将第一采样周期中不小于第一平均值的条目作为第二采样周期t2的输入。由于第二采样周期不是最后一个采样周期,同样地,对于第二采样周期,也是先获取第二个采样周期t2中各个条目的访问次数,并计算第二采样周期内条目访问的第二平均值v2;然后去除第二采样周期t2中访问次数小于第二平均值v2的条目,将第二采样周期中不小于第二平均值的条目作为第三采样周期t3的输入。此时,由于第三采样周期为最后一个采样周期,因而,从作为第三采样周期t3的输入的第二采样周期中不小于第二平均值的条目,和第三采样周期内的条目中,按照访问次数从高到低的顺序提取指定个条目。

在本发明实施例中,待提取到指定数目个条目后,可以以固定大小的存储空间存储提取的所述指定个条目。

本发明实施例提供的条目提取方法,通过对每个采样周期内各个条目的访问次数求平均、去除访问次数在平均值以下的条目,并将当前处理后得到的条目作为下一采样周期的条目,如此循环处理,可以保证最后一个采样周期内得到的条目是访问次数高的条目,且占用的存储空间较小。

本发明实施例提供的条目提取的方法可应用于设定时间的条目提取。例如,提取10分钟内或20分钟内或其他时间段内访问频率高的条目。在此情形下,可将设定的时间段划分为多个采样周期,然后对每个采样周期应用上面所描述的条目提取方法。待提取到指定数目个访问频率高的条目后,可进一步确定提取的所述指定个条目中的各个条目的访问次数是否超过阈值;将提取的所述指定个条目中超过阈值的条目封锁指定时间。

本发明实施例中的“阈值”为可以例如为每秒数据包(Packet Per Second,PPS)的阈值或每秒请求(Request Per Second,RPS)的阈值等等。本发明实施例对阈值的具体形式不做具体限定。

本发明实施例中,对条目的封锁是指,阻止对条目的访问。也就是说,一旦条目被封锁后,任何访问请求都不能继续对条目进行访问。

若对条目的访问超过阈值,则可以判定这种访问可能是异常的攻击。通过对超过阈值的条目进行封锁,可以有效减缓或停止这种异常攻击。

在本发明实施例中,不但可以在最后一个采样周期提取条目的操作完成后,对指定个条目中的至少一个条目进行封锁,还可以在每一采样周期执行条目封锁操作,即,在移除当前采样周期内访问次数小于平均值的条目的同时,对确定访问次数不小于所述平均值的条目中的各个条目的访问次数是否超过阈值,然后将访问次数超过阈值的条目进行封锁。具体地,同样以三个采样周期t1-t3为例,假定需要提取的条目数目为10个,举例而言,若第一个采样周期t1中有一个条目的访问次数超过阈值,则可将这个条目进行封锁;若第二个采样周期t2中有三个条目的访问次数超过阈值,则将这三个条目进行封锁;若第三个采样周期t3中有四个条目的访问次数超过阈值,则将这四个条目进行封锁。

当然,在本发明实施例中,当封锁的条目数目达到指定的条目数目的情况下,对于后续各个采样周期,将后续各个采样周期内需要封锁的条目进行封锁,同时将已封锁的条目中的至少一个条目进行解封锁;其中,所述需要封锁的条目为访问次数超过所述阈值的条目。

具体地,举例而言,若指定提取的条目数目为10个,且前三个采样周期t1-t3分别封锁了1个、3个和4个条目的情况下,只剩下2个封锁名额。若第四个采样周期t4需要封锁的条目数目为4个,此时由于采样周期t4需要封锁的条目数目(即,4个)超出了剩下的封锁名额(即,2个),无法直接将采样周期t4中的这4个需要封锁的条目直接进行封锁,而需要先将之前封锁的8个条目中解封所2个条目(即,释放2个名额),才能完成对采样周期t4需要封锁的条目进行封锁。

一旦封锁的条目数目已有10个,则在后续采样周期中,需要封锁的条目数目等于解封锁的条目数目。具体地,后续在第五个采样周期t5中需要封锁的条目数目为5个,此时由于10个指定的封锁条目数目已占满,需要从这10个封锁条目中解封锁5个条目,才能完成对采样周期t5中需要封锁的5个条目进行封锁。

其中,在封锁和解封锁的过程中,可以按照一定的优先次序来进行。具体地,本发明实施例在进行条目封锁时,可以按照访问次数从高到低的顺序选取条目进行封锁;同时,在进行条目解封锁时,按照访问次数从低到高的顺序或者按照封锁时间从先到后的顺序进行解封锁。即,在指定数目的条目(在示例中为10个)已被封锁的情况下,访问次数少的条目或者封锁时间最早的条目可以优先进行解封锁。其中,封锁的条目数目可等于解封锁的条目数目。

本发明实施例中的“条目”可以为各种不同形式的条目,例如,所述条目为IP地址或URL地址等等。本发明实施例中的“阈值”为可以例如为每秒数据包(Packet Per Second,PPS)的阈值或每秒请求(Request Per Second,RPS)的阈值等等。本发明实施例对条目和阈值的具体形式不做具体限定。

在本发明实施例中,将整个时间域划分为一个个时间段(例如,T1、T2…等)来计算,然后在每个时间段内再划分为一个个的采样周期(t1、t2…等)。在本文描述中n为提取的指定条目数目,可以使用一个大小为n的小数组(例如n=10)和一个n*n的矩阵。在T(例如,T1或T2等)时间段内划分多个采样周期,并对大规模表的访问进行多次采样,将采样所得的针对条目和访问次数的访问量记录到数组中,条目到数组索引的运算由矩阵给出。

当一个采样周期结束后,计算采样的各个条目访问次数的平均值,然后去除该采样周期内访问次数小于平均值的条目。在此基础上再进行继续采样。待T时间段到的时候,已经进行了很多次采样,在最后留在n个数组内超过平均数的条目就是访问最频繁的n个条目。再对这n个条目中访问次数超过阈值的进行访问封锁,后续组的采样将不会记录已经被封锁的条目。封锁的条目可以设定封锁的时间,当封锁时间到的时候,放开已经封锁的条目。

当然,在本发明实施例中,也可以逐次放开已经封锁的条目。逐次放开已经封锁条目的策略是:由于每个采样周期并不能得到n个最高的条目,只是得到一部分,但是考虑经过了若干个采样周期之后得到了n个封锁的条目。但是下一个采样周期来临时又得出了新的封锁条目,此时,就会把之前已经封禁的条目释放封锁(例如,按照访问次数从低到高的顺序释放封锁),释放封锁的条目数目可以等于新添加的封锁条目数目。

本发明实施例中是将时间域用于存储信息,而不是把所有的信息存储在内存空间。然后通过去除旧封锁条目引入新封锁条目的策略,来动态控制的封禁的前n个条目(例如,访问量最高的前n个条目)。如此便实现了对整个时间域内动态的前n个条目的封锁。

在本发明实施例中,前n个条目是基于时间段而动态变化的,因而,对于前n个条目的选取只能是以一个时间段为标杆。本公开中的时间段是坐标轴上顺序移动的大于采样周期的动态间隔,并没有上限。上限取决于前n个条目中超过阈值的条目的规模。如果在一个小时内封禁数目都没有超过n个,则可以认为一个小时内已经封禁的条目还应该继续封禁。

可见,如果条目中只会有个别的条目访问量突然大规模增长,就应该把n设置的尽量小。如果有很多个条目会出现访问量异常,就应该n设置的较大。所以n的选取是取决于系统的访问特性。

本发明实施例提供的条目提取方法,不仅可以节省CPU资源和内存资源,而且通过对条目进行封锁,可以避免条目收到异常攻击。

图2是本发明实施例提供的一种条目提取装置的结构框图。参照图2,本发明实施例提供的条目提取装置200可包括获取模块201和处理模块202。其中:

从第一个采样周期开始直到最后一个采样周期的前一个采样周期,所述获取模块201和所述处理模块202分别执行以下操作:

所述获取模块201,用于获取当前采样周期内对各个条目的访问次数;

所述处理模块202,用于根据所述当前采样周期内对各个条目的访问次数,确定所述当前采样周期内条目访问的平均值;

所述处理模块202,还用于移除所述当前采样周期内访问次数小于所述平均值的条目,并将访问次数不小于所述平均值的条目作为下一采样周期内的条目;

所述处理模块202,还用于当下一采样周期为最后一个采样周期时,按照访问次数从高到低的顺序提取最后一个采样周期中的指定个条目。

本发明实施例提供的条目提取装置,通过对每个采样周期内各个条目的访问次数求平均、去除访问次数在平均值以下的条目,并将当前处理后得到的条目作为下一采样周期的条目,如此循环处理,可以保证最后一个采样周期内得到的条目是访问次数高的条目,且占用的存储空间较小。

可选地,在一个实施例中,所述处理模块202还用于:

确定提取的所述指定个条目中的各个条目的访问次数是否超过阈值;

将提取的所述指定个条目中超过阈值的条目封锁指定时间。

可选地,在另一个实施例中,所述处理模块202还用于:

针对当前采样周期,确定访问次数不小于所述平均值的条目中的各个条目的访问次数是否超过阈值;

将访问次数超过阈值的条目进行封锁。

可选地,在另一个实施例中,所述处理模块202具体用于:

当封锁的条目数目达到指定的条目数目的情况下,对于后续各个采样周期,将后续各个采样周期内需要封锁的条目进行封锁,同时将已封锁的条目中的至少一个条目进行解封锁;

其中,封锁的条目数目等于解封锁的条目数目;

其中,所述需要封锁的条目为访问次数超过所述阈值的条目。

可选地,在另一个实施例中,所述处理模块202具体用于:

在进行条目封锁时,按照访问次数从高到低的顺序选取条目进行封锁;

在进行条目解封锁时,按照访问次数从低到高的顺序或者按照封锁时间从先到后的顺序进行解封锁。

在本发明实施例中,所述条目可以为IP地址或URL地址,所述阈值为PPS的阈值或RPS的阈值。

可选地,在另一个实施例中,所述装置200还包括:存储模块203,用于以固定大小的存储空间存储提取的所述指定个条目。

需要指出的是,在相关技术中,耗费的CPU资源和内存资源是随着集合中条目的数目线性增长的,而且在条目巨大的时候耗费是惊人的。本发明实施例提供的条目提取的方法和装置,对CPU和内存的需要限制在一定的规模,不随着条目数目的增长而变化。并且,所需的内存和CPU资源都是非常小的。具体地,假设有300万个条目,不采用本装置需要的内存是300w*8字节,本装置固定的使用n*24字节的内存(上文中以n为10为例进行了说明)。不采用本公开时要遍历计算300w次,采用了本公开后只需遍历n*2次,外加额外的n*n的矩阵运算(以n为10为例)。可以看到无论内存资源还是CPU资源都是上百万数量级的提升。

需要说明的是:上述实施例提供的条目提取装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将条目提取装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的条目提取装置和条目提取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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