掌桥专利:专业的专利平台
掌桥专利
首页

热点数据检测方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:05:16


热点数据检测方法、装置、电子设备及存储介质

技术领域

本发明涉及计算机技术领域,尤其是涉及一种热点数据检测方法、装置、电子设备及存储介质。

背景技术

REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value(key-value,根据关键字取值)存储系统。在互联网产品中,为了应对日益增长的用户量以及业务高峰期剧增的访问量,大都采用了Redis等缓存中间件来存储一些热点数据,用来降低数据库压力,提升系统整体性能。但是在一些秒杀或大促的业务场景或社会热点事件发生的场景,就会出现突然有几十万甚至更高的请求去访问Redis上的某个特定key(关键字),造成流量过于集中,达到物理网卡上限或达到服务器处理能力上限,从而导致Redis服务不可用。

目前,通常采用凭借业务经验对热点key进行预估,或者通过Redis自带的Monitor命令实时抓取分析出热点key,或是通过TCP抓包工具抓取出Redis服务器接收到的所有流量,然后分析得到热点key,但这些方法开发成本高,实用性不强,且会降低Redis整体性能。

发明内容

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明实施例提出一种热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

本发明还提出一种热点数据检测装置。

本发明还提出一种电子设备。

本发明还提出一种计算机可读存储介质。

根据本发明的第一方面实施例的热点数据检测方法,包括:

获取被访问热点的访问记录数据;

根据所述访问记录数据计算出每一所述被访问热点对应的访问热度值;

根据所述访问热度值从多个所述被访问热点中选取出目标热点数据。

根据本发明第一方面实施例的热点数据检测方法,至少具有如下有益效果:通过获取被访问热点的访问记录数据,然后根据访问记录数据计算出每一被访问热点对应的访问热度值,最后根据访问热度值从多个被访问热点中选取出目标热点数据,能够实时、准确、稳定的发现热点数据,适用性强。

根据本发明的一些实施例,所述根据所述访问热度值从多个所述被访问热点中选取出目标热点数据,包括:根据所述访问热度值对所述多个被访问热点进行排序,得到排序结果;根据所述排序结果从所述多个被访问热点中选取出目标热点数据。

根据本发明的一些实施例,所述预设协议包括:业务应用名称、被访问热点和访问时间;所述获取被访问热点的访问记录数据,包括:根据所述业务应用名称、所述被访问热点和所述访问时间获取所述被访问热点的操作记录;对所述操作记录进行解析,得到所述访问记录数据。

根据本发明的一些实施例,所述根据所述业务应用名称、所述被访问热点和所述访问时间获取所述被访问热点的操作记录,包括:将所述操作记录按照所述业务应用名称、所述被访问热点和所述访问时间进行异步上传,得到所述操作记录。

根据本发明的一些实施例,所述根据所述访问记录数据计算出每一所述被访问热点对应的访问热度值,包括:获取所述被访问热点对应的预设时间窗口;提取出所述被访问热点在所述预设时间窗口中的访问次数;根据所述访问次数计算出所述被访问热点对应的访问热度值。

根据本发明的一些实施例,所述提取出所述被访问热点在所述预设时间窗口中的访问次数,包括:获取所述预设时间窗口对应的多个子时间片;获取所述被访问热点在每一所述子时间片中的子访问次数;根据多个所述子访问次数计算得到所述访问次数。

根据本发明的一些实施例,所述获取所述预设时间窗口对应的多个子时间片,包括:将所述预设时间窗口按照预设时间间隔进行划分,得到多个所述子时间片。

根据本发明的第二方面实施例的热点数据检测装置,包括:

获取模块,用于获取被访问热点的访问记录数据;

计算模块,用于根据所述访问记录数据计算出的每一所述被访问热点对应的访问热度值;

检测模块,用于根据所述访问热度值从多个所述被访问热点中选取出目标热点数据。

根据本发明第二方面实施例的热点数据检测装置,至少具有如下有益效果:通过执行本发明第一方面实施例的热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

根据本发明第三方面实施例的电子设备,包括:至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行所述指令时实现第一方面所述的热点数据检测方法。

根据本发明第三方面实施例的电子设备,至少具有如下有益效果:通过执行本发明第一方面实施例的热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

根据本发明第四方面实施例的计算机可读存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面所述的热点数据检测方法。

