大数据系统的性能容量测试方法、装置、设备及存储介质与流程

文档序号:18985628发布日期:2019-10-29 04:21阅读:180来源:国知局
大数据系统的性能容量测试方法、装置、设备及存储介质与流程

本说明书涉及大数据系统技术领域,尤其是涉及一种大数据系统的性能容量测试方法、装置、设备及存储介质。



背景技术:

随着大数据平台广泛兴起,面对海量的数据和海量交易所带来的技术挑战,大数据系统的性能和扩展性被列为系统质量的重要指标,并越来越受到人们的重视。其中,在大数据系统的性能容量测试中,由于大数据系统的复杂性,考虑到测试成本,难以对所有作业都进行性能容量测试。传统方式一般采取人工方式逐个分析作业脚本,以判断其是否属于性能高风险的作业脚本,然后再对人工选择出的属于性能高风险的作业脚本进行性能容量测试。显然,这种人工识别性能高风险作业脚本的方式,依赖测试人员经验,从而容易导致测试可靠性无法保证,且测试效率低,人力成本高。



技术实现要素:

本说明书实施例的目的在于提供一种大数据系统的性能容量测试方法、装置、设备及存储介质,以提高大数据系统的性能容量测试的效率和可靠性,降低人力成本。

为达到上述目的,一方面,本说明书实施例提供了一种大数据系统的性能容量测试方法,包括:

获取目标系统的作业脚本及指定元数据;

对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据;

根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

对属于所述指定风险类别的作业脚本进行性能容量测试。

其中,所述对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据,包括:

解析作业脚本;

从解析后的作业脚本中提取基础元素对象;

对所述基础元素对象进行结构化存储,从而获得所述作业脚本的血缘分析结构化数据。

其中,所述指定元数据至少包括以下信息:

目标系统的作业时间窗口;

目标系统的表级对象数据量;

目标系统的表数据倾斜率。

其中,所述根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别,包括:

将所述血缘分析结构化数据与所述指定元数据进行表级对象匹配,以判断所述作业脚本是否涉及超出数据量阈值或超出数据倾斜率阈值的作业;

如果涉及,则将所述作业脚本识别为属于指定风险类别。

其中,所述根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别,包括:

对所述血缘分析结构化数据进行逻辑复杂度分析,以判断所述作业脚本的逻辑复杂度是否超出逻辑复杂度阈值;

如果超出,则将所述作业脚本识别为属于指定风险类别。

其中,所述根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别,包括:

在测试环境将所述指定元数据导入所述目标系统,以生成执行计划;

判断所述执行计划中的代价值是否超出代价值阈值;

如果超出,则将所述作业脚本识别为属于指定风险类别。

其中,所述根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别,包括:

对所述指定元数据进行时间窗口分析,以判断所述作业脚本涉及的单位时间事务处理量是否超出单位时间事务处理量阈值;

如果超出,则将所述作业脚本识别为属于指定风险类别。

另一方面,本说明书实施例还提供了一种大数据系统的性能容量测试装置,包括:

血缘分析,以生成所述作业脚本的血缘分析结构化数据,根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

测试执行模块,用于对属于所述指定风险类别的作业脚本进行性能容量测试。

另一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时执行如下步骤:

获取目标系统的作业脚本及指定元数据;

对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据;

根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

对属于所述指定风险类别的作业脚本进行性能容量测试。

另一方面,本说明书实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取目标系统的作业脚本及指定元数据;

对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据;

根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

对属于所述指定风险类别的作业脚本进行性能容量测试。

