信息处理方法、装置和计算机设备与流程

文档序号:11690961阅读:158来源:国知局
信息处理方法、装置和计算机设备与流程

本发明涉及计算机技术领域,特别是涉及一种信息处理方法、装置和计算机设备。



背景技术:

热点事件,是指在一段时间内发生频率非常高的事件。热点事件的发生一般都会引起广泛关注和强烈反响,当热点事件发生时,如果能够尽早得知该热点事件的信息,能够对处理某些重大突发事件、做好舆情监控等有很好的促进作用。

由于单位时间内发生的事件数量是海量的,其中大部分事件的发生次数都很少,只有一小部分事件的发生频率会比较高,如果要将单位时间内发生的所有事件都记录统计起来,再对所有事件的发生次数进行排序,统计其中的热点事件,会对内存容量和处理器的处理速度要求很高。



技术实现要素:

本发明实施例提供一种信息处理方法、装置和计算机设备。

一种信息处理方法,包括:

获取预设时间段内发生的事件以及所述事件发生的时间;

检测第一缓存中被占据的空间大小是否达到预设空间阈值;

若是,则将所述第一缓存中最早加入的事件移出所述第一缓存;

按照所述事件发生的时间顺序将所述事件加入所述第一缓存中,更新加入所述第一缓存的事件对应的发生次数;

根据所述第一缓存中保存的事件对应的发生次数计算所述事件的发生频率;

将发生频率大于预设阈值的事件确定为热点事件。

一种热点事件检测装置,包括:

事件获取模块,用于获取预设时间段内发生的事件以及所述事件发生的时间;

存储空间检测模块,用于检测第一缓存中被占据的空间大小是否达到预设空间阈值;

事件移出模块,用于若所述第一缓存中被占据的空间大小达到预设空间阈值,则将所述第一缓存中最早加入的事件移出所述第一缓存;

事件存储模块,用于按照所述事件发生的时间顺序将所述事件加入第一缓存中,更新加入所述第一缓存的事件对应的发生次数;

发生频率计算模块,用于根据所述第一缓存中保存的事件对应的发生次数计算所述事件的发生频率;

热点事件确定模块,用于发生频率大于预设阈值的事件确定为热点事件。

一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

获取预设时间段内发生的事件以及所述事件发生的时间;

检测第一缓存中被占据的空间大小是否达到预设空间阈值;

若是,则将所述第一缓存中最早加入的事件移出所述第一缓存;

按照所述事件发生的时间顺序将所述事件加入所述第一缓存中,更新加入所述第一缓存的事件对应的发生次数;

根据所述第一缓存中保存的事件对应的发生次数计算所述事件的发生频率;

将发生频率大于预设阈值的事件确定为热点事件。

附图说明

图1为一个实施例中信息处理方法的流程图;

图2为一个实施例中concurrentlinkedhashmap的结构示意图;

图3为一个实施例中根据第一缓存中保存的事件对应的发生你次数计算事件的发生频率的流程图;

图4为一个实施例中计算采样窗口内事件的平均发生次数的流程图

图5为一个实施例中滑动窗口设置的结构示意图;

图6为一个实施例中信息处理装置的模块图;

图7为一个实施例中频率计算模块的结构框图;

图8为一个实施例中平均发生次数计算模块的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不收这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一客户端成为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。

图1为一个实施例中信息处理方法的流程图。如图1所示,该方法具体包括如下步骤:

步骤102,获取预设时间段内发生的事件以及所述事件发生的时间。

在一个实施例中,预设时间段的长度是可以人为设置的,使得预设时间段内发生的事件数量不至于太多或太少。预设时间段内发生的事件可以是服务端的请求事件,比如某个下载接口接收到服务端的下载请求;也可以是异常日志中记录的系统抛出的异常事件。不同的场景下,检测的数据是不同的,但只要能将该场景下的数据抽象为事件,即可发现该场景下发生的热点事件。预设时间段内可能存在多个时间点,相同事件可能在同一个时间点发生多次,同一个时间点也可能同时发生多个事件,为了方便对事件进行保存,还需要获取事件发生的时间,根据时间顺序来对事件进行保存。

步骤104,检测第一缓存中被占据的空间大小是否达到预设空间阈值;

步骤106,若所述第一缓存中被占据的空间大小达到预设空间阈值,则将所述第一缓存中最早加入的事件移出所述第一缓存。

