一种链路数据校验方法及装置与流程

文档序号:12034605阅读:170来源:国知局
一种链路数据校验方法及装置与流程
本申请涉及计算机应用
技术领域
,尤其涉及一种链路数据校验方法及装置。
背景技术
:一个复杂的计算机系统往往由多个功能子模块组成,这些子模块之间存在复杂的调用关系,这些复杂的调用关系构成了调用链路,调用链路上任何一个环节的数据质量出现问题都有可能导致整个系统的故障,因此有必要对调用链路上的数据质量进行校验。现有的调用链路数据校验方案主要包括两种:第一种方案是针对每个子模块分别开发数据校验规则,并将数据校验规则的实现代码嵌入到各个子模块的实现代码中,当某个子模块的数据质量出现问题时,可以实时将报警信息写入日志文件或者发送给监控平台,这种方案的问题在于校验规则分散于各个子模块中,不便于集中管理,而且对业务代码的侵入性太强,当校验规则发生变化时,需要对整个系统的业务代码都进行更新,从而会对正常业务造成影响。另一种方案是将调用链路上的调用数据(包括每个子模块的入口参数和出口参数)集中写入校验数据库,并且定期利用校验规则对校验数据库中的数据进行校验,与前一种方案相比,该方案实现了校验功能与系统基本业务功能的解耦,可以对校验规则进行集中管理,而且校验规则的变化不会对正常业务造成影响,但是校验的实时性相对较差,链路数据出现了异常后,需要延迟一段时间后才能被检测到。此外,上述方案存在的一个共同问题在于:无论用哪种方案实现数据校验,其校验规则都需要以人工方式进行编写,由于校验规则直接受到业务影响,因 此当实际业务频繁变化时,对校验规则的更新维护需要投入大量的人力和时间开销,整体处理效率也难以保证。技术实现要素:针对上述技术问题,本申请提供一种链路数据校验方法及装置,技术方案如下:一种链路数据校验方法,该方法包括:获得目标调用链路上的样本数据集,所述样本数据集的每条数据包含一次调用过程中各个模块的输入数据及输出数据;利用fp-growth算法查找所述样本数据集中的频繁模式;根据所查找到的频繁模式生成校验规则;利用生成的校验规则对所述目标调用链路上的数据进行校验。一种链路数据校验装置,该装置包括:数据获得模块,用于获得目标调用链路上的样本数据集,所述样本数据集的每条数据包含一次调用过程中各个模块的输入数据及输出数据;频繁模式查找模块,用于利用fp-growth算法查找所述样本数据集中的频繁模式;规则生成模块,用于根据所查找到的频繁模式生成校验规则;校验执行模块,用于利用生成的校验规则对所述目标调用链路上的数据进行校验。与现有技术方案相比,本申请所提供的技术方案至少具有以下优势:首先,实现了数据校验功能与系统基本业务功能的解耦,校验规则的变化不会对正常业务造成影响,可以对校验规则进行集中管理,而且校验规则的变化不会对正常业务造成影响;其次,规则生成之后可以立刻部署并生效,并且实时对链路数据进行校验;最后,本申请方案利用关联规则挖掘算法,自动生成校验规则,相对于人工编写校验规则的方式而言,规则生成的效率及投入开销都有明显的改善。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1是本申请的系统架构示意图;图2是本申请的链路数据校验规则生成方法的流程示意图;图3是本申请实施例的调用关系模型示意图;图4是本申请实施例的fp-tree示意图;图5是本申请的链路数据校验装置的结构示意图。具体实施方式为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。图1所示为本申请方案的整体架构示意图,其中“应用系统”为数据校验的目标系统,该系统中包含多个模块并且形成调用链路。“数据校验平台”主要包括三部分:调用关系模型引擎:作用是根据应用系统模块间的实际调用关系,生成调用关系模型,并将该模型提供给规则生成引擎。根据实际的应用需求,一个物理系统可能对应多种逻辑调用关系模型,这种情况下,可以允许用户自定义选 择需要针对哪种调用关系模型生成数据校验规则。规则生成引擎:作用是根据调用关系模型以及规则挖掘算法自动生成数据校验规则。规则执行引擎:作用是执行规则生成引擎所生成的数据校验规则,如果发现数据异常则做相应的处理,例如对异常数据进行记录、报警等等。另外,数据校验平台利用数据拦截技术获取应用各个模块的输入数据及输出数据,获取的数据可以存入缓存中,在不同阶段,所获取到的数据具有不同的作用:在规则生成阶段:通过数据拦截技术获取应用系统正常运行时各个模块的输入/输出数据以形成训练样本,然后由规则生成引擎对训练样本利用规则挖掘算法,自动生成校验规则。这里所说的“系统正常运行”可以通过多种手段保证,例如在系统初始化时、网络畅通时获取数据形成训练样本、等等,本申请对如何在规则生成阶段保证系统正常运行并不进行限定。在规则执行阶段:通过数据拦截技术获取实时获取系统在执行业务功能时各个模块的输入/输出数据,由规则执行引擎利用校验规则对实时获取到的数据进行校验并得到校验结果。可见,本申请所提供的方案,无论是在规则生成阶段还是在规则执行阶段,都不会影响到业务系统的正常运行,而且校验规则集中在数据校验平台中,便于对规则进行集中管理。另外,规则生成引擎生成规则后,规则执行引擎可以立刻执行这些规则,实现对链路数据的实时校验,以便及时发现数据质量问题。当然,本申请方案的一个重要特点还在于利用关联规则挖掘算法自动生成校验规则,以改善校验规则生成的效率及投入开销。下面将对本申请的校验规则生成方法做进一步的详细说明。图2所示,为本申请提供的校验规则生成方法的流程图,该方法可以包括以下步骤:s101,获得目标调用链路上的样本数据集;s102,利用fp-growth算法查找所述样本数据集中的频繁模式;s103,根据所查找到的频繁模式生成校验规则。fp-growth算法(frequentpattern-growth)使用了一种紧缩的数据结构来存储查找频繁项集所需要的全部信息,其将提供频繁项集的数据库压缩到一棵频繁模式树(fp-tree),但仍保留项集关联信息。fp-growth算法的输入包括两部分:事务数据库以及最小支持度数阈值minsup;输出为频繁模式的完全集。结合本申请方案,事务数据库对应前述的样本数据集,样本数据集中包括多条数据,其中每条数据对应一次链路调用过程,每条数据包含一次调用过程中,调用链路上各个模块的输入数据及输出数据;最小支持度数阈值minsup则可以根据实际需求进行设定。为了简化问题描述,需要假设样本数据集中的数值(对应于调用关系模型中的出参和入参)都是二元的(1或0)。对于非二元形式的数值可以通过离散化和/或二元化算法进行处理,使其转换为二元形式,具体的二元化算法本申请并不需要进行限定。对于一条校验规则而言,其基本的形式为:前提条件(precondition)→结论(result)例如,对于模块b而言,假设当其输入数据值为1时,输出数据值必为1,则对应的推导规则可以表示为:(b_in==1)→(b_out==1)进一步将上述规则简化表示为:b_in→b_out当存在复合条件时,可以表示为更复杂的推导规则,例如以下规则:(b_in∩c_in)→b_out表示当模块b和模块c的输入数据均为1时,则模块b的输出数据必为1。下面将结合一个具体的实例,对本申请的校验规则生成方法进行说明,假设目标系统的调用关系模型如图3所示。根据s101,利用数据拦截技术获得在系统正常运行状态下各个模块的输入数据及输出数据,形成数据样本集。假设选取了8次链路调用过程中的各模块输入/输出数据,经过规范处理(离散化及二元化)后,生成包含数据样本集如 表1所示,该数据样本集将作为事务数据库输入fp-growth算法。tidb_inb_outc_inc_outd_ind_out10100002001110311110141110015100001610000171100018111001出现频次:654216表1对事务数据库中的全部事务进行扫描,对每个单项数据的有效(取值为1)的出现频次(支持度数)进行统计,然后对每条样本数据中的各项数据分别按照支持度数输入进行排序、并删除频次小于minsup的单项数值,仅保留频繁项集。在本实施例中,将最小支持度数阈值minsup设置为4。则将出现频次小于4的c_out和d_in删除,将剩余的数据按照出现频次重新排序后,得到的频繁项集如表2所示:tid排序后的频繁项集1b_out2c_in3b_in,d_out,b_out,c_in4b_in,d_out,b_out,c_in5b_in,d_out6b_in,d_out7b_in,d_out,b_out8b_in,d_out,b_out,c_in表2根据所得到的频繁项集,构建fp-tree如图4所示,根据minsup=4从fp-tree中删除支持度数小于4的频繁模式(frequentpattern),得到频繁模式如下:(冒号后面的数字表示该频繁模式的支持度数)以b_in结尾的频繁模式:(b_in:6)以d_out结尾的频繁模式:(b_in,d_out:6)以b_out结尾的频繁模式:(b_in,d_out,b_out:4)根据前面的说明可知,校验规则具体形式为:前提条件→结论,而“前提条件”对应的都是模块的输入、“结论”对应的都是模块的输出,因此,在本申请的一种优选实施方式中,可以只查找出口参数为结尾的频繁模式,从而提升频繁模式的发现效率。结合本实施例,在上述确定得到的频繁模式中,以出口参数为结尾的频繁模式包括以下两条:1、(b_in,d_out:6),对应的校验规则为:b_in→d_out。2、(b_in,d_out,b_out:4),对应的校验规则为:b_in→d_out∩b_out。另外,结合数据校验的应用场景,为避免校验规则产生误报,可以仅保留置信度为100%的校验规则。当然,根据实际情况,该标准可以适当放宽,本申请并不对其进行限定。对于规则(x→y),其置信度定义为:其中c表示置信度、表示x在事务中出现的频次、表示x和y同时出现在事务中的频次。那么,对于上述得到的两条规则:b_in→d_out和b_in→d_out∩b_out,置信度计算结果如下:那么,最终保留的结果为以出口参数为结尾、且置信度为100%的校验规则为:b_in→d_out该规则表示:当模块b的输入数据为1时,则模块d的输出数据必为1。至此,自动生成校验规则完毕,将所生成的规则实际部署之后,就可以对调用链路上的数据进行实时校验。相应于上述方法实施例,本申请还提供一种链路数据校验装置,参见图5所示,该装置可以包括:数据获得模块110,用于获得目标调用链路上的样本数据集,样本数据集的每条数据包含一次调用过程中各个模块的输入数据及输出数据;频繁模式查找模块120,用于利用fp-growth算法查找样本数据集中的频繁模式;规则生成模块130,用于根据所查找到的频繁模式生成校验规则;校验执行模块140,用于利用生成的校验规则对目标调用链路上的数据进行校验。在本申请的一种具体实施方式中,频繁模式查找模块120可以具体用于:对每条样本数据中的各项数据分别按照支持度数进行排序、并根据预设的最小支持度数阈值minsup得到频繁项集;根据所得到的频繁项集,构建fp-tree;根据minsup从fp-tree中确定频繁模式。在本申请的一种具体实施方式中,频繁模式查找模块120可以具体用于:利用fp-growth算法,查找样本数据集中以出口参数为结尾的频繁模式。在本申请的一种具体实施方式中,规则生成模块130可以具体用于:根据所查找到的频繁模式生成校验规则,且仅保留置信度为100%的校验规则。在本申请的一种具体实施方式中,数据获得模块110还可以用于:在样本数据集中的数值不为二元形式的情况下,对样本数据集中的数值进行二元化处理。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本申请的具体实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1