由以上本说明书实施例提供的技术方案可见,本说明书实施例中,在获取目标系统的作业脚本及指定元数据的基础上,通过对作业脚本进行血缘分析,可以生成作业脚本的血缘分析结构化数据,然后根据血缘分析结构化数据和指定元数据至少之一,可以确定作业脚本是否属于指定风险类别,从而实现了对目标系统的作业脚本的性能风险类别的自动识别。在此基础上,就可以对属于指定风险类别的作业脚本进行性能容量测试。显然,与传统人工识别作业脚本的性能风险类别相比,本说明书实施的大数据系统的性能容量测试方法,大大提高了大数据系统的性能容量测试的效率,并极大地降低了大数据系统的性能容量测试的人力成本。不仅如此,由于本说明书实施的大数据系统的性能容量测试方法不依赖人工经验识别,而是根据作业脚本及指定元数据自动进行识别,从而也提高了大数据系统的性能容量测试可靠性。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本说明书一些实施例中大数据系统的性能容量测试方法的流程图;

图2为本说明书一实施例中血缘分析结构化数据的示意图;

图3为本说明书一实施例的大数据系统的性能容量测试方法中,测试执行部分的流程图;

图4为本说明书一些实施例中大数据系统的性能容量测试装置的结构框图;

图5为本说明书一些实施例中计算机设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

参考图1所示,本说明书一些实施例中的大数据系统的性能容量测试方法可以包括以下步骤:

s101、获取目标系统的作业脚本及指定元数据。

s102、对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据。

s103、根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别。

s104、对属于所述指定风险类别的作业脚本进行性能容量测试。

由此可见,在本说明书实施中,在获取目标系统的作业脚本及指定元数据的基础上,通过对作业脚本进行血缘分析,可以生成作业脚本的血缘分析结构化数据,然后根据血缘分析结构化数据和指定元数据至少之一,可以确定作业脚本是否属于指定风险类别,从而实现了对目标系统的作业脚本的性能风险类别的自动识别。在此基础上,就可以对属于指定风险类别的作业脚本进行性能容量测试。显然,与传统人工识别作业脚本的性能风险类别相比,本说明书实施的大数据系统的性能容量测试方法,大大提高了大数据系统的性能容量测试的效率,并极大地降低了大数据系统的性能容量测试的人力成本。不仅如此,由于本说明书实施的大数据系统的性能容量测试方法不依赖人工经验识别,而是根据作业脚本及指定元数据自动进行识别(即代码一经提交,即可识别是否需要进行性能验证),从而也提高了大数据系统的性能容量测试可靠性。

在本说明书一些实施例中,所述目标系统为待测大数据系统,该大数据系统可以是分布式系统、集群系统、或分布式集群系统。例如,在一实施例中,所述目标系统可以为处理金融交易的系统。

在本说明书一些实施例中,目标系统的大数据作业处理过程一般主要由sql脚本(etl作业脚本)实现。因此,可以获取目标系统的作业脚本。

在本说明书一些实施例中,目标系统的指定元数据可以包括目标系统的作业时间窗口、表级对象数据量和表数据倾斜率等。这些数据对于衡量大数据系统的性能容量具有重要意义。其中,目标系统的指定元数据可以从目标系统的生产运维信息(即目标系统上线运行后的运维信息)中采集得到。例如,在一实施例中,可以通过配置持续集成任务,定时或实时从运维平台获取指定元数据。

血缘分析是一种技术手段,用于对数据处理过程的全面追踪,从而找到某个数据对象为起点的所有相关元数据对象以及这些元数据对象之间的关系。其中,元数据对象之间的关系特指表示这些元数据对象的数据流输入输出关系。在本说明书一些实施例中,所述对作业脚本进行血缘分析,以生成作业脚本的血缘分析结构化数据,可以包括:解析作业脚本;从解析后的作业脚本中提取基础元素对象;对所述基础元素对象进行结构化存储,从而获得所述作业脚本的血缘分析结构化数据。

例如,在本说明书一实施例中,可以利用sqlparse开源词法解析工具,通过对作业脚本中sql语句进行解析,从而可以提取其中的基础元素对象(例如业名、表、字段、表达式、条件等),并将这些基础元素对象进行结构化存储,最终可以将一个作业脚本的字段级映射信息结构化存储在如图2所示的4张表中。其中:

br_target_field:保存目标字段与源字段的映射逻辑。

br_source_alias:保存取数源表的表别名信息。

br_source_relation:保存源表的表关联及字段筛选信息。

br_temp_field:保存临时表字段信息。

在获得作业脚本的血缘分析结构化数据后,可以根据血缘分析结构化数据和指定元数据至少之一,来确定作业脚本是否属于指定风险类别,即可以根据根据血缘分析结构化数据和指定元数据至少之一构建分析模型,从而智能化预测目标系统的当前版本中涉及哪些高风险作业。

例如,在本说明书一实施例中,可以将所述血缘分析结构化数据与所述指定元数据进行表级对象匹配,以判断所述作业脚本是否涉及超出数据量阈值或超出数据倾斜率阈值的作业。由于采集的指定元数据一般也是数据表形式存储的,在确定指定元数据的数据表中包含哪些大表(这里的大表是指数据量超出预设的数据量阈值的表)后,通过查询血缘分析结构化数据是否包含这些大表的表名(或表标识),就可以判断出相应的作业脚本是否涉及超出数据量阈值的作业。类似的,在确定指定元数据的数据表中哪些表的数据倾斜率超出预设的数据倾斜率阈值后,通过查询血缘分析结构化数据是否包含这些表的表名(或表标识),就可以判断出相应的作业脚本是否涉及超出数据倾斜率阈值的作业。

例如,在本说明书一实施例中,可以对血缘分析结构化数据进行逻辑复杂度分析,以判断作业脚本的逻辑复杂度是否超出逻辑复杂度阈值;如果超出,则可以将所述作业脚本识别为属于指定风险类别。比如,在一示例性实施例中,可以建立如下五项维度,通过权重配比公式算出作业脚本的逻辑复杂度:

1)、作业脚本的嵌套层数是否超过某阈值;

2)、作业脚本涉及的表的个数是否超过某阈值;

3)、作业脚本涉及的表的关联次数是否超过某阈值;

4)、作业脚本是否违反性能代码编写规范;

5)、作业脚本的语句逻辑分支数是否超过某阈值。

上述五项维度分析,可以通过代码分析工具实现,其中,代码分析工具中的命中规则可以是以性能角度制定的。

再如,在本说明书一实施例中,可以对血缘分析结构化数据进行执行计划复杂度分析,以判断作业脚本的执行计划复杂度分析是否超出逻辑复杂度阈值;如果超出,则可以将所述作业脚本识别为属于指定风险类别。具体的,可以在测试环境将所述指定元数据导入所述目标系统,以生成执行计划;然后判断所述执行计划中的代价值(cost值)是否超出代价值阈值;如果超出,则将所述作业脚本识别为属于指定风险类别。

再如,在本说明书一实施例中,还可以对指定元数据进行时间窗口分析,以判断所述作业脚本涉及的单位时间事务处理量(例如tps,即每秒事务处理量,transactionpersecond)是否超出单位时间事务处理量阈值;如果超出,则将所述作业脚本识别为属于指定风险类别。

本领域技术人员应当理解,以上对目标系统的作业脚本的性能风险类别的自动识别,仅是示例性说明;在其他实施例中,还可以根据其他方式实现,本说明书对此不做限定。

基于上文阐述,可以看出,在目标系统的开发代码提交后,通过对目标系统的作业脚本的性能风险类别的自动识别,可以确定其中哪些作业脚本是需要进行性能容量测试的。在此基础上,可以进行环境部署和参数配置,其中环境部署是指在资源池的设备上部署并运行监控进程(例如图4中,在待测大数据系统的管理节点及数据节点上部署监控代理节点,以用于实时禅机各个节点的性能指标)。所述参数配置例如可以包括设定初始场景、目标压力值、资源阈值等等。然后,就可以进行性能容量测试了。