在一个实施例中,第一缓存存在预设的空间阈值,当第一缓存中被占据的空间大小达到预设空间阈值时,则表明第一缓存被占满,如果不将其中保存的部分事件清除,则无法继续将事件加入第一缓存中。因此,当第一缓存被占满后,每次将事件加入第一缓存中之前,都需要将其中的一个事件移出第一缓存。具体的,可以使用基于lru算法的缓存来保存事件,lru算法利用到了局部性原理,最早加入第一缓存的事件再次发生的可能性最低,而最近加入的事件再次发生的可能性会更高,这里最早加入的事件并不是发生时间最早,最先加入第一缓存的事件,而是第一缓存中最久未更新或最久未操作过的事件,因此当第一缓存被占满后,可以将最早加入的事件移出第一缓存。

在一个实施例中,为了方便对第一缓存中保存的事件进行访问和修改,采用concurrentlinkedhashmap来实现基于lru策略的缓存。concurrentlinkedhashmap的整体框架如图2所示,它的本质是将普通concurrenthashmap的segments用一个额外的双向链表维护起来,每次读和写都要改变相应节点的位置,当一个节点被访问,则将其移至队列头。每个元素都有一个weight,每次增加一个元素,weight累计。当累计的weight达到该双向链表的预设容量时,移除最少操作的元素,即处于队列尾的元素。这样就可以保证表头是最新被使用的节点,表尾是最近最少使用的节点。

步骤108,根据所述事件发生的时间顺序将所述事件加入所述第一缓存中,更新加入所述第一缓存的事件对应的发生次数。

在一个实施例中,将事件加入第一缓存时,先检测第一缓存中是否存在该事件,若存在,则访问该事件所在位置并更新事件的发生次数。若不存在,则需要检测第一缓存中被占据的空间是否达到预设的空间阈值,若未达到预设的空间阈值,则可以直接向第一缓存中存入该事件,更新该事件的发生次数,若该缓存空间被占满,则需要等待将第一缓存中最早加入的事件移出后再将该事件存入第一缓存中,并更新该事件的发生次数。

步骤110,根据所述第一缓存中保存的事件对应的发生次数计算所述事件的发生频率。

在一个实施例中,在将事件加入第一缓存中时,会检测第一缓存中是否已经存有该事件,若该事件已经在第一缓存中存在,则更新第一缓存中该事件对应的发生次数,若该事件在第一缓存中不存在,则将该事件的发生次数初始化。在所有事件都加入过第一缓存中后,根据第一缓存中保存的事件的发生次数,以及预设时间段的长度,即可获取保存的事件的发生频率。事件的发生频率为单位时间内事件的发生次数,单位时间的长度需要人为调整,如果设置的单位时间的长度过小,必然会使统计得到的事件发生频率普遍偏高,增大不同事件发生频率之间的差异,对系统性能要求较大;如果设置的单位时间的长度过大,又会使事件发生频率偏低,使不同事件的发生频率接近,带来毛刺,降低统计的准确度。

步骤112,将发生频率大于预设阈值的事件确定为热点事件。

在一个实施例中,第一缓存中保存的事件是发生次数最多的事件,发生次数较少的事件并未保存在第一缓存中。如果第一缓存中保存的事件中只有部分事件的发生频率大于预设阈值,则表明未保存到第一缓存中的事件的发生频率均不大于预设阈值。故预设时间段内发生的第一事件可以认为都保存在第一缓存中。但如果统计发现第一缓存中保存的事件的发生频率均大于预设阈值,则可能是设置的单位时间长度太小,此时需要根据单位时间长度来调整预设阈值,如果设置的单位时间长度合适,则会导致部分发生频率大于预设阈值的事件未保存到第一缓存中。因此可以设置一个第二缓存,用于保存未加入到第一缓存中的事件中发生次数最多的事件。如果统计发现第一缓存中保存的事件的发生频率均大于预设阈值,则从查找第二缓存中是否存在发生频率大于预设阈值的事件,第二缓存中发生频率大于预设阈值的事件也可以确定为第一事件。向第二缓存中加入事件的方法与向第一缓存中加入事件的方法可以是相同的。

