具体实施方式
下面通过附图以及具体实施例对本说明书技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例
请参考图1,本说明书的技术方案涉及的一个实施例的应用场景示意图。服务器侧对多个业务场景进行分析和监控,这里业务场景集合10中包含了多个业务场景1、2……n,多个业务场景可以举例比如支付类场景,支付类场景支持不同类型的支付工具,比如支付宝、快捷支付、银行卡/信用卡、花呗支付、白条支付、红包支付等等,有些支付场景(比如图示里的业务场景1)支持上述所有支付工具,有些支付场景(比如图示里的业务场景2)不支持花呗支付,还有些支付场景(比如业务场景n)不支持红包支付。由此仅仅支付工具的各种组合,业务场景的数量可能是很多的,再配合业务场景里其他工具的各种组合,导致业务场景集合中包含的业务场景数量是相当大的,通过人工的方式发现和挖掘由代码或者配置问题导致的场景故障或者资金损失,工作量是极大的,效率也极低。
由此本说明书中采用的技术方案应用到如图1所示右侧服务器20中,获取全量业务场景故障集合的装置21通过聚类分析推荐出系统中各个接口/方法的参数对应的参数聚类目标值,再通过故障注入工具22自动的做随机篡改组合,做场景模拟,得到模拟出的各种场景故障,比如支付工具错配,链接数据库无法连接,网络异常,输入输出I/O异常等等,最终将模拟出的各种业务场景故障合并为故障集合。
从而通过自动随机篡改参数组合的方式模拟出全量业务场景故障,又以聚类分析做前提,保证了故障注入工具中的各个参数聚类目标值是最优最全的,对各个参数聚类目标值进行篡改使得把系统中未知的和已存在的隐患和问题都能提前发现,极大克服了以往业务场景故障防范措施做不到位的问题。
请参考图2,本说明书第一实施例提供一种获取全量业务场景故障集合的方法,包括:
S210:基于业务调用链路上的追踪数据,清洗得到业务调用链路上所有接口参数和/或方法参数。
具体例如,可以采用预先对系统框架中设置埋点的方式,得到业务流量通过的业务调用链路上的追踪数据。再进一步地,如果想要篡改并模拟所有业务场景的可能情况,需要在系统框架的接口层进行埋点的基础上,对方法层也进行埋点,比如系统中方法层级插入埋点拦截代码,对各个业务流量通过系统的业务调用链路上时基于埋点拦截代码得到的追踪数据进行清洗,从而得到每个业务场景下所有接口参数和方法参数,比如业务场景A需要经过A1类的方法a1,方法a2,再经过B1类的方法b1,方法b3,方法b4,再经过B2类的方法b’2,方法b’3,经过接口c1,接口c3等等。
S220:将所述所有接口参数和/或方法参数进行聚类分析,推荐出参数聚类目标值。
具体例如,将上述基于埋点得到将系统各个业务调用链路上经过的所述所有接口参数和/或方法参数,以及各参数对应的参数值,进行可视化展示,比如以窗口的形式展示各个业务场景流量对应的所有接口和方法参数及参数值,可以按照系统->类->方法/接口->参数及篡改值的形式,对所有参数值进行数据化聚类分析,得到各接口参数和/或方法参数对应的聚类分布结果,由此可以知道系统中每个参数被篡改的数据集合。通过分析聚类分布结果,得到参数聚类目标值,更进一步地,可以得到最全最优篡改值。
聚类分析的方法有很多,比如可以使用K-Means,DBSCAN,均值漂移聚类等,基于所述各接口参数和/或方法参数对应的数据集合,确定出所述各接口参数和/或方法参数对应的参数值经篡改后,影响到的数据集合;比较各个数据集合根据所述参数值篡改所产生的影响,推荐出参数聚类目标值,更进一步地,得到最全参数聚类目标值。
具体举例说明,以业务场景中支付金额举例,假设目前对于某一类交易,在海量数据采集下,聚类分析发现交易金额在1元钱附近数据集合占比约为30%,在5元钱附近数据集合占比约为20%,在20元钱附近数据集合占比约为10%,……因为支付金额是无穷无尽的,所以在准备数据或者篡改数据进行场景模拟的时候不可能准备所有的金额进行赋值,因此根据本说明书的方法,使用聚类分析方法来模拟分析交易金额数据的分布,从而抽取其中代表性金额作为参数聚类目标值,如选取分析得到的峰值位置或附近的值等。就比如,上述业务场景下参数聚类目标值就是1元,5元,20元……,将这些参数聚类目标值作为准备金额数据的篡改对象,假设比较了各个参数聚类目标值经篡改后所产生的影响,推荐改成原交易金额+0.1元,那么篡改后的值就是1.1,5.1,20.1……以此类推,由于参数聚类目标值是有限和全面的,因此这样在参数聚类目标值基础上进行篡改以获得的篡改值也是既全又是最优的。
在故障模拟中,找到最合适、最恰当的参数值很重要,通过聚类分析方式对业务场景的参数分析后所选出的目标值、进而通过比较目标值在篡改后的影响可以推荐出篡改值,以便之后发生真正业务上或应用系统问题,真正把故障模拟出来。因而,将经过聚类分析后得到的最合适的参数聚类目标值作为篡改对象,可以得到最优参数篡改值。由于每个业务流程很长,若通过可视化展示,可以知道每个参数被篡改的数据集合,也可以人工抽查聚类算法的准备性等等。技术人员基于可视化展现的结果,能够实现将所有接口参数和/或方法参数进行聚类分析,从而得到各个参数聚类目标值;同时,通过可视化展示,可以比较各个参数聚类目标值经篡改后所产生的影响,推荐出最优参数篡改值。
S230:通过故障注入工具,参照上述推荐出的参数聚类目标值,对所述接口参数和/或方法参数进行篡改;
所述故障注入工具包括可执行脚本,编写执行用于对系统中各个参数进行篡改赋值,所述可执行脚本参照上述推荐出的支付金额的参数对应的参数聚类目标值经过+0.1篡改后,比如1.1,5.1,20.1……,注入到系统中将与所述支付金额相关的接口参数和/或方法参数,进行重新赋值为1.1,5.1,20.1……以此进行篡改。
再进一步地,故障注入工具基于每一个参数聚类目标值,采用随机方式对参数组合进行篡改赋值,即采用随机篡改来满足各种参数组合,但每个参数的取值范围是在参数聚类目标值的有效篡改范围内的,作为最优参数篡改值。比如参数聚类目标值1,5,20……对应的最优参数篡改值为1.1,5.1,20.1……,故障注入工具则将系统中与所述支付金额参数相关的接口参数和/或方法参数作为集合,在集合中随机进行组合,并篡改为1.1,5.1,20.1……,从而发现篡改后导致个各种场景故障情况。
S240:经上述对所述接口参数和/或方法参数进行篡改,获取全量业务场景故障集合。
具体例如,通过故障注入工具随机选取参数组合,对各个参数组合中的参数聚类目标值进行最优篡改值赋值,不断重复随机过程,由此自动化地模拟各种业务场景故障情况,比如资金类的,数据库连接故障,网络异常,输入输出I/O异常等,从而将所有这些故障汇总为全量业务场景故障集合。
本说明书的技术方案首先通过预先在系统框架中进行埋点的方式,得到各个业务场景下的业务流量通过的该业务调用链路上的追踪数据,进而清洗得到业务调用链路上所有接口参数和/或方法参数,并进行可视化展现。技术人员基于可视化展现的结果,能够实现将所有接口参数和/或方法参数进行聚类分析,从而得到参数聚类目标值。故而利用聚类分析计算机方法自动化的得到故障注入工具最需要的参数聚类目标值,为获取全量业务场景故障合集提供了完善的条件。
此处举一例子,需要说明的是此仅作为实施举例,实际情况并不一定按此实施,本发明也并不限定于此实施举例的方式限定保护范围。
例如图1里的业务场景1为话费充值场景,支持比如支付宝、快捷支付、银行卡/信用卡、花呗支付、白条支付、红包支付等上述所有支付工具,业务场景2为共享单车押金支付场景,其不支持花呗支付,……,业务场景n为游戏支付场景,其不支持红包支付,这些业务场景对应各个业务。
经过系统对各个业务调用链路上经过的所述所有接口参数和/或方法参数的聚类分析,比如以支付金额参数为例其聚类分析发现交易金额在100元钱附近数据集合占比约为40%,在50元钱附近数据集合占比约为30%,在20元钱附近数据集合占比约为10%,因此抽取100元、50元、20元这些代表性金额作为参数聚类目标值(即作为最优参数篡改值),如选取分析得到的峰值位置或附近的值等。就比如,上述业务场景下参数聚类目标值就是100元,50元,20元……,将这些参数聚类目标值作为支付金额参数的篡改对象。然后,根据接口协议、参数取值规定、随机测试、或接口工具测试等各种因素对这些对象会产生的影响,选取将参数聚类目标值改成原交易金额+0.1元,那么篡改后的值就是100.1,50.1,20.1。然后通过故障注入工具,将上述篡改后的参数值作为各个业务中支付金额参数的赋值,由于某些业务不支持此格式的支付参数则会产生故障报错,比如业务场景2为共享单车押金支付场景仅支持100、50、20整数充值,游戏充值业务场景n也不支持非整数充值,则当篡改值100.1,50.1,或20.1被故障注入工具赋值到对应各个业务场景1、2……n中模拟各个业务场景运行,则至少业务场景2、n会产生系统故障、数据异常等报错情形,更有甚者可能产生数据溢出,金额泄露等情形,基于此能够获取到各业务场景故障情况。
请参照图3,本说明书第二实施例还提供了一种获取全量业务场景故障集合的装置,包括:
参数确定单元301,用于根据业务调用链路上的追踪数据,清洗得到业务调用链路上所有接口参数和/或方法参数;
聚类分析单元302,用于将所述所有接口参数和/或方法参数进行聚类分析,推荐出参数聚类目标值;
参数篡改单元303,用于通过故障注入工具,参照上述推荐出的参数聚类目标值,对所述接口参数和/或方法参数进行篡改;
故障集合获取单元304,用于根据上述对所述接口参数和/或方法参数进行篡改,获取全量业务场景故障集合。
具体的,在本实施例中,获取全量业务场景故障集合的装置可以设置在服务器中,也可以设置在终端设备,如手机、ipad、平板电脑、笔记本电脑等设备,还可以是台式电脑等设备,当然还可以是其它电子设备,在此,本说明书不做限制。获取全量业务场景故障集合的装置进行获取全量业务场景故障集合的方法已在前述第一实施例中进行详细阐述,在此,本实施例不再赘述。
作为一种可选的实施例,所述参数确定单元301,进一步包括:
埋点子单元,用于预先对系统框架设置埋点,得到业务流量通过的业务调用链路上的追踪数据。
更进一步的,所述埋点子单元,还用于对系统框架层级中方法层级设置埋点,从而得到系统方法级的业务调用链路追踪数据。
作为一种可选的实施例,所述聚类分析单元302,进一步包括:
可视化单元,用于将系统各个业务调用链路上经过的所述所有接口参数和/或方法参数,以及各参数对应的参数值,进行可视化展示。
分析参数子单元,用于对所述可视化展示的所述所有接口参数和/或方法参数,以及各参数对应的参数值,进行聚类分析,得到各接口参数和/或方法参数对应的数据集合;
集合确定子单元,用于基于所述各接口参数和/或方法参数对应的数据集合,确定出所述各接口参数和/或方法参数对应的参数值经篡改后,影响到的数据集合;
比较子单元,用于比较各个数据集合根据所述参数值篡改所产生的影响,推荐出参数聚类目标值。
进一步地,比较子单元还用于比较所有接口参数和/或方法参数对应的参数值篡改产生的各个数据集的影响,进一步推荐出基于全量业务场景下的最全的参数聚类目标值。
作为一种可选的实施例,所述故障注入工具包括可执行脚本,
所述可执行脚本参照上述推荐出的参数聚类目标值,注入到系统中将与所述参数聚类目标值相关的接口参数和/或方法参数进行重新赋值篡改。
基于本说明书实施例的技术方案,所述业务场景可以包括支付业务场景,所述接口参数和/或方法参数进一步包括支付接口参数和/或支付工具方法参数。
本说明书第三实施例还提供了一种服务器,包括存储器402、处理器401及存储在存储器402上并可在处理器401上运行的计算机程序,所述处理器401执行所述程序时实现前文所述获取全量业务场景故障集合的方法的步骤。为了便于说明,仅示出了与本说明书实施例相关的部分,具体技术细节未揭示的,请参照本说明书实施例方法部分。该服务器,可以是包括各种电子设备形成的服务器设备,PC电脑、网络云服务器,甚至手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、台式电脑等任意电子设备上设置的服务器功能。
具体地,图4示出的与本说明书实施例提供的技术方案相关的服务器组成结构框图,总线400可以包括任意数量的互联的总线和桥,其将包括由处理器401代表的一个或多个处理器和存储器402代表的存储器的各种电路链接在一起。总线400还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口403在总线400和接收器和/或发送器404之间提供接口,接收器和/或发送器404可以是分开独立的接收器或发送器也可以是同一个元件如收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器401负责管理总线400和通常的处理,而存储器402可以被用于存储处理器401在执行操作时所使用的数据。
基于这样的理解,本说明书实现上述第一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。