链路结构日志的压缩方法、装置、服务器及可读存储介质与流程

文档序号:16329685发布日期:2018-12-19 06:07阅读:144来源:国知局
链路结构日志的压缩方法、装置、服务器及可读存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种链路结构日志的压缩方法、装置、服务器及可读存储介质。

背景技术

现有的链路结构日志的压缩方式通常是首先获取原始链路结构日志,然后将原始链路结构日志压缩成比特(byte)流,其压缩方式例如可以是gzip等方式;再对压缩成的比特流再进行编码,其编码方式例如可以是base64,其编码后的日志为压缩日志,此时的压缩日志的压缩比较大,但是压缩日志不具备可读性。



技术实现要素:

本发明提供了一种链路结构日志的压缩方法、装置、服务器及可读存储介质,能够在确保一定压缩比的情况下同时具备可读性。

本申请第一方面提供了一种链路结构日志的压缩方法,包括:

获取一次调用生成的原始链路结构日志,所述原始链路结构日志中包括多个节点的节点信息;

从所述原始链路结构日志中提取出具有最大共同前缀的节点对,并从具有最大共同前缀的节点对中选取一个节点作为主节点;

获取所述原始链路结构日志中除所述主节点之外的每个其他节点与所述主节点的共同前缀;

对所述获取的所述每个其他节点中与所述主节点的共同前缀进行压缩,得到压缩后的链路结构日志。

本申请第二方面还提供了一种链路结构日志的压缩装置,包括:

原始日志获取单元,用于获取一次调用生成的原始链路结构日志,所述原始链路结构日志中包括多个节点的节点信息;

主节点选取单元,用于从所述原始链路结构日志中提取出具有最大共同前缀的节点对,并从具有最大共同前缀的节点对中选取一个节点作为主节点;

共同前缀获取单元,用于获取所述原始链路结构日志中除所述主节点之外的每个其他节点与所述主节点的共同前缀;

压缩单元,用于对所述获取的所述每个其他节点中与所述主节点的共同前缀进行压缩,得到压缩后的链路结构日志。

本申请第三方面还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述链路结构日志的压缩方法的步骤。

本申请第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述链路结构日志的压缩方法的步骤。

本发明的有益效果如下:

基于上述技术方案,由于仅对每个其他节点与主节点的共同前缀进行了压缩,而对主节点的所有内容和每个其他节点中除该节点对应的共同前缀之外的内容没有进行压缩,如此,从压缩后的链路结构日志中能够读取出主节点的内容和每个其他节点中除该节点对应的共同前缀之外的内容,能够在确保一定压缩比的情况下同时具备可读性。

附图说明

图1为本发明实施例中链路结构日志的压缩方法的方法流程图;

图2为本发明实施例中链路结构日志的压缩装置的结构示意图;

图3为本说明书实施例中服务器的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。

第一方面,如图1所示,本说明书实施例提供一种链路结构日志的压缩方法,包括以下步骤:

s102、获取一次调用生成的原始链路结构日志,所述原始链路结构日志中包括多个节点的节点信息;

具体来讲,系统在每次调用时会自动生成原始链路结构日志,如此,可以通过读取或接收等方式来获取系统一次调用生成的所述原始链路结构日志,其中,所述原始链路结构日志中包括有多个节点的节点信息,其中,每个其他节点的节点信息包括该节点的编号和被调用的接口信息,其中,节点的编号用于标识其在链路结构日志中的位置,所述接口信息可以包括调用的包名、类名和方法参数个数等信息中的一个或多个信息。优选地,所述接口信息包括调用的包名、类名和方法参数个数。

具体地,由于所述原始链路结构日志是一次调用生成的,使得所述原始链路结构日志中的任意一个节点与其它节点均具有共同前缀。

例如,获取的所述原始链路结构日志具体如下:

0,com.alipay.pcardcore.common.util.cache.cachemanger.getkeystrategy(1)

0.1,com.alipay.pcardcore.common.util.drm.manager.drmresourcemanager.findresourcebyname(2)

0.1.1,com.alipay.imock.core.pool.contorller.envcontorller.isprod()

0.2,com.alipay.pcardcore.common.util.cache.cachemanger.getobject(3)

由上述可知,所述原始链路结构日志包含节点0、0.1、0.1.1和0.2这4个节点的节点信息,且这4个节点中任意一个节点与其它节点均具有共同前缀。

s104、从所述原始链路结构日志中提取出具有最大共同前缀的节点对,并从具有最大共同前缀的节点对中选取一个节点作为主节点;