上述信息处理方法,通过在第一缓存中仅保存发生次数最多的预设数量的事件,能够将预设时间段内发生频率较低的事件清除,使得数据量保持在可承受的范围内,极大的减小了对处理器的压力,使检测第一事件的速度得到极大的提高,从而能够实现快速的从预设时间段内的海量事件中检测出其中的第一事件。

如图3所示,在一个实施例中,根据第一缓存中保存的事件对应的发生次数计算事件的发生频率,具体包括以下步骤:

步骤302,获取一个包括第一预设数量个连续时间段的采样窗口,该采样窗口内每个时间段的时间结束点与下一时间段的时间开始点重合,获取每个时间段内第一缓存保存的事件的发生次数。

在一个实施例中,仅根据单独的某一个时间段内事件的发生频率来判断该事件是否为热点事件可能存在较大的误差,因此在本实施例中,设置了一个采样窗口,该采样窗口包括若干个连续时间段,每个时间段的结束点与下一时间段的开始点重合,即获取一个由多个连续时间段组成的大的时间段。每个时间段的长度均相同。该采样窗口中每个不同时间段内第一缓存中保存的事件及事件的发生次数均可能存在差异,故还需要获取采样窗口中每个时间段内第一缓存中保存的事件的发生次数。

步骤304,计算采样窗口内事件的平均发生次数。

在一个实施例中,由于预先获取到了采样窗口中每个时间段的第一缓存中保存的事件的发生次数,因此可以直接根据每个时间段内第一缓存中保存的事件的发生次数计算采样窗口中平均一个时间段内事件的发生次数。

在另一个实施例中,对于非平稳的数据,在适当小的区间上可视为接近平稳的,而且该区间内越接近两端的数据对平滑的作用可能要小于接近中间的数据,因此,还可以通过局部加权平均来减少误差。对获取到的采样窗口内所有时间段中事件的发生次数进行加权平均,位于采样窗口两端的时间段,其第一缓存中保存的事件发生次数的权值较小,而位于采样窗口中间的时间段,其第一缓存中保存的事件发生次数的权值较大,从而得到采样窗口内事件的平均发生次数。

步骤306,根据事件的平均发生次数计算该事件的发生频率。

在一个实施例中,某事件在一个时间段内发生的次数除以该时间段的长度即可得到该事件的发生频率,由于使用的是事件在多个连续时间段内的平均发生次数,故能够在一定程度上减小误差。

如图4所示,在一个实施例中,计算采样窗口内事件的平均发生次数,具体包括以下步骤:

步骤402,从采样窗口中逐个滑取包括第二预设数量个连续时间段的滑动窗口,获取该滑动窗口中每个时间段内第一缓存中保存的事件的发生次数。

在一个实施例中,对于非平稳的数据,在适当的小区间上视为接近平稳的,因此可以通过做某种局部平均,来减少误差或噪声造成的数据不平稳。对于包括n个连续时间段的采样窗口,每个时间段长度相等,每个时间段内的第一缓存中保存有在该时间段内发生的事件及其发生次数,可以设置一个包括k(k<n)个连续时间段的滑动窗口来做局部平均,从采样窗口的起始时间段开始,将滑动窗口逐个向后移动,可得到n-k+1个滑动窗口序列。

步骤404,计算滑动窗口内事件的平均发生次数,根据滑动窗口内事件的平均发生次数计算采样窗口内事件的平均发生次数。

在一个实施例中,假设某事件在采样窗口中的发生次数序列为x,在第n个时间段内的发生次数为xn,计算滑动窗口内时间的平均发生次数,即滑动平均序列可表示为:

n-k+1为该滑动平均序列的长度。由于需要得到的是一个时间段内事件的平均发生次数,因此还需要根据得到的滑动平均序列,再对该序列作算术平均,即可得到采样窗口内事件的平均发生次数

例如,可以假设采样窗口包括5个长度为1秒的连续时间段,某事件在这5个时间段内的发生次数分别为a、b、c、d、e。滑动窗口的长度为3个连续时间段,那么通过逐个滑取可得到3个滑动窗口序列:(a,b,c)、(b,c,d)、(c,d,e)。根据上述公式,求得事件发生次数的滑动平均值,即可得到减小误差后的事件的平均发生次数。