例如,在本说明书一实施例中,所述对属于所述指定风险类别的作业脚本进行性能容量测试的测试过程,可以如图3所示,具体的:

在起始测试时,可以将目标系统中最小可运行的主机集群纳入压力池,并设定一组目标压力值,用于测试过程中目标压力值的自动调整。通过轮询可以获取监控代理节点返回的性能指标监控结果,并解析计算压力池中各主机的资源监控数据(例如cpu、内存、磁盘、网络等),定时与预先设定的阈值做比较,并根据比较结果采取进一步措施:

若某项资源超出阈值且实际吞吐量未达到目标吞吐量,则可以增加启动目标系统中相应类型的主机(即增加并行处理节点),纳入压力池,以进行下一轮测试;

若所有资源均未超出阈值且实际吞吐量未达到目标吞吐量,同时大于上一轮实际吞吐量,则可以通知并发模拟器向上调整并发数,以进行下一轮测试;

若所有资源均未超出阈值且实际吞吐量达到目标吞吐量,则确认目标系统验证通过,终止测试;

若某项资源超出阈值且实际吞吐量达到目标吞吐量,则可以定位为资源使用问题,终止测试,并可以建议进行性能优化。

若所有资源均未超出阈值且实际吞吐量未达到目标吞吐量,同时等于或小于上一轮吞吐量,则可以定位为扩展性问题,终止测试,并可以建议进行性能优化。

若某项资源超出阈值且实际吞吐量未达到目标吞吐量,而此时资源池中所有瓶颈资源都已纳入压力池,则可以定位为性能不达标问题,终止测试,并可以建议性能优化或增加资源池设备总量。

进一步地,在性能容量测试的基础上,还可以将测试数据写入数据库,并通过数据库生成测试报告。其中,测试数据可以包括测试过程数据、监控节点返回的性能指标监控结果等。

在本说明书一实施例中,上述增加启动目标系统中相应类型的主机,可以是按照预设的增量进行调整,例如可以是每次增加固定数量个(例如1个、2个、5个等)。在本说明书另一实施例中,上述增加启动目标系统中相应类型的主机,还可以根据以下公式进行自适应式增加并行处理节点:

其中,t为瓶颈资源处理单个事务所占时间,t为整个目标系统处理单个事务所占时间;tps即为目标系统的每秒事务处理量,n经向上取整后,即为自适应启动并行处理节点的个数。

由此可见看出,在本说明书实施例的大数据系统的性能容量测试方法中,由于监控信息收集、性能指标统计分析和性能问题定位等均是自动处理完成。因此,基于本说明书实施例大数据系统的性能容量测试方法,不仅可以自动识别性能需求,还可以可大大降低监控分析及整理的工作量,提高指标统计的准确性和完整性,更高效快速的发现被测系统的性能瓶颈,并自动定位性能问题,并且还可以实现固定负载下设备资源的自动调配,同时可根据实时运行情况自动调整并发模拟器的目标压力值,规避手工调配时可能引入的设计遗漏或不合理等问题,因而提高了测试场景的有效性和执行效率。

参考图4所示,与上述大数据系统的性能容量测试方法对应,本说明书一些实施例的大数据系统的性能容量测试装置可以包括:

需求识别模块41,可以用于获取目标系统的作业脚本及指定元数据,对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据,根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

测试执行模块42,可以用于对属于所述指定风险类别的作业脚本进行性能容量测试。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

参考图5所示,与上述大数据系统的性能容量测试方法对应,本说明书一些实施例的计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时执行如下步骤:

获取目标系统的作业脚本及指定元数据;

对所述作业脚本进行血缘分析,以生成所述作业脚本的血缘分析结构化数据;

根据所述血缘分析结构化数据和所述指定元数据至少之一,确定所述作业脚本是否属于指定风险类别;

对属于所述指定风险类别的作业脚本进行性能容量测试。

虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。

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

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

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

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘式存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

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