根据本发明第四方面实施例的计算机可读存储介质,至少具有如下有益效果:通过执行本发明第一方面实施例的热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例的热点数据检测方法的流程示意图;

图2为本发明实施例的选取出目标热点数据的流程示意图;

图3为本发明实施例的热点数据检测装置的结构示意图;

图4为本发明实施例的电子设备的功能模块图。

附图标记:

获取模块300、计算模块310、检测模块320、处理器400、存储器410、数据传输模块420、摄像头430、显示屏440。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

首先,对本申请中涉及的若干名词进行解析:

1、Redis(REmote DIctionary Server,远程字典服务器):是一个key-value(key-value,根据关键字取值)存储系统,即缓存中间件。

2、key:关键字。

3、Map结构:Map是一种字典数据结构。字典结构是用来存储不重复key的hash结构,字典使用的是键值对的形式来存储数据。

4、Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

5、SDK:Software Development Kit,即“软件开发工具包”。

6、预设协议的格式如下:appName(业务应用名称),opKey(访问的key,即被访问热点),opTime(访问时间)。

目前,通常采用凭借业务经验对热点key进行预估,或者通过Redis自带的Monitor命令实时抓取分析出热点key,或是通过TCP抓包工具抓取出Redis服务器接收到的所有流量,然后分析得到热点key,但这些方法开发成本高,实用性不强,且会降低Redis整体性能。

基于此,本发明实施例提出一种热点数据检测方法、装置、电子设备及存储介质,能够实时、准确、稳定的发现热点数据,适用性强。

参照图1,根据本发明第一方面实施例的热点数据检测方法,包括:

步骤S100,获取被访问热点的访问记录数据。

其中,被访问热点可以是Redis等缓存中间件来存储的一些秒杀或大促的业务场景或社会热点事件中的关键字,即key;访问记录数据可以是被访问热点的历史访问记录。可选的,一个业务应用名称可以对应多个不同的被访问热点,不同的被访问热点对应不同的访问记录数据,因此可以将被访问热点及其对应的访问记录数据实时存入内存的Map结构(Map>)中,然后可以从Map结构中实时提取出预先存储好的被访问热点的访问记录数据。

步骤S110,根据访问记录数据计算出每一被访问热点对应的访问热度值。

其中,访问热度值可以是被访问热点对应的访问频率。可选的,可以通过实时获取的访问记录数据,统计出每一个被访问热点中的文章、视频、检索关键字等信息的访问频率,从而得到该被访问热点的访问热度值。具体的,可以每间隔一个单位时间,就取出Map中的数据进行遍历,计算出每一个key对应的访问热度值,并将每一个key对应的访问热度值保存到Redis有序集合中。

步骤S120,根据访问热度值从多个被访问热点中选取出目标热点数据。

其中,目标热点数据可以是实时检测得到的热点key,目标热点数据可以是多个。可选的,可以根据每个被访问热点对应的访问热度值,将被访问热点进行排序,例如,可以按照访问热度值的大小顺序,将被访问热点进行排序,得到排序结果,再从排序结果中根据需求提取出TopN的key,例如可以选取出排序结果中Top1的被访问热点,即将排名为Top1的key作为热点key,由此得到目标热点数据。在一些具体的实施例中,还可以按照访问热度值的时间顺序等顺序,将被访问热点进行排序,然后选取出得到目标热点数据;或是同时根据被访问热点的优先级和访问热度值进行排序;还可以根据其他方法进行排序。

上述热点数据检测方法,通过获取被访问热点的访问记录数据,然后根据访问记录数据计算出每一被访问热点对应的访问热度值,最后根据访问热度值从多个被访问热点中选取出目标热点数据,能够实时、准确、稳定的发现热点数据,适用性强。

参照图2,在本发明的一些实施例中,根据访问热度值从多个被访问热点中选取出目标热点数据,包括:

步骤S200,根据访问热度值对多个被访问热点进行排序,得到排序结果。

可选的,可以将多个被访问热点根据其对应的访问热度值进行排序,例如,可以将多个被访问热点根据其对应的访问热度值的大小顺序进行排序,得到多个key(被访问热点)的排序结果。

步骤S210,根据排序结果从多个被访问热点中选取出目标热点数据。