在一种可选的实施方式中,可以将所述原始链路结构日志中的每两个节点的节点内容进行比对,得到比对结果;根据所述比对结果提取出具有最大共同前缀的节点对,然后从其中选择一个节点作为所述主节点。其中,可以随机从具有最大共同前缀的节点对中选取一个节点作为所述主节点,也可以根据预先设置的条件从具有最大共同前缀的节点对中选取符合所述条件的节点作为所述主节点,本申请不作具体限制。其中,所述预先设置的条件可以是长度大或长度小的一个节点作为所述主节点,也可以是节点靠前的一个节点作为所述主节点,本申请不作限制。

例如,0、0.1、0.1.1和0.2这4个节点为例,可以将0这个节点分别与0.1、0.1.1和0.2这3个节点进行比对,得到对比结果显示(0,0.1)具有的共同前缀的长度为33,(0,0.1.1)具有的共同前缀的长度为11,(0,0.2)具有的共同前缀的长度为55,由于55>33>11,从而根据所述对比结果可以提取出具有最大共同前缀的节点对为(0,0.2),然后从(0,0.2)中随机选取0.2作为主节点。

本申请实施例中,每个节点对包含两个节点。

在另一种可选的实施方式中,可以对所述原始链路结构日志按照方法签名进行排序;从所述排序后的所述原始链路结构日志中提取出具有最大共同前缀的节点对,并从具有最大共同前缀的节点对中选取一个节点作为主节点。

具体地,对所述原始链路结构日志按照方法签名进行排序之后,排序在最前面的两个节点具有最大共同前缀,从而可以排序在最前面的两个节点为具有最大共同前缀的节点对,然后从该节点对中选取一个节点作为主节点,通常在具有最大共同前缀的节点对中选取排序在前的节点作为所述主节点;当然,也可以在具有最大共同前缀的节点对中选取排序在后的节点作为所述主节点,本申请不作具体限制。下面具体以在具有最大共同前缀的节点对中选取排序在前的节点作为所述主节点为例。

例如,所述原始链路结构日志中的节点进行排序后的排列如下:

0,com.alipay.pcardcore.common.util.cache.cachemanger.getkeystrategy(1)

0.2,com.alipay.pcardcore.common.util.cache.cachemanger.getobject(3)

0.1,com.alipay.pcardcore.common.util.drm.manager.drmresourcemanager.findresourcebyname(2)

0.1.1,com.alipay.imock.core.pool.contorller.envcontorller.isprod()

由上述可知,排序在前面的两个节点(0,0.2)这对节点包含的共同前缀为“com.alipay.pcardcore.common.util.cache.cachemanger.get”共55个字符,而(0,0.1)这对节点包含的共同前缀为“com.alipay.pcardcore.common.util.”共33个字符;以及(0,0.1.1)这对节点包含的共同前缀为“com.alipay.”共11个字符,由于55>33>11,从而可以提取出具有最大共同前缀的节点对为(0,0.2),由于(0,0.2)中节点0排序在前,则选取0作为主节点。

s106、获取所述原始链路结构日志中除所述主节点之外的每个其他节点与所述主节点的共同前缀;

具体来讲,在通过步骤s104获取到所述主节点之后,然后将所述原始链路结构日志中的除所述主节点之外的每个其他节点与所述主节点进行前缀匹配,获取到每个其他节点与所述主节点的共同前缀。

例如,在从(0,0.2)中随机选取0.2作为主节点之后,将0、0.1、0.1.1这3个节点与0.2进行前缀匹配,得到(0.2,0)这对节点包含的共同前缀为“com.alipay.pcardcore.common.util.cache.cachemanger.get”共55个字符,而(0.2,0.1)这对节点包含的共同前缀为“com.alipay.pcardcore.common.util.”共33个字符;以及(0.2,0.1.1)这对节点包含的共同前缀为“com.alipay.”共11个字符。

在本申请的一种可选实施方式中,由于在对所述原始链路结构日志按照方法签名进行排序之后,排序后的所述原始链路结构日志中每相邻两个节点的共同前缀,因此,还可以通过获取每相邻两个节点的共同前缀作为该相邻两个节点中排序在后的节点与所述主节点的共同前缀。

例如,根据所述原始链路结构日志中的节点进行排序后的排列,得到相邻节点(0,0.2)包含的共同前缀为“com.alipay.pcardcore.common.util.cache.cachemanger.get”共55个字符,由于0.2排序在后且0为主节点,则可以确定(0,0.2)的共同前缀为上述55个字符;相应地,相邻节点(0.2,0.1)包含的共同前缀为“com.alipay.pcardcore.common.util.”共33个字符,由于0.1排序在后且0为主节点,则可以确定(0,0.1)的共同前缀为上述33个字符;以及相邻节点(0.1,0.1.1)包含的共同前缀为“com.alipay.”共11个字符,基于相同的理由,则可以确定(0,0.1.1)的共同前缀为上述11个字符。

