日志存储的方法及装置的制造方法

文档序号:10687128阅读:299来源:国知局
日志存储的方法及装置的制造方法
【专利摘要】本公开是关于一种日志存储的方法及装置,该方法包括:在消息列队中预先划分为多个分区,在获取第一日志消息后,根据预设的关键字类型获取第一日志消息的关键字,并获取关键字的哈希码,从而根据关键字的哈希码和消息队列的分区信息确定第一日志消息应当存储的目标分区,并将第一日志消息存储到消息队列中的目标分区中。能够解决无法对日志区分以及在使用日志时实时性差的问题,能够实现日志的分类存储,提高使用日志时实时性。
【专利说明】
曰志存储的方法及装置
技术领域
[0001 ]本公开涉及日志处理技术领域,尤其涉及一种日志存储的方法及日志存储的装置。
【背景技术】
[0002]终端(例如手机、电脑等)在使用中会产生大量的日志,我们经常需要对这些日志进行收集,进而对这些日志进行分析。相关技术中日志的收集过程通常是:终端通常先将日志上传到服务器代理,再使用scribe(—种日志收集系统)实时收集这些数据,并将收到的日志消息发送至消息队列,然后消息队列中的日志消息可以导入到分布式文件系统(Hadoop Distributed File System,简称HDFS),从而完成了日志的收集。

【发明内容】