可选的,可以根据需求从排序结果中选取出所需的目标热点数据,例如,假设排序结果为根据访问热度值的大小排名的结果,则可以从排序结果中选取出排名前三的被访问热点,例如得到Top1、Top2和Top3的被访问热点,即可将排名为Top1、Top2和Top3的key作为热点key,即得到多个目标热点数据。根据访问热度值对多个被访问热点进行排序,得到排序结果,然后根据排序结果冲多个被访问热点中选取出目标热点数据,能够准确、实时地发现Redis缓存系统中的目标热点数据。

在本发明的一些实施例中,获取被访问热点的访问记录数据,包括:

根据预设协议获取被访问热点的操作记录。其中,预设协议可以是预先设置的客户端上传信息的契约;操作记录可以是客户端采集得到的对Redis进行读写操作的记录。可选的,可以通过客户端调用SDK方法对Redis进行读写操作,即得到被访问热点的操作记录;预设协议可以根据需求设置,例如,假设预设协议的格式如下:appName(业务应用名称),opKey(访问的key,即被访问热点),opTime(访问时间),即可得到定义好的预设协议。可以通过SDK采用独立线程池,并根据预设协议上传从客户端上传Redis操作记录,即根据预设协议获取被访问热点的操作记录。

对操作记录进行解析,得到访问记录数据。可选的,可以将根据预设协议虎丘的被访问热点(即key)的操作记录存储于kafka集群中,进而可以订阅kafka,并对kafka集群中的操作记录进行解析,可以将解析后的数据存储与Map结构中,最后从Map结构中存储的解析后的数据中提取出key访问记录数据,即得到访问记录数据。根据预设协议获取被访问热点的操作记录,然后对操作记录进行解析,得到访问记录数据,只需集成SDK对Redis进行正常操作即可,同时支持多个业务系统,可以实现稳定获取访问记录数据,

在本发明的一些实施例中,预设协议包括:业务应用名称、被访问热点和访问时间。其中,预设协议的协议格式如下:业务应用名称(即appName),被访问热点,即访问的key(opKey),访问时间(opTime)。

根据预设协议获取被访问热点的操作记录,包括:

将操作记录按照业务应用名称、被访问热点和访问时间进行异步上传,得到操作记录。可选的,客户端可以通过SDK采用独立线程池,并按预设协议的appName、opKey和opTime异步上传被访问热点的操作记录,使得数据异步上报,不会堵塞业务,保证数据上传的稳定性。

在本发明的一些实施例中,根据访问记录数据计算出每一被访问热点对应的访问热度值,包括:

获取被访问热点对应的预设时间窗口。其中,预设时间窗口也可以成为预设时间之窗,用于实现Redis访问频率的控制,起到限流作用。可选的,预设时间窗口可以根据需求设置,假设每个appName对应一个定时任务,每个appName中的每个key对应一个时间窗口,则可以获取每一被访问热点对应的预设时间窗口。

提取出被访问热点在预设时间窗口中的访问次数。其中,访问次数可以是被访问热点在预设时间窗口内的被访问的总次数。可选的,将每个key在其对应的预设时间窗口的访问次数进行汇总,得到当前时刻key在预设时间窗口内的总访问次数,即得到被访问热点在预设时间窗口中的访问次数。

根据访问次数计算出被访问热点对应的访问热度值。可选的,可以基于被访问热点的访问次数,统计出被访问热点对应的热度,即得到被访问热点的访问热度值。在一些具体的实施例中,可以将被访问热点对应的访问热度值保存到Redis有序集合中()。通过获取被访问热点在预设时间窗口内的访问次数,然后根据访问次数计算出被访问热点对应的访问热度值,可以分析得到按预设时间窗口所得的key的访问热度,开发成本低,避免丢包。

在本发明的一些实施例中,提取出被访问热点在预设时间窗口中的访问次数,包括:

获取预设时间窗口对应的多个子时间片。其中,子时间片可以是将预设时间窗口进行划分得到的多个单位时间片。可选的,子时间片可以根据需求划分,例如,可以将预设时间窗口均等划分为M个子时间片,得到M个子时间片。

获取被访问热点在每一子时间片中的子访问次数。其中,子访问次数可以是被访问热点在一个子时间片内的访问次数。可选的,每个子时间片可以单独记录当前key对应的访问次数,假设共M个子时间片,则可以分别获取M个子时间片内key对应的子访问次数。