滑动窗口的设置具体如图5所示,采样窗口包括多个连续的时间段,各个时间段首尾相连形成一个圆形,采样窗口朝着一个方向转动,实时地向时间段的第一缓存中加入发生的事件,当转动到下一时间段时,先清除该时间段的第一缓存中保存的数据,再向其中加入事件。滑动窗口嵌设在采样窗口上,随着采样窗口的转动,不断更新滑动窗口序列。根据滑动窗口序列即可计算事件发生次数的滑动平均值。

如图6所示,在一个实施例中,提供了一种信息处理装置,该装置包括:

事件获取模块602,用于获取预设时间段内发生内的事件以及事件发生的时间。

存储空间检测模块604,用于检测第一缓存中被占据的空间大小是否达到预设空间阈值。

事件移出模块606,用于若第一缓存中被占据的空间大小达到预设空间阈值,则将第一缓存中最早加入的事件移出第一缓存。

事件存储模块608,用于按照事件发生的时间顺序将事件加入第一缓存中,更新加入第一缓存的事件对应的发生次数。

发生频率计算模块610,用于根据第一缓存中保存的事件对应的发生次数计算事件的发生频率。

热点事件确定模块612,用于将发生频率大于预设阈值的事件确定为热点事件。

如图7所示,在一个实施例中,发生频率计算模块610包括:

采样窗口获取模块702,用于获取一个包括第一预设数量个连续时间段的采样窗口。

平均发生次数计算模块704,用于根据事件的平均发生次数计算事件的发生频率。

频率计算模块706,用于根据事件的平均发生次数计算事件的发生频率。

如图8所示,在一个实施例中,平均发生次数计算模块704包括:

滑动窗口获取模块802,用于从采样窗口中逐个滑取包括第二预设数量个连续时间段的滑动窗口,获取滑动窗口中每个时间段内第一缓存中保存的事件的发生次数。

滑动平均值计算模块804,用于计算滑动窗口内事件的平均发生次数,根据滑动窗口内时间的平均发生次数计算采样窗口内时间的平均发生次数。

在一个实施例中,事件存储模块608还用于将移出第一缓存的事件中发生次数最多的预设数量的事件加入第二缓存中。

发生频率计算模块610还用于根据第二缓存中保存的事件的发生次数计算第二缓存中保存的事件的发生频率。

热点事件确定模块612还用于将第二缓存中保存的发生频率大于预设阈值的事件确定为热点事件。

本发明实施例还提供了一种计算机设备。一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现以下步骤:

获取预设时间段内发生的事件以及事件发生的时间;

检测第一缓存中被占据的空间大小是否达到预设空间阈值;

若是,则将第一缓存中最早加入的事件移出第一缓存;

按照事件发生的时间顺序将事件加入第一缓存中,更新加入第一缓存的事件对应的发生次数;

根据第一缓存中保存的事件对应的发生次数计算事件的发生频率;

将发生频率大于预设阈值的事件确定为热点事件。

上述计算机设备,通过将最久未发生过的事件移出缓存,只保存最近发生过的事件,能够排除占据获取到的事件中大部分的发生频率较低的事件对检测热点事件的影响,能够降低事件数量对计算机设备性能的要求,加快对热点事件的检测速度。

在一个实施例中,上述计算机设备中处理器执行程序时实现的步骤:根据第一缓存中保存的事件对应的发生次数计算事件的发生频率,包括:

获取一个包括第一预设数量个连续时间段的采样窗口,该采样窗口内每个时间段的时间结束点与下一时间段的时间开始点重合,获取每个时间段内第一缓存保存的事件的发生次数;

计算采样窗口内事件的平均发生次数;

根据事件的平均发生次数计算事件的发生频率。

在一个实施例中,上述计算机设备中处理器执行程序时实现的步骤:计算采样窗口内事件的平均发生次数,包括:

从采样窗口中逐个滑取包括第二预设数量个连续时间段的滑动窗口,获取滑动窗口中每个时间段内第一缓存中保存的事件的发生次数;

计算滑动窗口内事件的平均发生次数,根据滑动窗口内事件的平均发生次数计算采样窗口内事件的平均发生次数。

在一个实施例中,上述计算机设备中处理器执行程序时还实现以下步骤:

将移出第一缓存的事件中发生次数最多的预设数量的事件加入第二缓存中;

根据第二缓存中保存的事件的发生次数,计算第二缓存中保存的事件的发生频率;

将第二缓存中保存的发生频率大于预设阈值的事件确定为第一事件。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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