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

日志的缓存方法、装置以及计算机设备

文献发布时间:2023-06-19 09:54:18


日志的缓存方法、装置以及计算机设备

技术领域

本发明涉及数据处理领域,特别涉及一种日志的缓存方法、装置以及计算机设备。

背景技术

目前,很多公司的风控系统,日志采用批量实时提交的方式存储到数据库,当系统并发高时产生大量日志,会占用大量数据库连接,数据库响应变慢,接口响应随之变慢,降低系统性能。目前,针对大量日志的处理方法仅仅是增加服务器的处理性能,但是仍未能很好的解决系统性能降低的问题,当产生大量日志时,进行日志记录会产生堵塞,从而使系统性能降低。因此亟需一种日志的缓存方法。

发明内容

本发明的主要目的为提供一种日志的缓存方法、装置以及计算机设备,旨在解决当产生大量日志时,进行日志记录会产生堵塞的问题。

本发明提供了一种日志的缓存方法,包括:

检测实时日志的数量是否达到了预设数量;

若达到了预设数量,则检测各所述实时日志的类别;

根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签;

将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志;其中,所述目标日志携带有所述实时日志对应的所述TOKEN标签;

根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中。

进一步地,所述检测各所述实时日志的类别的步骤,包括:

将所述实时日志输入至预设的向量机中,得到对应固定维度的实时日志向量X=(x

根据公式

根据所述匹配度得到各所述实时日志的类别。

进一步地,所述将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志的步骤,包括:

获取接收了所述实时日志后的各消息队列的长度,并根据各消息队列的长度建立长度集合;

根据公式Δd

判断所述最大长度差是否超过了长度预设值;

若超过了长度预设值,则将处理所述长度集合中长度最小的消息队列的第一日志处理模型,在处理完毕长度最小的消息队列后,获取处理所述长度集合中长度最大的消息队列对应的第二日志处理模型中的参数数据;

将所述第二日志处理模型中的参数数据迁移至所述第一日志模型中,并接收长度最大的消息队列中未处理的实时日志进行处理。

进一步地,所述将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志的步骤之前,包括:

获取训练数据,并将所述训练数据中的各个样本数据进行分类处理;

将各类别的所述样本数据输入至对应的日志处理初始模型中进行训练,训练完毕后得到各类别对应的所述日志处理模型。

进一步地,所述获取训练数据,并将所述训练数据中的各个样本数据进行分类处理的步骤,包括:

从训练数据库中获取所述训练数据;

将所述训练数据中的各个样本数据进行向量化处理,得到各样本数据对应的样本向量;

根据公式

根据所述样本数据与各类别对应的类别向量的相似度,将所述样本数据进行分类处理。

进一步地,所述根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中的步骤,包括:

获取所述申请号对应的各所述目标日志的特征值;

将各所述目标日志的特征值与所述缓存数据库中的层级类别进行相似度比较;

根据所述相似度比较的结果将各所述目标日志缓存至各自相似度最高的层级目录下。

进一步地,所述根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签的步骤之后,还包括:

遍历所述消息队列中各实时日志的TOKEN标签,判断所述消息队列中的所述目标日志是否均已上传至所述消息队列中;

若存在有未上传至所述消息队列中的所述实时日志,则根据所述TOKEN标签检测未上传的所述实时日志;

将未上传的所述实时日志重新上传至所述消息队列中。

本发明提供了一种日志的缓存装置,包括:

预设数量检测模块,用于检测实时日志的数量是否达到了预设数量;

类别检测模块,用于若达到了预设数量,则检测各所述实时日志的类别;

实时日志接收模块,用于根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签;

解耦模块,用于将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志;其中,所述目标日志携带有所述实时日志对应的所述TOKEN标签;

保存模块,用于根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中。

本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。

本发明的有益效果:通过监控实时日志的数量,当实时日志的数量达到预设数量时,则通过消息队列将实时日志分类接收,然后再发送至对应的日志处理模型中进行处理,对各个实时日志进行解耦处理,以缩小实时日志文件的大小,得到目标日志,然后根据标签将目标日志保存在对应申请号的缓存数据库中。从而实现对实时日志的分类高效处理,加快了缓存数据库处理单个实时日志的速度,另外,通过对应的日志处理模型进行处理,也能提高处理结果的精确度。

附图说明

图1是本发明一实施例的一种日志的缓存方法的流程示意图;

图2是本发明一实施例的一种日志的缓存方法的结构示意框图;

图3为本申请一实施例的计算机设备的结构示意框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。

另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

参照图1,本发明提出一种日志的缓存方法,包括:

S1:检测实时日志的数量是否达到了预设数量;

S2:若达到了预设数量,则检测各所述实时日志的类别;

S3:根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签;

S4:将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志;其中,所述目标日志携带有所述实时日志对应的所述TOKEN标签。

S5:根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中。

如上述步骤S1所述,当实时日志的数量比较多时,会占用大量的缓存数据库连接,导致接口响应变慢,甚至造成死机等情况,因此,可以检测实时日志的数量是否达到了预设数量,当没有达到时,可以对实时日志进行解耦,然后保存至缓存数据库中正常处理,具体的检测方式是,可以通过监控工具对每个申请号进行监控,监控工具可以是Prometheus,Graphite,InfluxDB等,然后通过计数器对实时日志进行统计,即得到了实时日志的数量。

如上述步骤S2所述,当达到了预设数量时,可以检测各实时日志的类别,由于各申请号对应的用户会使用不同的功能,进行不同的操作,因此可以根据其产生的实时日志中的内容,判断实时日志的类别,其中,类别为事先划分的类别,如访问的网站类别,操作类别等。

如上述步骤S3所述,根据日志的类别,通过对应的消息队列进行接收实时日志,由于每个实时日志是对应申请号产生的,故而可以根据实时日志的申请号设定TOKEN标签,以便于将实时日志处理之后,通过该TOKEN标签将实时日志保存在对应申请号的缓存数据库中。

如上述步骤S4所述,根据消息队列分别发送至对应类别的日志处理模型中进行处理,其中,不同类别的日志处理模型应当由对应类别的样本数据训练而成,以便于提高日志处理模型的精度,解耦的公式可以是

如上述步骤S5所述,由于每个实时日志都通过TOKEN标签进行了标记,故而可以根据TOKEN标签将目标日志保存在对应申请号的缓存数据库中,从而完成对每个申请号实时日志的保存。另外需要说明的是,保存的方式可以是采用批量提交保存的方式,即将一个消息队列中的设定个数的日志批量上传至缓存数据库中,然后由对应的缓存数据库接收并保存设定个数的日志,从而完成对日志的批量保存,加快了日志的上传速度。应当理解的是,批量上传的日志数量不宜过多,否则缓存数据库的处理能力有限,容易造成崩溃。

在一个实施例中,所述检测各所述实时日志的类别的步骤S2,包括:

S201:将所述实时日志输入至预设的向量机中,得到对应固定维度的实时日志向量X=(x

S202:根据公式

S203:根据所述匹配度得到各所述实时日志的类别。

如上述步骤S201-S203所述,实现了对实时日志类别的检测。具体地,可以根据实时日志的类别,将实时日志输入至对应的向量机中,得到固定维度的实时日志向量,其中固定维度是指只考虑实时日志中的维度的值,若实时日志中不包含该维度的值,则通过预设的值替代或者设该维度为0,然后再利用固定维度的实时日志向量通过公式计算与预存类别向量之间的匹配度,需要说明的是,公式是将每一维坐标进行单独比对,若前述没有获得固定维度的实时日志,则无法利用该匹配度公式进行计算,然后根据匹配度的结果,找出各实时日志对应匹配度最高的消息队列,通过匹配度最高的消息队列对应的类别作为该实时日志的类别,以便于后续对应的消息队列接收该实时日志。

在一个实施例中,所述将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志的步骤S4之前,还包括:

S311:获取接收了所述实时日志后的各消息队列的长度,并根据各消息队列的长度建立长度集合;

S312:根据公式Δd

S313:判断所述最大长度差是否超过了长度预设值;

S314:若超过了长度预设值,则将处理所述长度集合中长度最小的消息队列的第一日志处理模型,在处理完毕长度最小的消息队列后,获取处理所述长度集合中长度最大的消息队列对应的第二日志处理模型中的参数数据;

S315:将所述第二日志处理模型中的参数数据迁移至所述第一日志模型中,并接收长度最大的消息队列中未处理的实时日志进行处理。

如上述步骤S311-S315所述,在各消息队列接收了实时日志后,根据各消息队列的长度建立长度集合,应当理解的是,实时日志具备不同的信息量,故而也存在只有一个实时日志的消息队列的长度大于两个甚至更多实时日志的消息队列长度。因此,默认为日志处理模型处理的实时日志的速度与长度有关,然后根据公式计算最大长度差,当最大长度差大于预设值时,说明在处理过程中,短的消息队列对应的日志处理模型已处理完毕一段时间后,长的消息队列对应的日志处理模型仍在处理,此时短的消息队列对应的日志处理模型会存在相当多的一段时间空闲,因此会造成资源浪费,此时可以将长度最小的消息队列的第一日志处理模型,在处理完毕长度最小的消息队列后,获取处理所述长度集合中长度最大的消息队列对应的第二日志处理模型中的参数数据,对长度最大的消息队列中未处理的实时日志进行处理,从而有效避免了第一日志处理模型的处理时间的空缺,极大的提高了日志处理模型的综合处理效率。另外,还可以设置消息队列的监控工具,监控工具优选使用RabbitMQ,其支持查看状态与配置,健康检查,用户及权限管理,集群管理,虚拟主机/交换机/连接/队列/信道管理等操作。可以实现监控不同消息队列的处理情况,实时日志的积压情况,QPS(Queries Per Second,每秒查询率)指标等。便于对消息队列的实时调控,即实现通过第一日志处理模型处理第二日志处理模型中未处理的实时日志。

在一个实施例中,所述将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志的步骤S4之前,包括:

S321:获取训练数据,并将所述训练数据中的各个样本数据进行分类处理;

S322:将各类别的所述样本数据输入至对应的日志处理初始模型中进行训练,训练完毕后得到各类别对应的所述日志处理模型。

如上述步骤S321-S322所述,实现了对各个类别日志的训练。为了更好的训练各个类别的日志处理初始模型,使训练后的各个日志处理模型处理该类别的事情更加精确,可以将训练数据进行分类处理,分类的方法可以通过余弦相似度算法进行计算,然后将各类别的样本数据输入至对应的日志处理初始模型中进行训练,得到各类别对应的日志处理模型,使各类别的日志处理模型在处理对应类别的实时日志时更加的精确。

在一个实施例中,所述获取训练数据,并将所述训练数据中的各个样本数据进行分类处理的步骤S321,包括:

S3211:从训练数据库中获取所述训练数据;

S3212:将所述训练数据中的各个样本数据进行向量化处理,得到各样本数据对应的样本向量;

S3213:根据公式

S3214:根据所述样本数据与各类别对应的类别向量的相似度,将所述样本数据进行分类处理。

如上述步骤S3211-S3214所述,具体的分类方法可以是,先从训练数据库中获取大量的样本数据,然后将各个样本数据进行向量化处理,得到各样本数据对应的样本向量,然后根据公式计算样本向量与各类别对应的类别向量的相似度,然后找出各样本数据相似度最高的类别向量,将对应的样本数据归于该类别向量对应的类别中,以便于后续输入至对应类别的日志处理初始模型中进行训练,增加了训练的精度。

在一个实施例中,所述根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中的步骤S5,包括:

S501:获取所述申请号对应的各所述目标日志的特征值;

S502:将各所述目标日志的特征值与所述缓存数据库中的层级类别进行相似度比较;

S503:根据所述相似度比较的结果将各所述目标日志缓存至各自相似度最高的层级目录下。

如上述步骤S501-S503所述,实现了对目标日志的分类保存。在每个申请号对应的缓存数据库中,可以计算该目标日志与缓存数据库中的层级类别的相似度,然后将该目标日志保存至对应的缓存数据库的层级类别的目录下,完成对目标日志的分类保存处理,使后续查看该目标日志时,可以根据目标日志的类别进行查找,便于目标日志在缓存数据库中的定位,提高用户查找目标日志的效率。

在一个实施例中,所述根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签的步骤S3之后,还包括:

S401:遍历所述消息队列中各实时日志的TOKEN标签,判断所述消息队列中的所述目标日志是否均已上传至所述消息队列中;

S402:若存在有未上传至所述消息队列中的所述实时日志,则根据所述TOKEN标签检测未上传的所述实时日志;

S403:将未上传的所述实时日志重新上传至所述消息队列中。

如上述步骤S401-S403所述,实现了对消息队列接收的实时日志进行检测,判断消息队列是否接收了所有的实时日志,保证了实时日志都能上传至消息队列中。具体地,由于消息队列为每个实时日志都建立了TOKEN标签,故而可以通过初步检测TOKEN标签的数量与上传实时日志的数量是否对应,若不对应,则可以检测TOKEN标签中的内容,依次对比上传实时日志中的内容,检测出未上传成功的实时日志,再将该实时日志上传至对应的消息队列的位置处,从而保证实时日志均能上传至消息队列中。

参照图2,本发明还提供了一种日志的缓存装置,包括:

预设数量检测模块10,用于检测实时日志的数量是否达到了预设数量;

类别检测模块20,用于若达到了预设数量,则检测各所述实时日志的类别;

实时日志接收模块30,用于根据各所述实时日志的类别,通过对应所述类别的消息队列接收对应的所述实时日志,并根据所述实时日志的申请号对所述实时日志设定TOKEN标签;

解耦模块40,用于将各所述消息队列分别发送至对应类别的日志处理模型中进行解耦处理,得到解耦后的目标日志;其中,所述目标日志携带有所述实时日志对应的所述TOKEN标签;

保存模块50,用于根据所述TOKEN标签将所述目标日志保存在对应所述申请号的缓存数据库中。

在一个实施例中,类别检测模块20,包括:

输入子模块,用于将所述实时日志输入至预设的向量机中,得到对应固定维度的实时日志向量X=(x

匹配度计算子模块,用于根据公式

类别计算子模块,用于根据所述匹配度得到各所述实时日志的类别。

在一个实施例中,解耦模块40,包括:

长度获取子模块,用于获取接收了所述实时日志后的各消息队列的长度,并根据各消息队列的长度建立长度集合;

最大长度差计算子模块,用于根据公式Δd

最大长度差判断子模块,用于判断所述最大长度差是否超过了长度预设值;

参数数据获取子模块,用于若超过了长度预设值,则将处理所述长度集合中长度最小的消息队列的第一日志处理模型,在处理完毕长度最小的消息队列后,获取处理所述长度集合中长度最大的消息队列对应的第二日志处理模型中的参数数据;

处理子模块,用于将所述第二日志处理模型中的参数数据迁移至所述第一日志模型中,并接收长度最大的消息队列中未处理的实时日志进行处理。

在一个实施例中,日志的缓存装置,还包括:

训练数据获取模块,用于获取训练数据,并将所述训练数据中的各个样本数据进行分类处理;

训练模块,用于将各类别的所述样本数据输入至对应的日志处理初始模型中进行训练,训练完毕后得到各类别对应的所述日志处理模型。

在一个实施例中,训练数据获取模块,包括:

训练数据获取子模块,用于从训练数据库中获取所述训练数据;

向量化处理子模块,用于将所述训练数据中的各个样本数据进行向量化处理,得到各样本数据对应的样本向量;

相似度计算子模块,用于根据公式

分类处理模块,用于根据所述样本数据与各类别对应的类别向量的相似度,将所述样本数据进行分类处理。

在一个实施例中,保存模块50,包括:

特征值获取子模块,用于获取所述申请号对应的各所述目标日志的特征值;

相似度比较模块,用于将各所述目标日志的特征值与所述缓存数据库中的层级类别进行相似度比较;

缓存子模块,用于根据所述相似度比较的结果将各所述目标日志缓存至各自相似度最高的层级目录下。

在一个实施例中,日志的缓存装置,还包括:

遍历模块,用于遍历所述消息队列中各实时日志的TOKEN标签,判断所述消息队列中的所述目标日志是否均已上传至所述消息队列中;

实时日志检测模块,用于若存在有未上传至所述消息队列中的所述实时日志,则根据所述TOKEN标签检测未上传的所述实时日志;

重新上传模块,用于将未上传的所述实时日志重新上传至所述消息队列中。

本发明的有益效果:通过监控实时日志的数量,当实时日志的数量达到预设数量时,则通过消息队列将实时日志分类接收,然后再发送至对应的日志处理模型中进行处理,对各个实时日志进行解耦处理,以缩小实时日志文件的大小,得到目标日志,然后根据标签将目标日志保存在对应申请号的缓存数据库中。从而实现对实时日志的分类高效处理,加快了缓存数据库处理单个实时日志的速度,另外,通过对应的日志处理模型进行处理,也能提高处理结果的精确度。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储各种目标日志等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时可以实现上述任一实施例所述的日志的缓存方法。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时可以实现上述任一实施例所述的日志的缓存方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM一多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

相关技术
  • 日志的缓存方法、装置以及计算机设备
  • 日志检测方法、日志检测装置、计算机设备及存储介质
技术分类

06120112340937