[0003]为克服相关技术中存在的问题,本公开提供一种日志存储的方法及装置。
[0004]根据本公开实施例的第一方面,提供一种日志存储的方法,所述包括方法包括:
[0005]获取第一日志消息;
[0006]根据预设的关键字类型获取所述第一日志消息的关键字;
[0007]获取所述关键字的哈希码;
[0008]根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;
[0009]将所述第一日志消息存储到所述消息队列中的所述目标分区中。
[0010]可选的,所述根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区包括:
[0011]根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区;或者,
[0012]根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区。
[0013]可选的,所述根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区,包括:
[0014]获取所述关键字的哈希码的绝对值;
[0015]将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区;
[0016]根据每个分区对应的模值确定所述目标分区。
[0017]可选的,根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区,包括:
[0018]获取所述关键字的哈希码的绝对值;
[0019]将所述关键字的哈希码的绝对值与所述分区总数进行模运算;
[0020]获取将进行模运算得到的模值除以预设值所得的余数;
[0021 ]根据所述余数确定所述目标分区。
[0022]可选的,所述目标分区中包括至少一个子分区,所述将所述第一日志消息存储到所述消息队列中的所述目标分区中,包括:
[0023]根据预设的子关键字类型获取所述第一日志消息的子关键字;
[0024]获取所述子关键字的哈希码;
[0025]根据所述子关键字的哈希码和所述目标分区的子分区信息确定所述第一日志消息应当存储的目标子分区;所述目标子分区为所述至少一个子分区中的任一子分区;
[0026]将所述第一日志消息存储到所述目标子分区。
[0027]可选的,所述方法还包括:
[0028]获取待使用的目标日志消息所在分区的分区标识号;
[0029]根据所述分区标识号从所述目标日志消息所在分区获取所述目标日志消息。
[0030]可选的,所述根据所述分区标识号从所述目标日志消息所在分区中获取所述目标日志消息包括:
[0031 ]获取所述目标日志消息所在的子分区的子分区标识号;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0032]根据所述子分区标识号从所述目标日志消息所在的子分区获取所述目标日志消息。
[0033]可选的,所述方法还包括:
[0034]获取待使用的目标日志消息的关键字;
[0035]根据所述目标日志消息的关键字确定所述目标日志消息所在的分区;
[0036]从所述目标日志消息所在的分区获取所述目标日志消息。
[0037]可选的,所述从所述目标日志消息所在的分区获取所述目标日志消息包括:
[0038]获取所述目标日志消息的子关键字;
[0039]根据所述目标日志消息的子关键字确定所述目标日志消息所在的子分区;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0040]从所述目标日志消息所在的子分区获取所述目标日志消息。
[0041 ]可选的,所述方法还包括:
[0042]当满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。
[0043]根据本公开实施例的第二方面,提供一种日志存储的装置,所述装置包括:
[0044]消息获取模块,被配置为获取第一日志消息;
[0045]关键字识别模块,被配置为根据预设的关键字类型获取所述第一日志消息的关键字;
[0046]计算模块,被配置为获取所述关键字的哈希码;
[0047]分区选择模块,被配置为根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;
[0048]存储模块,被配置为将所述第一日志消息存储到所述消息队列中的所述目标分区中。
[0049]可选的,所述分区选择模块被配置为:
[0050]根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区;或者,
[0051]根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区。
[0052]可选的,所述分区选择模块包括:
[0053]第一计算子模块,被配置为获取所述关键字的哈希码的绝对值;
[0054]第二计算子模块,被配置为将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区;
[0055]确定子模块,被配置为根据每个分区对应的模值确定所述目标分区。
[0056]可选的,所述分区选择包括:
[0057]第三计算子模块,被配置为获取所述关键字的哈希码的绝对值;
[0058]第四计算子模块,被配置为将所述关键字的哈希码的绝对值与所述分区总数进行模运算;
[0059]获取子模块,被配置为获取将进行模运算得到的模值除以预设值所得的余数;
[0060]确定子模块,被配置为根据所述余数确定所述目标分区。
[0061 ]可选的,所述存储模块包括:
[0062]关键字获取子模块,被配置为根据预设的子关键字类型获取所述第一日志消息的子关键字;
[0063]哈希计算子模块,被配置为获取所述子关键字的哈希码;
[0064]确定子模块,被配置为根据所述子关键字的哈希码和所述目标分区的子分区信息确定所述第一日志消息应当存储的目标子分区;所述目标子分区为所述至少一个子分区中的任一子分区;
[0065]存储子模块,被配置为将所述第一日志消息存储到所述目标子分区。
[0066]可选的,所述装置还包括:
[0067]标识获取模块,被配置为获取待使用的目标日志消息所在分区的分区标识号;
[0068]第一消息提取模块,被配置为根据所述分区标识号从所述目标日志消息所在分区获取所述目标日志消息。
[0069]可选的,所述第一消息提取模块包括:
[0070]标识获取子模块,被配置为获取所述目标日志消息所在的子分区的子分区标识号;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0071 ]消息获取子模块,被配置为根据所述子分区标识号从所述目标日志消息所在的子分区获取所述目标日志消息。
[0072]可选的,所述装置还包括:
[0073]关键字获取模块,被配置为获取待使用的目标日志消息的关键字;
[0074]分区确定模块,被配置为根据所述目标日志消息的关键字确定所述目标日志消息所在的分区;
[0075]第二消息提取模块,被配置为从所述目标日志消息所在的分区获取所述目标日志消息。
[0076]可选的,所述第二消息提取模块包括:
[0077]关键字获取子模块,被配置为获取所述目标日志消息的子关键字;
[0078]子分区确定子模块,根据所述目标日志消息的子关键字确定所述目标日志消息所在的子分区;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0079]消息获取子模块,被配置为从所述目标日志消息所在的子分区获取所述目标日志消息。
[0080]可选的,所述装置还包括:
[0081]备份模块,被配置为当满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。
[0082]根据本公开实施例的第三方面,提供一种日志存储的装置,所述装置包括:
[0083]处理器;
[0084]用于存储处理器可执行指令的存储器;
[0085]其中,所述处理器被配置为:
[0086]获取第一日志消息;
[0087]根据预设的关键字类型获取所述第一日志消息的关键字;
[0088]获取所述关键字的哈希码;
[0089]根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;
[0090]将所述第一日志消息存储到所述消息队列中的所述目标分区中。
[0091]根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种日志存储的方法,所述方法包括:获取第一日志消息;根据预设的关键字类型获取所述第一日志消息的关键字;获取所述关键字的哈希码;根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;将所述第一日志消息存储到所述消息队列中的所述目标分区中。
[0092]本公开的实施例提供的技术方案可以包括以下有益效果:
[0093]本公开提供的日志存储的方法及装置,通过将消息列队预先划分为多个分区,在获取第一日志消息后,根据预设的关键字类型获取所述第一日志消息的关键字,并获取所述关键字的哈希码,从而根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区,所述目标分区为所述多个分区中的任一分区,最终将所述第一日志消息存储到所述消息队列中的所述目标分区中。由于相关技术中的日志收集过程中数据是集中在一起进行收集的,无法对日志的区分,从而也导致在使用日志时,需要对分布式文件系统中存储的大量日志进行分析才能找到需要的日志,实时性差。本公开利用关键字将日志存储在不同的分区中,能够解决相关技术中无法对日志区分以及在使用日志时实时性差的问题,能够实现日志的分类存储,提高使用日志时实时性。
[0094]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
【附图说明】
[0095]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0096]图1是根据一示例性实施例示出的一种日志存储的方法的流程图;
[0097]图2是根据一示例性实施例示出的一种日志存储的方法的流程图;
[0098]图3是根据一示例性实施例示出的另一种日志存储的方法的流程图;
[0099]图4是根据一示例性实施例示出的一种日志存储的装置框图;
[0100]图5是图4所示实施例示出的一种分区选择模块框图;
[0101 ]图6是图4所示实施例示出的另一种分区选择模块框图;
[0102]图7是图4所示实施例示出的一种存储模块框图;
[0103]图8是根据一示例性实施例示出的另一种日志存储的装置框图;
[0104]图9是图8所示实施例示出的第一消息提取模块框图;
[0105]图10是根据一示例性实施例示出的又一种日志存储的装置框图;
[0106]图11是图10所示实施例示出的第二消息提取模块框图;
[0107]图12是根据一示例性实施例示出的又一种日志存储的装置框图;
[0108]图13是根据一示例性实施例示出的一种日志存储的装置框图。
【具体实施方式】
[0109]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0110]在介绍本公开提供的日志存储的方法之前,首先对本公开所涉及应用场景进行介绍,该实施环境可以包括:终端,以及服务器,终端可以将自身产生的日志(此时是用户数据的形式)上传的服务代理,而后由位于服务器的日志收集系统scribe进行收集并将收到的日志消息存储到消息队列中,其中消息队列可以预先划分成多个分区,并且可以在日志收集系统scribe自定义消息拦截器,该拦截器可以预先定义一个或者多个关键字种类,从而可以根据收到的消息的关键字来确定将该日志消息存储到哪个分区中。其中,终端例如可以是智能手机、功能平板电脑、智能电视、智能手表、PDA(Personal Digital Assistant,个人数字助理)、便携计算机等移动终端,也可以是台式计算机等固定终端。服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者可以是一个云计算服务中心。
[0111]图1是根据一示例性实施例示出的一种日志存储的方法的流程图,该方法可以应用于服务器,如图1所示,该方法包括以下步骤。
[0112]步骤101,获取第一日志消息。
[0113]其中,该第一日志消息可以是某一终端,例如手机、电脑等上传的日志,获取该第一日志消息可以由服务器中的日志收集系统scribe来执行。
[0114]步骤102,根据预设的关键字类型获取第一日志消息的关键字。即可以理解为获取所述第一日志消息中的属于该预设的关键字类型的关键字。
[0115]步骤103,获取关键字的哈希码(hashcode)。
[0116]步骤104,根据关键字的哈希码和消息队列的分区信息确定第一日志消息应当存储的目标分区;消息队列包括多个分区,目标分区为该多个分区中的任一分区。
[0117]其中,可以预先在消息队列中设置多个分区,示例的,可以在消息队列的用于存储日志的Topic(主题)设置多个分区,每个分区分配一定的存储空间,用于存储接收到的日志消息。另外,分区信息可以是消息队列的每个分区的标识号(比如ID),或者可以是分区的总数。
[0118]步骤105,将第一日志消息存储到消息队列中的目标分区中。
[0119]综上,本公开提供的日志存储的方法,通过将消息列队预先划分为多个分区,在获取第一日志消息后,根据预设的关键字类型获取所述第一日志消息的关键字,并获取所述关键字的哈希码,从而根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区,所述目标分区为所述多个分区中的任一分区,最终将所述第一日志消息存储到所述消息队列中的所述目标分区中。由于相关技术中的日志收集过程中数据是集中在一起进行收集的,无法对日志的区分,从而也导致在使用日志时,需要对分布式文件系统中存储的大量日志进行分析才能找到需要的日志,实时性差。本公开利用关键字将日志存储在不同的分区中,能够解决相关技术中无法对日志区分以及在使用日志时实时性差的问题,能够实现日志的分类存储,提高使用日志时实时性。
[0120]图2是根据一示例性实施例示出的一种日志存储的方法的流程图,该方法可以应用于服务器,在该服务器中,可以利用日志收集系统scribe设置拦截器,用于在将接收到的日志消息存储到消息队列之前先对收到的日志消息进行分析,以确定日志消息应当存储的分区,其中分区是指消息队列中的分区,该消息队列中包括预先设置的多个分区,如图2所示,该方法包括以下步骤。
[0121]步骤201,获取第一日志消息。
[0122]其中,该第一日志消息可以是某一终端,例如手机、电脑等上传的日志,获取该第一日志消息可以有服务器中的日志收集系统scribe来执行。
[0123]步骤202,根据预设的关键字类型获取第一日志消息的关键字。
[0124]即可以理解为获取所述第一日志消息中的属于该预设的关键字类型的关键字。例如,假设预设的关键字类型为“用户ID”,并假设第一日志消息中包括“用户ID: 123456,用户性别:00(示例地,以00表示女性,01表示男性),用户年龄:21,其他信息:XXXXXXX”,则根据指定的关键字类型“用户ID”获取的关键字应当为“123456”。
[0125]步骤203,获取关键字的哈希码。
[0126]步骤204,根据关键字的哈希码和消息队列的分区信息进行模运算,根据模运算的结果确定第一日志消息应当存储的目标分区。
[0127]其中,分区信息可以是消息队列中每个分区的标识号,或者是分区总数,在设置好消息队列中的多个分区后,可以给每个分区分配唯一的标识号(例如ID),示例地假设消息队列中有5个分区,则可以记为分区I?分区5,则确定第一日志消息应当存储的目标分区可以通过以下两种方式:
[0128]第一种,可以根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区。示例地,可以包括:
[0129]首先,获取所述关键字的哈希码的绝对值;其次,将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区;再次,可以利用预设的分配策略,根据每个分区对应的模值确定第一日志消息应当存储的目标分区。
[0130]第二种,可以根据所述关键字的哈希码和消息队列的分区总数(或者称为分区标识号的最大值)确定所述第一日志消息应当存储的目标分区。示例地,可以包括:
[0131]首先,获取所述关键字的哈希码的绝对值;其次,将所述关键字的哈希码的绝对值与所述分区总数进行模运算;再次,获取将进行模运算得到的模值除以预设值所得的余数;最后,根据所述余数确定第一日志消息应当存储的目标分区,例如根据余数与分区标识号的对应关系来确定,比如余数为I则可以确定目标分区为分区I,该对应关系可以是预先设置的。
[0132]另外,值得一提的是,采用分区标识号进行模运算,可以在分区被误删后不影响后续的日志收集过程。
[0133]步骤205,将第一日志消息存储到消息队列中的目标分区中。
[0134]进一步,如果在设置拦截器时,设置的关键字类型可以有多个,则可以理解为从多个维度去确定日志消息应当存储的分区其中这里设置的多个关键字类型可以是有关联关系的,例如在设置了某一关键字类型后,还可以进一步设置子关键字类型,则相应的可以在消息队列中建立子分区。比如预设的关键字类型为“用户ID”,子关键字类型为“用户性别”,假设分区为分区I至分区5,分别用于存储I类用户、2类用户、3类用户、4类用户和5类用户的日志消息,并且在每个分区中建立有两个子分区,分别对应用户性别为男性和女性。示例地,图3是根据一示例性实施例示出的另一种日志存储的方法的流程图,如图3所示,在预设了子关键字类型的情况下,该方法可以用以下步骤206?步骤209替换步骤205。
[0135]步骤206,根据预设的子关键字类型获取第一日志消息的子关键字。
[0136]其中,与获取关键字的方法相同,以步骤202中的第一日志消息“用户ID:123456,用户性别:00(示例地,以00表示女性,01表示男性),用户年龄:21,其他信息:XXXXXXX”为例,假设子关键字类型为“用户性别”,则这里获取的第一日志消息的子关键字为“00”。其中步骤206也可以在执行步骤201时一起执行。
[0137]步骤207,获取子关键字的哈希码。
[0138]步骤208,根据子关键字的哈希码和目标分区的子分区信息确定第一日志消息应当存储的目标子分区。
[0139]其中,子分区信息可以为目标分区中的每个子分区的标识号,或者是子分区总数,因此确定第一日志消息应当存储的目标子分区可以也通过两种方式:
[0140]第一种,可以根据所述子关键字的哈希码和目标分区中的每个子分区的标识号确定所述第一日志消息应当存储的目标子分区。示例地,可以包括:
[0141]首先,获取所述子关键字的哈希码的绝对值;其次,将所述子关键字的哈希码的绝对值分别与每个子分区的标识号进行模运算,得到多个模值,其中每个模值对应一个子分区;再次,可以利用预设的分配策略,根据每个子分区对应的模值确定第一日志消息应当存储的目标子分区。
[0142]第二种,可以根据所述子关键字的哈希码和消息队列的子分区总数确定所述第一日志消息应当存储的目标子分区。示例地,可以包括:
[0143]首先,获取所述子关键字的哈希码的绝对值;其次,将所述子关键字的哈希码的绝对值与所述子分区总数进行模运算;再次,获取将进行模运算得到的模值除以预设值所得的余数;最后,根据所述余数确定第一日志消息应当存储的子目标分区,例如根据余数与子分区标识号的对应关系来确定。
[0144]例如,假设已经确定的目标分区为分区I,并且获得的余数为1,则可以确定目标分区为子分区1-1,该对应关系可以是预先设置的。根据前文所述,分区对应的是I类用户,并且假设子分区1-1对应的是用户性别为女性的子分区,则通过上述方法,可以将所有的I类用户中的女性用户的相关日志消息都存储在分区I中的子分区1-1中,可以将具有相似关键字的日志消息存储在同一个分区,甚至子分区中。
[0145]步骤209,将第一日志消息存储到目标子分区。
[0146]另外每个子分区还可以有更进一步的子分区,其实现方法与步骤206?209相同,不再赘述。可以见通过多关键字和子分区能够进一步的将分区细化,实现在日志存储中更精细的进行分区存储。因此,上述方法实现了日志的分区存储,有利于日志的区分,可以将具有相似关键字的日志消息存储在同一个分区,甚至子分区中,从而能够实现在使用存储的日志消息时快速定位需要的目标日志消息。
[0147]示例地,在使用存储的日志时,可以先获取待使用的目标日志消息所在分区的分区标识号,再根据分区标识号从目标日志消息所在分区获取目标日志消息,例如获取的目标日志消息为“分区I”,则可以从分区I中去获取目标日志消息。如果第一日志消息是存储在子分区中,则除了获取目标日志消息所在分区的分区标识号之外,还需要获取目标日志消息所在的子分区的子分区标识号(所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区),从而在根据分区标识号确定目标日志消息所在分区后,根据子分区标识号从目标日志消息所在的子分区获取目标日志消息,例如,目标日志消息位于分区I中的子分区1-2,则可以获取“分区I”以及“子分区1-2”,从而可以从分区I的子分区1-2中获取目标日志消息。
[0148]或者,在使用存储的日志时,可以先获取待使用的目标日志消息的关键字,而后根据目标日志消息的关键字确定目标日志消息所在的分区,再从目标日志消息所在的分区获取目标日志消息。如果第一日志消息是存储在子分区中,则除了获取目标日志消息的关键字之外,还需要获取目标日志消息的子关键字,从而在根据目标日志消息的关键字确定目标日志消息所在的分区后,根据目标日志消息的子关键字确定目标日志消息所在的子分区(所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区),并从目标日志消息所在的子分区获取目标日志消息。其中,根据目标日志消息的关键字确定目标日志消息所在的分区的方法可以参考步骤204,根据目标日志消息的子关键字确定目标日志消息所在的子分区的方法可以参考步骤208。
[0149]另外,还可以在满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。其中,该备份条件可以为预先设置的备份时间点,当到达备份时间点时将消息队列的每个分区中存储的日志消息进行备份,或者接收到备份指令时进行备份等等。从而如果某一分区出现问题,例如被误删除,则可以新建一个相同ID的分区,并利用备份恢复即可。其中,对一个每个分区中存储的日志消息进行备份,包括对每个分区中的每个子分区中存储的日志消息进行备份。
[0150]综上,本公开提供的日志存储的方法,通过将消息列队预先划分为多个分区,在获取第一日志消息后,根据预设的关键字类型获取所述第一日志消息的关键字,并获取所述关键字的哈希码,从而根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区,所述目标分区为所述多个分区中的任一分区,最终将所述第一日志消息存储到所述消息队列中的所述目标分区中。由于相关技术中的日志收集过程中数据是集中在一起进行收集的,无法对日志的区分,从而也导致在使用日志时,需要对分布式文件系统中存储的大量日志进行分析才能找到需要的日志,实时性差。本公开利用关键字将日志存储在不同的分区中,能够解决相关技术中无法对日志区分以及在使用日志时实时性差的问题,能够实现日志的分类存储,提高使用日志时实时性。
[0151]图4是根据一示例性实施例示出的一种日志存储的装置框图。该装置400可以用于执行图1?图3任一所述的方法,参照图4,该装置包括消息获取模块401,关键字识别模块402,计算模块403,分区选择模块404和存储模块405。
[0152]消息获取模块401,被配置为获取第一日志消息;
[0153]关键字识别模块402,被配置为根据预设的关键字类型获取所述第一日志消息的关键字;
[0154]计算模块403,被配置为获取所述关键字的哈希码;
[0155]分区选择模块404,被配置为根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;
[0156]存储模块405,被配置为将所述第一日志消息存储到所述消息队列中的所述目标分区中。
[0157]可选的,所述分区选择模块被配置为:
[0158]根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区;或者,
[0159]根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区。
[0160]可选的,图5是图4所示实施例示出的一种分区选择模块框图,如图5所示,所述分区选择模块404包括:
[0161]第一计算子模块4041,被配置为获取所述关键字的哈希码的绝对值;
[0162]第二计算子模块4042,被配置为将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区;
[0163]确定子模块4043,被配置为根据每个分区对应的模值确定所述目标分区。
[0164]可选的,图6是图4所示实施例示出的另一种分区选择模块框图,如图6所示,所述分区选择模块404包括:
[0165]第三计算子模块4044,被配置为获取所述关键字的哈希码的绝对值;
[0166]第四计算子模块4045,被配置为将所述关键字的哈希码的绝对值与所述分区总数进行模运算;
[0167]获取子模块4046,被配置为获取将进行模运算得到的模值除以预设值所得的余数;
[0168]确定子模块4047,被配置为根据所述余数确定所述目标分区。
[0169]可选的,图7是图4所示实施例示出的一种存储模块框图,如图7所示,所述存储模块405包括:
[0170]关键字获取子模块4051,被配置为根据预设的子关键字类型获取所述第一日志消息的子关键字;
[0171]哈希计算子模块4052,被配置为获取所述子关键字的哈希码;
[0172]确定子模块4053,被配置为根据所述子关键字的哈希码和所述目标分区的子分区信息确定所述第一日志消息应当存储的目标子分区;所述目标子分区为所述至少一个子分区中的任一子分区;
[0173]存储子模块4054,被配置为将所述第一日志消息存储到所述目标子分区。
[0174]可选的,图8是根据一示例性实施例示出的另一种日志存储的装置框图,如图8所示,所述装置400还包括:
[0175]标识获取模块406,被配置为获取待使用的目标日志消息所在分区的分区标识号;
[0176]第一消息提取模块407,被配置为根据所述分区标识号从所述目标日志消息所在分区获取所述目标日志消息。
[0177]可选的,图9是图8所示实施例示出的第一消息提取模块框图,如图9所示,所述第一消息提取模块407包括:
[0178]标识获取子模块4071,被配置为获取所述目标日志消息所在的子分区的子分区标识号;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0179]消息获取子模块4072,被配置为根据所述子分区标识号从所述目标日志消息所在的子分区获取所述目标日志消息。
[0180]可选的,图10是根据一示例性实施例示出的又一种日志存储的装置框图,如图10所示,所述装置400还包括:
[0181]关键字获取模块408,被配置为获取待使用的目标日志消息的关键字;
[0182]分区确定模块409,被配置为根据所述目标日志消息的关键字确定所述目标日志消息所在的分区;
[0183]第二消息提取模块410,被配置为从所述目标日志消息所在的分区获取所述目标曰志消息。
[0184]可选的,图11是图10所示实施例示出的第二消息提取模块框图,如图9所示,所述第二消息提取模块410包括:
[0185]关键字获取子模块4101,被配置为获取所述目标日志消息的子关键字;
[0186]子分区确定子模块4102,根据所述目标日志消息的子关键字确定所述目标日志消息所在的子分区;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区;
[0187]消息获取子模块4103,被配置为从所述目标日志消息所在的子分区获取所述目标曰志消息。
[0188]可选的,图12是根据一示例性实施例示出的又一种日志存储的装置框图,如图12所示,所述装置还包括:
[0189]备份模块411,被配置为当满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。
[0190]综上,本公开提供的日志存储的方法,通过将消息列队预先划分为多个分区,在获取第一日志消息后,根据预设的关键字类型获取所述第一日志消息的关键字,并获取所述关键字的哈希码,从而根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区,所述目标分区为所述多个分区中的任一分区,最终将所述第一日志消息存储到所述消息队列中的所述目标分区中。由于相关技术中的日志收集过程中数据是集中在一起进行收集的,无法对日志的区分,从而也导致在使用日志时,需要对分布式文件系统中存储的大量日志进行分析才能找到需要的日志,实时性差。本公开利用关键字将日志存储在不同的分区中,能够解决相关技术中无法对日志区分以及在使用日志时实时性差的问题,能够实现日志的分类存储,提高使用日志时实时性。
[0191]关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0192]图13是根据一示例性实施例示出的一种日志存储的装置1300的框图。例如,装置1300可以被提供为一服务器。参照图13,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述日志存储的方法。
[0193]装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口 1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
[0194]在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1332,上述指令可由装置1300的处理组件1322执行以完成上述日志存储的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-R0M、磁带、软盘和光数据存储设备等。
[0195]本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0196]应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
【主权项】
1.一种日志存储的方法,其特征在于,所述方法包括: 获取第一日志消息; 根据预设的关键字类型获取所述第一日志消息的关键字; 获取所述关键字的哈希码; 根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区; 将所述第一日志消息存储到所述消息队列中的所述目标分区中。2.根据权利要求1所述的方法,其特征在于,所述根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区包括: 根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区;或者, 根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区。3.根据权利要求2所述的方法,其特征在于,所述根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区,包括: 获取所述关键字的哈希码的绝对值; 将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区; 根据每个分区对应的模值确定所述目标分区。4.根据权利要求2所述的方法,其特征在于,根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区,包括: 获取所述关键字的哈希码的绝对值; 将所述关键字的哈希码的绝对值与所述分区总数进行模运算; 获取将进行模运算得到的模值除以预设值所得的余数; 根据所述余数确定所述目标分区。5.根据权利要求1所述的方法,其特征在于,所述目标分区中包括至少一个子分区,所述将所述第一日志消息存储到所述消息队列中的所述目标分区中,包括: 根据预设的子关键字类型获取所述第一日志消息的子关键字; 获取所述子关键字的哈希码; 根据所述子关键字的哈希码和所述目标分区的子分区信息确定所述第一日志消息应当存储的目标子分区;所述目标子分区为所述至少一个子分区中的任一子分区; 将所述第一日志消息存储到所述目标子分区。6.根据权利要求1所述的方法,其特征在于,所述方法还包括: 获取待使用的目标日志消息所在分区的分区标识号; 根据所述分区标识号从所述目标日志消息所在分区获取所述目标日志消息。7.根据权利要求6所述的方法,其特征在于,所述根据所述分区标识号从所述目标日志消息所在分区中获取所述目标日志消息包括: 获取所述目标日志消息所在的子分区的子分区标识号;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区; 根据所述子分区标识号从所述目标日志消息所在的子分区获取所述目标日志消息。8.根据权利要求1所述的方法,其特征在于,所述方法还包括: 获取待使用的目标日志消息的关键字; 根据所述目标日志消息的关键字确定所述目标日志消息所在的分区; 从所述目标日志消息所在的分区获取所述目标日志消息。9.根据权利要求8所述的方法,其特征在于,所述从所述目标日志消息所在的分区获取所述目标日志消息包括: 获取所述目标日志消息的子关键字; 根据所述目标日志消息的子关键字确定所述目标日志消息所在的子分区;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区; 从所述目标日志消息所在的子分区获取所述目标日志消息。10.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。11.一种日志存储的装置,其特征在于,所述装置包括: 消息获取模块,被配置为获取第一日志消息; 关键字识别模块,被配置为根据预设的关键字类型获取所述第一日志消息的关键字; 计算模块,被配置为获取所述关键字的哈希码; 分区选择模块,被配置为根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区; 存储模块,被配置为将所述第一日志消息存储到所述消息队列中的所述目标分区中。12.根据权利要求11所述的装置,其特征在于,所述分区选择模块被配置为: 根据所述关键字的哈希码和消息队列的每个分区的标识号确定所述第一日志消息应当存储的目标分区;或者, 根据所述关键字的哈希码和消息队列的分区总数确定所述第一日志消息应当存储的目标分区。13.根据权利要求12所述的装置,其特征在于,所述分区选择模块包括: 第一计算子模块,被配置为获取所述关键字的哈希码的绝对值; 第二计算子模块,被配置为将所述关键字的哈希码的绝对值分别与消息队列的每个分区的标识号进行模运算,得到多个模值,其中每个模值对应一个分区; 确定子模块,被配置为根据每个分区对应的模值确定所述目标分区。14.根据权利要求12所述的装置,其特征在于,所述分区选择模块包括: 第三计算子模块,被配置为获取所述关键字的哈希码的绝对值; 第四计算子模块,被配置为将所述关键字的哈希码的绝对值与所述分区总数进行模运算; 获取子模块,被配置为获取将进行模运算得到的模值除以预设值所得的余数; 确定子模块,被配置为根据所述余数确定所述目标分区。15.根据权利要求11所述的装置,其特征在于,所述存储模块包括: 关键字获取子模块,被配置为根据预设的子关键字类型获取所述第一日志消息的子关键字; 哈希计算子模块,被配置为获取所述子关键字的哈希码; 确定子模块,被配置为根据所述子关键字的哈希码和所述目标分区的子分区信息确定所述第一日志消息应当存储的目标子分区;所述目标子分区为所述至少一个子分区中的任一子分区; 存储子模块,被配置为将所述第一日志消息存储到所述目标子分区。16.根据权利要求11所述的装置,其特征在于,所述装置还包括: 标识获取模块,被配置为获取待使用的目标日志消息所在分区的分区标识号; 第一消息提取模块,被配置为根据所述分区标识号从所述目标日志消息所在分区获取所述目标日志消息。17.根据权利要求16所述的装置,其特征在于,所述第一消息提取模块包括: 标识获取子模块,被配置为获取所述目标日志消息所在的子分区的子分区标识号;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区; 消息获取子模块,被配置为根据所述子分区标识号从所述目标日志消息所在的子分区获取所述目标日志消息。18.根据权利要求11所述的装置,其特征在于,所述装置还包括: 关键字获取模块,被配置为获取待使用的目标日志消息的关键字; 分区确定模块,被配置为根据所述目标日志消息的关键字确定所述目标日志消息所在的分区; 第二消息提取模块,被配置为从所述目标日志消息所在的分区获取所述目标日志消息。19.根据权利要求18所述的装置,其特征在于,所述第二消息提取模块包括: 关键字获取子模块,被配置为获取所述目标日志消息的子关键字; 子分区确定子模块,根据所述目标日志消息的子关键字确定所述目标日志消息所在的子分区;所述目标日志消息所在的子分区是所述目标日志消息所在分区中的子分区; 消息获取子模块,被配置为从所述目标日志消息所在的子分区获取所述目标日志消息。20.根据权利要求11所述的装置,其特征在于,所述装置还包括: 备份模块,被配置为当满足预设的备份条件时,将消息队列的每个分区中存储的日志消息进行备份。21.—种日志存储的装置,其特征在于,所述装置包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为: 获取第一日志消息; 根据预设的关键字类型获取所述第一日志消息的关键字; 获取所述关键字的哈希码; 根据所述关键字的哈希码和消息队列的分区信息确定所述第一日志消息应当存储的目标分区;所述消息队列包括多个分区,所述目标分区为所述多个分区中的任一分区;将所述第一日志消息存储到所述消息队列中的所述目标分区中。
【文档编号】G06F17/30GK106055630SQ201610366186
【公开日】2016年10月26日
【申请日】2016年5月27日
【发明人】张旭华, 杨松, 万韶华
【申请人】北京小米移动软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1