根据多个子访问次数计算得到访问次数。可选的,可以统计多个子时间片内分别对应的被访问热点的子访问次数,由此得到被访问热点在预设时间窗口内的总访问次数,例如,假设key在第一个子时间片内M

在本发明的一些实施例中,获取预设时间窗口对应的多个子时间片,包括:

将预设时间窗口按照预设时间间隔进行划分,得到多个子时间片。其中,预设时间间隔可以是预先设置的每个子时间片对应的单位时间。可选的,假设共M个子时间片,对于每个appName对应一个定时任务,定时任务可以每间隔N秒取出Map结构中的数据进行遍历,即可以将预设时间间隔设为N秒,即,在预设时间窗口内,每隔N秒划分得到一个子时间片,共得到M个子时间片,则每个子时间片对应的单位时间为N秒。继而可以将key在M个子时间片中的子访问次数进行汇总,得到当前时刻key在N*M秒内的访问次数,即得到被访问热点在预设时间窗口内的访问次数,可以将该访问次数保存到Redis有序集合中。

下面以一个具体的实施例详细描述本发明实施例的热点数据检测方法的过程。需要理解的是,下面描述仅是示例性说明,而不是对本发明的具体限制。

热点数据检测方法,执行以下步骤:

第一步,通过客户端集成SDK对Redis进行读写操作,读写Redis中的key操作记录。然后按特定协议格式,通过SDK采用独立线程池异步上传key操作记录,协议格式如下:appName(业务应用名称),opKey(访问的key),opTime(访问时间)。可以将key操作记录上报至kafka集群(即消息中间件),

第二步,订阅kafka集群并解析kafka集群存储的key的操作记录,得到key的访问记录数据,可以将解析得到的访问记录数据保存在内存的Map结构中(Map>)。

第三步,每间隔N秒取出Map结构中的数据进行遍历,计算每个key的访问次数(即访问热度),并存储到内存中的时间窗口中(每个key对应一个时间窗口,分为M个时间片,每个时间片记录当前key对应N秒时间周期的总访问次数)。

第四步,将每个key的时间窗口的访问热度进行汇总,得到当前时刻key在N*M秒内的总访问热度,将该汇总结果保存到Redis有序集合中

第五步,对总访问热度进行排序,从Redis中取出TopN的热点key,即得到检测的热点key。

上述热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

参照图3,根据本发明第二方面实施例的热点数据检测装置,包括:

获取模块300,用于获取被访问热点的访问记录数据;

计算模块310,用于根据访问记录数据计算出的每一被访问热点对应的访问热度值;

检测模块320,用于根据访问热度值从多个被访问热点中选取出目标热点数据。

上述热点数据检测装置,通过执行本发明第一方面实施例的热点数据检测方法,能够实时、准确、稳定的发现热点数据,适用性强。

参照图4,本发明第三方面实施例还提供了一种电子设备的功能模块图,包括:至少一个处理器400,以及与至少一个处理器400通信连接的存储器410;还可以包括数据传输模块420、摄像头430、显示屏440。

其中,处理器400通过调用存储器410中存储的计算机程序,用于执行第一方面实施例中的热点数据检测方法。

存储器作为一种非暂态存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序,如本发明第一方面实施例中的热点数据检测方法。处理器通过运行存储在存储器中的非暂态软件程序以及指令,从而实现上述第一方面实施例中的热点数据检测方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储执行上述第一方面实施例中的热点数据检测方法。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实现上述第一方面实施例中的热点数据检测方法所需的非暂态软件程序以及指令存储在存储器中,当被一个或者多个处理器执行时,执行上述第一方面实施例中的热点数据检测方法。

本发明第四方面实施例还提供了计算机可读存储介质,存储有计算机可执行指令,该计算机可执行指令用于:执行第一方面实施例中的热点数据检测方法。

在一些实施例中,该存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个控制处理器执行,例如,被第三方面实施例的电子设备中的一个处理器执行,可使得上述一个或多个处理器执行上述第一方面实施例中的热点数据检测方法。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

相关技术
  • 热点数据检测方法、装置、电子设备及存储介质
  • 钓鱼热点检测方法、装置、电子设备及存储介质
技术分类

06120112793091