s108、对所述获取的所述每个其他节点中与所述主节点的共同前缀进行压缩,得到压缩后的链路结构日志。

具体来讲,可以通过gzip等压缩方式对获取的每个其他节点与所述主节点的共同前缀进行压缩,得到压缩后的链路结构日志;由于仅对每个其他节点与所述主节点的共同前缀进行了压缩,而对所述主节点和每个其他节点中除该节点对应的共同前缀之外的内容没有进行压缩,如此,从压缩后的链路结构日志中能够得到所述主节点和每个其他节点中除该节点对应的共同前缀之外的内容;即,在所述压缩后的链路结构日志中所述主节点的全部内容和所述每个其他节点对应的共同前缀以外的内容均处于未压缩状态。

在一种可选的实施方式中,在将除所述主节点之外的每个其他节点与所述主节点具有的共同前缀进行压缩有的共同前缀进行压缩时,可以将每个其他节点与所述主节点具有的共同前缀的内容压缩为该节点对应的共同前缀的长度值。

例如,3对节点中具有的共同前缀分别为55>33>11,如此,挑选出具有最大共同前缀的节点对为55对应的节点对(0,0.2),以0或0.2作为主节点;若以0作为主节点,则对0.1、0.1.1和0.2对应的共同前缀进行压缩,使得0.1对应的共同前缀的内容压缩为(0,0.1)的共同前缀的长度为33;0.1.1对应的共同前缀的内容压缩为(0,0.1.1)的共同前缀的长度为11;0.1对应的共同前缀的内容压缩为(0,0.2)的共同前缀的长度为55;压缩后的链路结构日志具体如下所示:

0,com.alipay.pcardcore.common.util.cache.cachemanger.getkeystrategy(1)

0.2,{55}cachemanger.getobject(3)

0.1,{33}drm.manager.drmresourcemanager.findresourcebyname(2)

0.1.1,{11}imock.core.pool.contorller.envcontorller.isprod()

由上述可知,由于每个其他节点与所述主节点具有的共同前缀的内容压缩为该节点对应的共同前缀的长度值,如此,通过压缩后的长度值和所述主节点,即还原出每个其他节点的所有内容。

例如,以压缩后的链路结构日志中的0.2为例,由于0.2对应的共同前缀的压缩后的内容为55,则从主节点0的内容中选取前面55个字符的内容填充到0.2的内容中,从而将0.2,{55}cachemanger.getobject(3)还原为0.2,com.alipay.pcardcore.common.util.cache.cachemanger.getobject(3),对压缩后的链路结构日志中除所述主节点之外的每个其他节点执行上述操作,即可还原出每个其他节点的所有内容;由此可知,压缩后的链路结构日志在能够在确保一定压缩比的情况下同时具备可读性。

第二方面,基于同一发明构思,本说明书实施例提供一种链路结构日志的压缩装置,请参考图2,包括:

原始日志获取单元201,用于获取一次调用生成的原始链路结构日志,所述原始链路结构日志中包括多个节点的节点信息;

主节点选取单元202,用于从所述原始链路结构日志中提取出具有最大共同前缀的节点对,并从具有最大共同前缀的节点对中选取一个节点作为主节点;

共同前缀获取单元203,用于获取所述原始链路结构日志中除所述主节点之外的每个其他节点与所述主节点的共同前缀;

压缩单元204,用于对所述获取的所述每个其他节点中与所述主节点的共同前缀进行压缩,得到压缩后的链路结构日志。

在一种可选方式中,主节点选取单元202,还用于对所述原始链路结构日志按照方法签名进行排序,获取排序后的所述原始链路结构日志中最前面的两个节点作为所述出具有最大共同前缀的节点对。

在一种可选方式中,主节点选取单元202,还用于从排序后的所述原始链路结构日志中选取排序在前的节点为所述主节点。

在一种可选方式中,主节点选取单元202,还用于在通过执行所有线程来处理所述当前批处理的每个任务过程中,将所述原始链路结构日志中的每两个节点的节点内容进行比对,得到比对结果;根据所述比对结果提取出具有最大共同前缀的节点对。

在一种可选方式中,压缩单元204,还用于将每个其他节点与所述主节点具有的共同前缀的内容压缩为该节点对应的共同前缀的长度值。

第三方面,基于与前述实施例中链路结构日志的压缩方法同样的发明构思,本发明还提供一种服务器,如图3所示,包括存储器304、处理器302及存储在存储器304上并可在处理器302上运行的计算机程序,所述处理器302执行所述程序时实现前文所述批处理任务的处理方法的任一方法的步骤。

其中,在图3中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口305305在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。

第四方面,基于与前述实施例中链路结构日志的压缩方法的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述链路结构日志的压缩方法的任一方法的步骤。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。

显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。

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