具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到由于不同服务器记录、整理的实例大多会包含有大量的数据信息,导致实例本身数据量相对较为庞大。因此,在获取并根据不同服务器反馈的实例后,进行针对实例的数据处理(例如针对某个调用模块的调用信息的统计分析)势必会消耗掉相对较多的内存资源,影响系统整体的处理效率。而常见的压缩方法往往是直接对实例全部进行压缩,这样得到的压缩后的实例通常不再具有原来的数据结构。导致后续无法直接对这种压缩后的实例进行具体的数据处理。
正是注意到上述问题,本说明书考虑后续针对实例的数据处理往往是需要根据实例原本的数据结构,进行诸如聚合、统计等类型的数据处理。进一步的,又考虑到实例中的许多特征维度的标识信息(例如输入参数的数据信息、上游系统的信息等等)往往涉及的内容较多,数据量相对较大。且在同一个实例中,上述标识信息还会多次出现,进一步增加实例所包含的数据量。此外,在许多针对实例的数据处理,并不关注上述标识信息所表征的具体内容。
基于上述分析和考虑,本说明书提供了一种更有针对性的实例压缩方法,可以预先建立一个预设的分词编码库,进而可以利用上述预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例的数据量;同时由于上述压缩过程只对实例中的关键维度的标识信息进行压缩,不会改变实例本身的数据结构,即保持了实例本身的数据结构,从而能够在减少实例的内存消耗、提高处理效率的同时,又不会影响后续针对实例的数据处理。
本说明书实施方式提供一种实例的压缩方法,所述实例的压缩方法可以应用于包含有服务器的监控系统中。具体实施时,上述服务器可以获取得到业务系统中不同服务器自行记录、整理的实例,再按照以下程序对所获取的实例进行压缩处理:获取待压缩实例的关键维度的标识信息;根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元;根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元;对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。在按照上述方式完成对实例的压缩处理,得到压缩后的实例后,进一步可以利用上述压缩后的实例更加高效进行实例聚合、调用信息的统计等针对实例的数据处理。
在本实施方式中,所述服务器可以是一种应用于业务系统后台一侧,能够实现数据传输、数据处理等功能的后台业务服务器。具体的,所述服务器可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施方式中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在一个场景示例中,可以参阅图1所示,应用本说明书实施例提供的实例的压缩方法对从不同服务器上得到的实例先进行压缩处理,再利用压缩后的实例进行业务系统调用信息的统计分析,并根据分析结果确定业务系统上的数据调用是否存在异常。
在本场景示例中,业务系统所对应的网络平台每时每刻都会接收到大量由用户发起的业务调用请求。该业务系统后台具体可以包括有多个服务器,例如1号服务器、2号服务器等等,具体实施时,可以会通过后台的多个服务器响应网络平台上的业务调用请求,完成相应的业务调用。其中,业务系统中的多个服务器之间相互独立。
具体的,业务系统的服务器在响应业务调用请求,通过执行相应的数据处理完成业务调用的同时,还会记录下针对执行各个业务调用请求时的业务调用数据。例如,会记录下调用过程中涉及到的关键入参、关键出参、调用模块、上游系统、下游系统等信息数据作为上述业务调用数据并进行报错。进一步,服务器还会分别将自身所记录的大量的上述业务调用数据进行整理、聚合,得到多个实例,方便后续的使用和处理。
其中,上述实例具体可以理解为具有相同或相近特征的同类型的业务调用数据的集合,该集合中的业务调用数据都对应于基于同一种数据结构的代码文件。具体的,一种实例往往可以包含有一个或多个独立的业务调用数据,而同一实例中的不同的业务调用数据中表征调用形态的关键参数和调用结构相同或者相近(例如不同业务调用数据的关键参数和调用结构之间的差异程度小于或等于差异程度阈值)。
具体实施时,服务器可以根据业务调用数据中涉及的关键参数和调用结构,将属于同一类型的多个业务调用数据先进行聚合得到对应的实例。再以实例为处理单位,统计各个实例中所包含的业务调用数据的相关信息,得到各个实例中关注的调用信息。例如,统计各个实例中某个调用参数被调用的次数、调用耗时、调用成功率等信息,并将上述统计得到的调用信息记录一并在实例中,以便后续分析和使用。这样每一个服务器所记录整理的每一个实例中既包括了实例原本所包含的业务调用数据自身的信息内容,还包括了由服务器对实例中的业务调用数据的相关调用信息进行统计得到统计信息。可见业务系统的服务器记录整理的实例本身含有大量的信息数据,数据量也相对较大。
在本场景示例中,为了检测业务系统中的各种数据调用是否存在异常时,可以通过监控系统的服务器先获取业务系统中各个服务器自行整理记录的各种实例。服务器在从各个服务器上获取得到了多个实例后,考虑到各个实例本身的数据量相对较大、内存消耗较高,处理起来不方便,可以先对各个实例进行压缩处理。
具体实施时,服务器在获取了实例后,可以从实例中获取实例的关键维度的标识信息。
其中,上述关键维度的标识信息具体可以理解为实例中用于表征用于描述业务调用过程中所涉及到的关键参数(例如可以包括:关键入参、关键出参等)或调用结构(包括:调用模块、调用函数、上游系统、下游系统、调用接口等)的具体内容的信息数据。需要说明的是,上述关键维度的标识信息大多是在实例所对应的代码文件中用于定义、说明等用途的信息数据,是实例本身就包含了的一种信息数据,不包括由服务器对实例中的业务调用数据的相关调用信息进行统计得到的统计信息。还需要说明的是,许多关键维度的标识信息在实例所对应的代码文件中往往表现为相对较长的字符串,且会在一个实例中可能还会重复多次出现,会导致实例的数据量相对较大。而监控系统的服务器后续对实例进行针对性的数据处理时,往往并不关注上述关键维度的标识信息所表征的具体内容。
具体的,上述关键维度的标识信息可以包括以下至少之一:关键参数的参数信息、上游系统的名称、下游系统的名称、调用节点的名称等信息。当然,需要说明的是,上述所列举的关键维度的标识信息只是为了更好地说明本说明书实施方式。具体实施时,根据具体的应用场景和处理需要,还可以包括其他类型的信息,例如调用接口名称等,作为上述关键维度的标识信息。对此,本说明书不作限定。
为了获取得到实例的关键维度的标识信息,服务器可以先检索实例对应的代码文件,确定出代码文件中的预设的符号标识;再根据所述预设的符号标识,提取预设的符号标识所限定的区域中的字符数据作为实例的关键维度的标识信息;或者根据所述预设的符号标识,并结合与关键维度对应的维度指示词,提取相应的字符数据作为实例的关键维度的标识信息。具体实施时,可以根据待压缩实例所对应的代码文件具体的数据格式和所涉及的具体内容,设置对应合适的获取方式,来获取得到关键维度的标识信息。
例如,可以参阅图2所示,待压缩实例所对应的代码文件为json格式的数据,对应于json这种数据格式,服务器可以通过检索代码文件,先确定出第一种标识符号“{}”(大括号);再在第一种标识符号“{}”所限定区域内作进一步检索,确定出第二种标识符号““””(引号);进而可以在根据第二种标识符号,提取第二标识符号内的携带有维度指示词的字符串(例如key值)作为对应的关键维度的标识信息。例如,可以提取第二种标识符号内携带有维度指示词“CacheService”的字符串“DayDecisionAssetTypeDataCacheService”作为一种关键维度的标识信息。还可以提取第二种标识符号内携带有维度指示词“structure”的字符串“structureMd5”作为另一种维度指示词等。
需要说明的是,上述所列举的标识符号只是一种示意性说明。根据代码文件使用的具体格式,所检索的标识符号还可以是其他类型的标识符号,例如还可以是标识符号“[]”(方括号)等。对此,本说明书不作限定。
在按照上述方式,提取出实例的关键维度的标识信息后,可以根据预设的分词规则,对上述关键维度的标识信息进行分词处理,将字符串长度相对较长的字符串拆分成多个组合在一起的,字符长度相对较短的分词单元。进而可以以分词单元为压缩处理单元,对关键维度的标识信息进行压缩编码。
其中,上述分词单元具体可以理解为一种构成关键维度标识信息的字符组合。通常一个关键维度标识信息在代码文件中表现为一个字符串,而这个字符串具体又可以由一个或多个分词单元组成。其中,每一个分词单元可以包含有一个或多个字符。例如,“name”可以是字符串“name of prodCode”中的一个分词单元。
具体的,可以调用并预设的分词编码库,从实例的多个分词单元中确定出与匹配的分词单元,再根据上述预设的分词编码库对实例中的匹配的分词单元分别进行压缩编码,得到压缩后的实例。
其中,上述预设的分词编码库具体可以理解为一种预先建立的,包含有多个预设分词单元、预设压缩码,以及限定预设分词单元与预设压缩码之间的对应关系的对应规则的数据库。其中,上述分词编码库中的每一个预设分词单元分别与一个预设压缩码一一对应的。例如,分词编码库中的预设分词单元“prodCode”与预设压缩编码“011”是一一对应的。其中,上述预设压缩码具体可以理解为一种按照一定规则生成的,用于指示预设分词单元,且比所对应的预设分词单元更为简洁、占用数据量更少的字符结构。
具体实施时,参阅图3所示,服务器可以先根据上述预设的分词编码库对所获取的实例的分词单元进行分词单元匹配,确定出实例中的分词单元与预设的分词编码库中的预设分词单元相同(或者相近)的分词单元作为所述匹配的分词单元;再通过查询预设的分词编码库,确定出匹配的分词单元对应预设压缩码;再将所确定出的预设压缩码替换实例中对应的匹配的分词单元,从而对实例中的匹配的分词单元进行压缩编码。
例如,参阅图3所示,可以先通过查询预设的分词编码库,确定出匹配的分词单元“proCode”对应的预设压缩码为“011”;再将实例所对应的代码文件中的匹配的分词单元“proCode”都用预设压缩码“011”进行替换,从而完成了对实例中的分词单元“proCode”的压缩编码。
按照上述方式分别进行针对实例中其他匹配的分词单元的压缩编码,完成了对实例的压缩,得到了压缩后的实例。
需要说明的是,按照上述方法对实例进行压缩的过程中实际上只是针对性地对实例中的部分分词单元(即匹配的分词单元)进行了压缩处理,并没有对实例所对应的代码文件的数据结构进行压缩或改变,保留下了实例原本的数据结构。而上述被压缩的那部分分词单元通常数据量相对较大、在实例中多次重复出现;且不包含针对调用信息的统计信息,表征的往往是后续的针对实例的数据处理所不关注的内容。因此,通过上述压缩方式得到的压缩后的实例所包含的数据量得到了有效缩减,但数据结构并没有改变,不影响后续的数据处理。
服务器在按照上述方式对所获取的来自不同服务器的各种实例进行压缩后,得到多个对应的压缩后的实例,进而可以基于压缩后的实例进行针对实例的数据处理。
具体的,服务器可以先将同一类型的来自不同服务器的压缩后的实例进行合并,得到针对整个业务系统的多个合并后的实例。再根据合并后的实例的数据结构,提取并统计合并后的实例中所关注的特征维度,即提取所关注的特征维度所对应的指定压缩码;并根据指定压缩码和压缩后的实例,进行调用信息的统计。后续还可以根据调用信息的统计结果,对业务系统整体的业务调用情况,以及是否存在调用异常等进行判断和确定。
例如,服务器关注特征维度“proCode”在业务系统整体被调用的情况,可以从压缩后的实例中,提取“proCode”随对应的压缩码“011”作为指定压缩码。再检索并统计压缩后的实例中各个业务调用数据“011”这段字符串的数量,以及调用结果。由于上述处理针对的是数据量相对较小的压缩后的实例,因此,可以高效地统计得到关于“proCode”在业务系统上被调用的次数和调用成功率,即关于“proCode”的调用信息。
由上述场景示例可见,本说明书提供的实例的压缩方法,由于通过利用预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例本身包含的数据量;并且由于压缩过程只对实例中的关键维度的标识信息进行了压缩,保持了实例原本的数据结构,从而能既可以减少实例的内存消耗、提高处理效率,又不会影响后续针对实例的数据处理,达到降低资源占用量、提高数据处理性能的技术效果。
在另一个场景示例中,监控系统的服务器可以预先搜集各种类型的实例作为样本实例;再根据上述样本实例,通过训练建立预设的分词编码库。
具体的,参阅图4所示,服务器可以先搜集过去一个预设时间段内业务系统上各个服务器所记录整理的实例作为样本实例。再从上述样本实例中提取关键维度的标识信息作为样本标识信息。进而可以根据预设的分词规则,对所获取的样本标识信息进行分词处理的,得到多个分词单元,作为样本分词单元,即预设分词单元。进一步,可以根据预设的编码规则,对上述样本分词单元分别进行压缩编码,得到各个分词单元对应的压缩码,即预设压缩码。再根据样本分词单元与样本分词单元所对应的压缩码,分别确定各个样本分词单元与压缩码的对应关系,即得到了预设分词单元与预设压缩码之间的对应关系,建立了上述预设的分词编码库。
进一步,又考虑到一些预设分词单元可能在大多数实例中使用相对比较频繁,例如,在一个实例中会多次重复出现,为了进一步减少实例的数据量,可以在压缩编码的过程中,有针对性地将符合上述情况,即使用频率较高的预设分词单元所对应的压缩码设置得相对更简短一些,以进一步降低实例的内存消耗。
具体实施时,服务器在根据预设的编码规则,确定样本分词单元对应的压缩码时,可以先统计各个样本分词单元在实例中的出现频率;得到各个样本分词单元的出现频率。再对各个样本分词单元的出现频率进行归一化处理,得到各个样本分词单元的归一化后的频率,通过比较样本分词单元的归一化后的频率,可以在同一维度上更加准确地去比较各个样本分词单元的使用情况。再根据各个样本分词单元的归一化后的频率和样本分词单元自身的含义和结构,对该样本分词单元进行压缩编号,确定对应的压缩码。
具体的,例如,服务器可以根据样本分词单元归一化后的频率,确定样本分词单元对应的压缩码的长度(例如,对应的压缩码所包含的字符数量)。例如,可以将归一化后的频率较高的样本分词单元所对应的压缩码的长度设置得相对较短,将归一化后的频率较低的样本分词单元对应的压缩码的长度设置得相对较长。再根据所确定的压缩码的长度,结合该样本分词单元自身的含义和结构,生成用于指示样本分词单元的字符串,作为该样本分词单元对应的压缩码。
例如,对于样本分词单元“proCode”和“com”,其中,“proCode”的归一化后的频率为2.3%,而“com”归一化后的频率为“6.6%”,即“proCode”的归一化后的频率相对于“com”归一化后的频率更低,即“com”相对于“proCode”在实例中使用得更为频繁。这时,根据两种样本分词单元的归一化后的频率的高低,可以将“proCode”所对应的压缩码的长度设置得相对较长,例如,设置为3个字符长度。而将使用相对更为频繁的“com”所对应的压缩码的长度设置得相对“proCode”的更短,例如,设置为2个字符长度。进而可以根据上述确定的样本分词单元的压缩码长度和样本分词单元自身语义和结构进行有区分、有针对性性的编码。例如,可以将“proCode”对应的压缩码确定为“011”这个包含有3个字符的字符串。而将“com”对应的压缩码确定为“11”这个只包含有2个字符的字符串。这样后续在基于上述样本分词单元和对应的压缩码对待压缩的实例中的分词单元“com”和“proCode”分别进行压缩时,可以用相对“proCode”对应的压缩码更短的压缩码来替换掉实例中出现更为频繁的分词单元“com”,从而使得按照上述方式进行压缩后得到压缩后的实例,相对不作区分、没有针对性进行压缩得到的压缩后的实例,所包含的数据量相对更小,对内存消耗相对更少,进一步提高了处理效率。
在另一个场景示例中,服务器如果需要得到完整的实例,还可以根据预设的分词编码库对压缩后的实例快速地进行解压处理,从而可以获取得到解压后的完整的实例。
其中,上述解压处理可以理解为一种压缩实例的逆向处理。具体实施时,参阅图5所示,服务器可以先从待解压实例(即压缩后的实例)中提取得到待解压实例中的压缩码;再根据预设的分词编码库,确定出所述压缩码对应的分词单元;根据所述压缩码对应的分词单元,对所述待解压实例中的压缩码进行解压还原,得到解压后的实例。从而可以高效地对待解压实例进行解压处理,得到解压还原后完整的实例。
由上述场景示例可见,本说明书提供的实例的压缩方法,由于通过利用预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例本身包含的数据量;并且由于压缩过程只对实例中的关键维度的标识信息进行了压缩,保持了实例原本的数据结构,从而能既可以减少实例的内存消耗、提高处理效率,又不会影响后续针对实例的数据处理,达到降低资源占用量、提高数据处理性能的技术效果;还通过根据分词单元的出现频率,确定分词单元所对应的压缩码的长度,有区分地对实例中的关键维度的标识信息进行压缩编码,有针对性地将使用频率较高的关键维度的标识信息压缩为相对较短的字符串,进一步减少了实例的内存消耗,提高了实例处理的效率。
参阅图6所示,本说明书实施例提供了一种实例的压缩方法,其中,该方法具体可以应用于负责对业务系统进行监控的服务器一侧。具体实施时,该方法可以包括以下内容:
S61:获取待压缩实例的关键维度的标识信息。
在本实施方式中,上述实例具体可以理解为具有相同或相近特征的同类型的业务调用数据的集合,该集合中的业务调用数据都对应于基于同一种数据结构的代码文件。具体的,一种实例往往可以包含有一个或多个独立的业务调用数据,而同一实例中的不同的业务调用数据中表征调用形态的关键参数和调用结构相同或者相近。
在本实施方式中,上述关键维度的标识信息体可以理解为实例中用于表征用于描述业务调用过程中所涉及到的关键参数(包括:关键入参、关键出参等)或调用结构(包括:调用模块、调用函数、上游系统、下游系统、调用接口等)的具体内容的信息数据。需要说明的是,上述关键维度的标识信息大多是在实例所对应的代码文件中用于定义、说明等用途的信息数据,是实例本身就包含了的一种信息数据,不包括由服务器对实例中的业务调用数据的相关调用信息进行统计得到的统计信息。还需要说明的是,许多关键维度的标识信息在实例所对应的代码文件中往往表现为相对较长的字符串,且会在一个实例中可能还会重复多次出现,会导致实例的数据量相对较大。而监控系统的服务器后续对实例进行针对性的数据处理时,往往并不关注上述关键维度的标识信息所表征的具体内容。
在本实施方式,上述关键维度的标识信息可以进一步细化,包括以下至少之一:关键参数的参数信息、上游系统的名称、下游系统的名称、调用节点的名称等信息。当然,需要说明的是,上述所列举的关键维度的标识信息只是为了更好地说明本说明书实施方式。具体实施时,根据具体的应用场景和处理需要,还可以包括其他类型的信息,例如调用接口名称等,作为上述关键维度的标识信息。对此,本说明书不作限定。
在一个实施方式中,上述获取待压缩实例的关键维度的标识信息,具体实施时,可以包括以下内容:获取待压缩实例对应的代码文件;检索所述待压缩实例对应的代码文件中的预设符号标识;根据所述预设符号标识,提取对应的字符数据作为所述待压缩实例的关键维度的标识信息。
在本实施方式,上述根据所述预设符号标识,提取对应的字符数据作为所述待压缩实例的关键维度的标识信息,具体实施时,可以包括:根据所述预设的符号标识,提取预设的符号标识所限定的区域内的字符数据作为实例的关键维度的标识信息;或者根据所述预设的符号标识,并结合与关键维度对应的维度指示词,提取相应的字符数据(例如包含有对应的维度指示词的字符数据)作为实例的关键维度的标识信息。
在本实施方式中,上述预设符号标识的具体类型和待压缩实例对应的代码文件的数据格式有关。不同数据格式的代码文件对应的预设符号标识可能会存在差异。例如,对于json格式的代码文件,对应的预设的符号标识可以包括两种,分别为:“{}”和““””。服务器具体实施时,可以通过检索代码文件,先确定出第一种标识符号“{}”;再在第一种标识符号“{}”所限定区域内作进一步检索,确定出第二种标识符号““””;进而可以在根据第二种标识符号,提取第二标识符号内的携带有与关键维度对应的维度指示词的字符串,作为对应的关键维度的标识信息。当然,需要说明的是,上述所列举的标识符号只是一种示意性说明。根据代码文件使用的具体格式,所检索的标识符号还可以是其他类型的标识符号,例如还可以是标识符号“[]”等。对此,本说明书不作限定。
S63:根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元。
在本实施方式中,上述分词单元具体可以理解为一种构成关键维度标识信息的字符组合。通常一个关键维度标识信息在代码文件中表现为一个字符串,而这个字符串具体又可以由一个或多个分词单元组成。其中,每一个分词单元可以包含有一个或多个字符。例如,“name”可以是字符串“name ofprodCode”中的一个分词单元。
在本实施方式中,上述预设的分词规则具体可以理解为一种将用于表征关键维度标识信息的字符串拆分为多个分词单元的字符串拆分规则。具体实施时,根据具体情况可以选择合适的字符串拆分规则作为上述预设的分词规则。对此,本说明书不作限定。
在本实施方式中,根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元,具体实施时,可以包括以下内容:按照预设的分词规则,将表征关键维度的标识信息的字符串拆分成一个或多个字符组合,其中,每一个字符组合对应一个分词单元。
S65:根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元。
在本实施方式中,上述预设的分词编码库具体可以理解为一种预先建立的,包含有多个预设分词单元、预设压缩码,以及限定预设分词单元与预设压缩码之间的对应关系的对应规则的数据库。其中,上述分词编码库中的每一个预设分词单元分别与一个预设压缩码一一对应的。上述预设压缩码具体可以理解为一种按照一定规则生成的,能够指示预设分词单元,且比所对应的预设分词单元更加简洁、占用数据量更少的字符结构。
在本实施方式中,上述匹配的分词单元具体可以理解为基于待压缩实例得到的分词单元中预设的分词编码库中的预设分词单元相同,或者相近(例如,差异程度小于预设的差异程度阈值)的分词单元。
在本实施方式中,上述根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元,具体实施时,可以包括以下内容:调用预设的分词编码库;检索所述预设的分词编码库,并从待压缩实例的多个分词单元中确定出与预设分词单元相同或相近的分词单元作为所述匹配的分词单元。
S67:对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。
在本实施方式中,上述对所述待压缩实例中的匹配的分词单元进行压缩编码,具体实施时,可以包括以下内容:根据预设的分词编码库,将待压缩实例对应的代码文件中的匹配的分词单元替换为与所述匹配的分词单元对应的预设压缩码。
例如,可以将待压缩实例所对应的代码文件中数据量相对较多的分词单元“proCode”用对应的相对更简短的预设压缩码“011”进行替换,从而完成了对待压缩实例中的分词单元“proCode”的压缩编码。当然,需要说明的是,上述所列举的压缩编码方式只是一种示意性说明。具体实施时,根据具体情况和处理要求,还可以采用其他合适的方式进行压缩编码。对此,本说明书不作限定。
在本实施方式中,具体实施时,可以按照上述方式将待压缩实例所对应的代码文件中的多个匹配的分词单元分别进行压缩编码,从而将原实例中数据量相对较大的关键维度的标识信息进行了较为有效的压缩,从而得到了压缩后的实例。
在本实施方式中,上述压缩后的实例由于原先数据量相对较大的关键维度的标识信息被以分词单元为处理单位,用较为简短的预设压缩码进行替换后,使得实例所包含的数据量减少,降低了针对实例处理的内存消耗。同时,又由于上述压缩过程只对实例中的关键维度的标识信息进行压缩,没有改变实例本身的数据结构,因此保留了实例原本的结构特点,不影响后续针对实例的数据处理。
在一个实施方式中,在得到压缩后的实例后,所述方法还可以包括以下内容:根据压缩后的实例中的关键参数和调用结构所对应的预设压缩码对同一类型的压缩后的实例进行合并,得到合并后的实例。也可以包括:根据压缩后的实例,提取用于指示所关注维度的指定压缩码;根据指定压缩码对压缩后的实例中的调用数据进行统计,得到关于所关注维度的调用信息统计;进而后续可以根据上述调用信息统计,对业务系统具体调用情况进行确定,或者检测业务系统是否存在异常等。当然,需要说明的是,上述所列举的对针对压缩后的实例的处理方式只是一种示意性说明。具体实施时,根据具体的应用场景和使用要求,还可以引入其他的处理方式,对压缩后的实例进行处理。对此,本说明书不作限定。
由上可见,本说明书实施例提供的实例的压缩方法,由于通过利用预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例本身包含的数据量;并且由于压缩过程只对实例中的关键维度的标识信息进行了压缩,保持了实例原本的数据结构,从而解决了现有的压缩方法会破坏实例的数据结构,导致无法直接利用压缩后的实例的技术问题,达到能既可以减少实例的内存消耗、提高处理效率,又不会影响后续针对实例的数据处理的技术效果,进而降低了针对实例的处理过程中的资源占用量、提高数据处理性能。
在一个实施方式中,所述关键维度的标识信息具体可以包括以下至少之一:关键参数的参数信息、上游系统的名称、下游系统的名称、调用节点的名称等。当然,需要说明的是,上述所列举的关键维度的标识信息只是为了更好地说明本说明书实施方式。具体实施时,根据具体的应用场景和处理需要,还可以引入其他类型的参数信息,例如调用函数的名称、调用接口的参数信息等等作为上述关键维度的标识信息。对此,本说明书不作限定。
在本实施方式中,上述关键参数具体可以理解为一种与业务调用关联性较强的参数数据。具体的,上述关键参数至少可以包括:关键入参(可以理解为调用过程输入的初始数据)和关键出参(可以理解为调用过程输出的结果数据)等参数数据。其中,上述关键陈述的参数信息具体可以是关键参数的名称,也可以是关键参数的定义或说明,还可以是对关键参数使用的约束条件等等。对此,本说明书不作限定。
在一个实施方式中,所述预设的分词编码库具体可以按照以下方式建立:获取多个实例作为样本实例;从所述样本实例中提取关键维度的标识信息,作为样本标识信息;根据预设的分词规则,对所述样本标识信息进行分词处理,得到多个样本分词单元;根据预设的编码规则,确定样本分词单元对应的压缩码;根据所述样本分词单元和与所述样本分词单元对应的压缩码,建立所述预设的分词编码库。
在本实施方式中,上述样本分词单元即为预设的分词编码库中的预设分词单元,上述样本分词单元对应的压缩码记为预设的分词编码库中的预设压缩码。
在本实施方式中,上述预设的压缩码具体可以为由一个或多个字符按照一定规则组合生成的,英语指示对应的预设分词单元的字符组。
在本实施方式中,上述预设的分词编码库具体可以理解为一种预先建立的,包含有多个预设分词单元、预设压缩码,以及限定预设分词单元与预设压缩码之间的对应关系的对应规则的数据库。需要说明的是,在上述分词编码库中,每一个预设分词单元分别与一个预设压缩码一一对应的。
在一个实施方式中,上述根据预设的编码规则,确定样本分词单元对应的压缩码,具体实施时,可以包括以下内容:统计所述样本分词单元在所述样本实例中的出现频率;根据所述样本分词单元在样本实例中的出现频率,确定样本分词单元对应的压缩码。
在本实施方式中,进一步考虑到在样本实例中有的样本分词单元使用较为频繁,可能在多个实例中多次重复出现。因此,在所有样本分词单元对应的压缩码的长度相等的情况下,这类使用较为频繁的样本分词单元,相对于其他使用不太频繁的样本分词单元在实例中所包含总的数据量显然相对更大。为了进一步减小压缩后的实例整体所包含的数据量,进一步降低压缩后实例的内存消耗,可以对使用相对较为频繁的样本分词单元和使用相对不频繁的样本分词单元,进行区分处理。具体的,在编码时,可以有针对性地将使用相对较为频繁的样本分词单元所对应的压缩码的长度设置得相对较短,以减少总的数据量。
在一个实施方式中,上述根据所述样本分词单元在样本实例中的出现频率,确定样本分词单元对应的压缩码,具体实施时,可以包括以下内容:根据所述样本分词单元在样本实例中的出现频率,确定所述样本分词单元对应的压缩码的长度;根据所述样本分词单元对应的压缩码的长度,生成用于指示样本分词单元的字符串,作为与所述样本分词单元对应的压缩码。
在本实施方式中,上述压缩码的长度具体可以理解为作为压缩码的字符组中的字符的数量。
在本实施方式中,根据所述样本分词单元在样本实例中的出现频率,确定所述样本分词单元对应的压缩码的长度,具体实施时,可以包括:当样本分词单元对应的出现频率较高时,例如,大于第一阈值时,可以将样本分词单元对应的压缩码的长度设置得相对较短,例如,小于第一字符数量;当样本分词单元对应的出现频率较低时,例如,小于第二阈值时,可以将样本分词单元对应的压缩码的长度设置得相对较长。例如,大于等于第一字符数量等。
在本实施方式中,在确定了样本分词单元对应的压缩码的长度后,进一步可以按照所确定的压缩码的长度,结合所述样本分词单元所表征的含义和/或分词单元的结构,生成用于指示该样本分词单元的更为简短的字符串作为该样本分词单元对应的压缩码。
在一个实施方式中,为了能够更准确地确定样本分词单元相对于其他样本分词单元的使用频繁程度,在根据所述样本分词单元在样本实例中的出现频率,确定所述样本分词单元对应的压缩码的长度之前,具体实施时,所述方法还可以包括以下内容:对所述样本分词单元在样本实例中的出现频率进行归一化处理。
在本实施方式中,通过归一化处理可以将不同样本分词单元在不同实例中的出现频率统一到同一个衡量体系中进行比较,从而能够更加客观、准确地反映出各个样本分词单元被使用的频繁程度,有助于更加精确地找到使用较为频繁的样本分词单元,有针对性地进行处理。
在一个实施方式中,具体实施时,也可以将赫夫曼编码作为预设的编码规则,根据该编码规则确定预设分词单元所对应的预设压缩码。
在本实施方式中,上述赫夫曼编码(Huffman Coding,也称哈夫曼编码或霍夫曼编码),是一种可变字长编码(VLC)的编码方式。具体实施时,可以根据预设分词单元所对应的字符出现的概率来构造异字头的平均长度最短的压缩码。当然,需要说明的是,上述所列举的赫夫曼编码只是一种示意性说明。具体实施时,根据具体情况也可以采用其他合适的编码方式(例如二进制编码等)作为预设的编码规则,确定预设分词单元所对应的预设压缩码。对此,本说明书不作限定。
在一个实施方式中,在对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例之后,所述方法具体实施时,还可以包括以下内容:从所述压缩后的实例中提取指定压缩码;根据所述指定压缩码和所述压缩后的实例,进行调用信息的统计。
在本实施方式中,上述指定压缩码具体可以理解为与所关注的特征维度对应的压缩码。例如,关注的是业务系统中调用模块A被调用情况,即所关注的特征维度为调用模块A,这时可以将与调用模块A对应的压缩码作为指定压缩码,并从压缩后的实例中检索提取上述指定压缩码。
在本实施方式中,需要说明的是,上述压缩后的实例由于只对数据量相对较大的关键维度的标识信息进行了压缩处理,而对实例本身的数据结构没有进行变更或者破坏。因此,不会影响针对实例的数据处理。具体的,例如,可以将不同服务器上得到压缩后的实例中记录的用于表征指定压缩码被调用次数的调用信息进行合并统计,得到该指定压缩码所对应的特征维度在业务系统中整体的调用信息,完成相关的调用信息的统计。也可以细化检索不同压缩后的实例中所包含各个业务调用数据中指定压缩码所指示的所关注的特征维度,重新进行统计,得到关于该特征维度在业务系统中纵的调用信息,完成了相关调用信息的统计等。当然,需要说明的是,上述所列举的针对压缩后的实例的数据处理方式只是一种示意性说明。具体实施时,根据具体的应用场景和处理要求,还可以采用其他合适的处理方式对压缩后的实例进行对应的数据处理。对此,本说明书不作限定。
由上可见,本说明书实施例提供的实例的压缩方法,由于通过利用预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例本身包含的数据量;并且由于压缩过程只对实例中的关键维度的标识信息进行了压缩,保持了实例原本的数据结构,从而解决了现有的压缩方法会破坏实例的数据结构,导致无法直接利用压缩后的实例的技术问题,达到能既可以减少实例的内存消耗、提高处理效率,又不会影响后续针对实例的数据处理的技术效果,进而降低了针对实例的处理过程中的资源占用量、提高数据处理性能;还通过根据分词单元的出现频率,确定分词单元所对应的压缩码的长度,有区分地对实例中的关键维度的标识信息进行压缩编码,有针对性地将使用频率较高的关键维度的标识信息压缩为相对较短的字符串,进一步减少了实例的内存消耗,提高了实例处理的效率。
参阅图7所示,本说明书实施例还提供了一种实例的解压方法,以对压缩后的实例进行解压还原,得到完整的实例。其中,该方法具体实施时,可以包括以下内容:
S71:提取待解压实例中的压缩码;
S73:根据预设的分词编码库,确定出所述压缩码对应的分词单元;
S75:根据所述压缩码对应的分词单元,对所述待解压实例中的压缩码进行解压还原,得到解压后的实例。
在本实施方式中,上述待解压实例具体可以理解为通过上述提供的实例的压缩方法进行压缩处理后得到实例。
在本实施方式中,上述解压后的实例具体可以理解为包含有完整的关键维度的标识信息的实例。
在本实施方式中,如果需要获取原本完整的实例,可以对上述待解压实例进行解压处理。上述解压处理具体可以理解为与压缩处理对应的逆处理。
在本实施方式中,具体实施时,可以先从待解压的实例中提取出压缩码;再根据预设的分词编码库确定出压缩码对应的分词单元,再根据上述压缩码对应的分词单元,对待解压实例中压缩码进行解压还原,得到解压后的实例。具体实施时,可以利用与压缩码对应的分词单元替换掉待解压实例中的压缩码,从而还原得到原本完整的关键维度的标识信息,完成对压缩码的解压还原。
在本实施方式中,由于待解压实例(即压缩后的实例)相对于原本的实例,只有关键维度的标识信息被压缩了,实例的数据结构等并没有改变。因此,解压时,只要解压还原出实例中原本的关键维度的标识信息,便完成的对该待解压实例的解压处理,得到了符合要求的解压后的实例。
由上可见,本说明书实施例提供的实例的解压方法,由于只需要提取并针对待解压实例中的压缩码进行解压还原,即可以得到解压还原后完整的实例,而不需要对实例的数据结构进行解压还原,从而简化了解压过程,提高了解压效率。
本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取待压缩实例的关键维度的标识信息;根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元;根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元;对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。
为了能够更加准确地完成上述指令,参阅图8所示,本说明书还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口801、处理器802以及存储器803,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口801,具体可以用于获取待压缩实例。
所述处理器802,具体可以用于获取待压缩实例的关键维度的标识信息;根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元;根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元;对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。
所述存储器803,具体可以用于存储经网络通信端口801获取的待压缩实例,以及处理器802所使用的相应的指令程序。
在本实施方式中,所述网络通信端口801可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施方式中,所述处理器802可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施方式中,所述存储器803可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述实例的压缩方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取待压缩实例的关键维度的标识信息;根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元;根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元;对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图9所示,在软件层面上,本说明书实施例还提供了一种实例的压缩装置,该装置具体可以包括以下的结构模块:
获取模块91,具体可以用于获取待压缩实例的关键维度的标识信息;
分词模块92,具体可以用于根据预设的分词规则,对所述关键维度的标识信息进行分词处理,得到多个分词单元;
第一确定模块93,具体可以用于根据预设的分词编码库,从所述多个分词单元中确定出匹配的分词单元;
压缩模块94,具体可以用于对所述待压缩实例中的匹配的分词单元进行压缩编码,得到压缩后的实例。
在一个实施方式中,所述关键维度的标识信息具体可以包括以下至少之一:关键参数的参数信息、上游系统的名称、下游系统的名称、调用节点的名称等。当然,需要说明的是,上述所列举的关键维度的标识信息只是一种示意性说明。具体实施时,根据具体情况,还可以引入其他类型的参数信息,作为上述关键维度的标识信息。对此,本说明书不作限定。
在一个实施方式中,所述装置具体还可以包括建立模块,其中,所述建立模块具体可以包括以下结构单元:
获取单元,具体可以用于获取多个实例作为样本实例;
提取单元,具体可以用于从所述样本实例中提取关键维度的标识信息,作为样本标识信息;
分词单元,具体可以用于根据预设的分词规则,对所述样本标识信息进行分词处理,得到多个样本分词单元;
确定单元,具体可以用于根据预设的编码规则,确定样本分词单元对应的压缩码;
建立单元,具体可以用于根据所述样本分词单元和与所述样本分词单元对应的压缩码,建立所述预设的分词编码库。
在一个实施方式中,所述确定单元具体可以包括以下结构子单元:
统计子单元,具体可以用于统计所述样本分词单元在所述样本实例中的出现频率;
确定子单元,具体可以用于根据所述样本分词单元在样本实例中的出现频率,确定样本分词单元对应的压缩码。
在一个实施方式中,所述确定子单元具体可以用于根据所述样本分词单元在样本实例中的出现频率,确定所述样本分词单元对应的压缩码的长度;并根据所述样本分词单元对应的压缩码的长度,生成用于指示样本分词单元的字符串,作为与所述样本分词单元对应的压缩码。
在一个实施方式中,所述建立模块具体还可以包括归一化单元,具体可以用于对所述样本分词单元在样本实例中的出现频率进行归一化处理。
在一个实施方式中,所述装置具体还可以包括统计模块,具体可以用于从所述压缩后的实例中提取指定压缩码;根据所述指定压缩码和所述压缩后的实例,进行调用信息的统计。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的实例的压缩装置,由于通过第一确定模块和压缩模块利用预设的分词编码库将实例中原本数据量相对较大的关键维度的标识信息以分词单元为单位进行压缩编码,减少了实例本身包含的数据量;并且由于压缩码模块在进行压缩过程只对实例中的关键维度的标识信息进行了压缩,保持了实例原本的数据结构,从而解决了现有的压缩方法会破坏实例的数据结构,导致无法直接利用压缩后的实例的技术问题,达到能既可以减少实例的内存消耗、提高处理效率,又不会影响后续针对实例的数据处理的技术效果,进而降低了针对实例的处理过程中的资源占用量、提高数据处理性能;还通过建立模块根据分词单元的出现频率,确定分词单元所对应的压缩码的长度,有区分地对实例中的关键维度的标识信息进行压缩编码,有针对性地将使用频率较高的关键维度的标识信息压缩为相对较短的字符串,进一步减少了实例的内存消耗,提高了实例处理的效率。
参阅图10所示,在软件层面上,本说明书实施例还提供了一种实例的解压装置,该装置具体可以包括以下的结构模块:
提取模块101,具体可以用于提取待解压实例中的压缩码;
第二确定模块102,具体可以用于根据预设的分词编码库,确定出所述压缩码对应的分词单元;
解压模块103,具体可以用于根据所述压缩码对应的分词单元,对所述待解压实例中的压缩码进行解压还原,得到解压后的实例。
由上可见,本说明书实施例提供的实例的解压装置,由于只需要提取并针对待解压实例中的压缩码进行解压还原,即可以得到解压还原后完整的实例,而不需要对实例的数据结构进行解压还原,从而简化了解压过程,提高了解压效率。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。