灰度发布验证方法、系统、介质、设备及程序与流程

文档序号:29641723发布日期:2022-04-13 18:40阅读:375来源:国知局
灰度发布验证方法、系统、介质、设备及程序与流程

1.本技术涉及金融科技(fintech)技术领域,尤其涉及一种灰度发布验证方法、系统、介质、设备及程序。


背景技术:

2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(finteh)转变,接口测试技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
3.目前,随着互联网技术的发展,微服务技术的应用,版本更新频率的提高,企业内部进行版本发布的人力投入越来越大,给企业运维人员提出了更大的挑战。当前,企业运维人员进行版本发布后,绝大部分依赖人工进行版本验证,验证效率较低且耗时较长,并且,验证方案主要也是由发布人员凭经验整理得到,存在方案不完善的问题。
4.尤其是在版本灰度发布的过程中,很难在每个灰度步骤完成后及时进行验证,若版本存在问题时,则难以及时发现问题。


技术实现要素:

5.本技术实施例提供一种灰度发布验证方法、系统、介质、设备及程序,以解决现有技术在版本灰度发布的过程中,很难在每个灰度步骤完成后及时进行验证,及若版本存在问题时,则难以及时发现的技术问题。
6.第一方面,本技术实施例提供一种灰度发布验证方法,应用于灰度发布验证系统,所述灰度发布验证系统包括多个子系统,每个子系统的版本更新包括灰度发布步骤序列,所述灰度发布步骤序列包括按照预设顺序排列的多个灰度发布步骤,所述方法,包括:
7.在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行所述第一灰度发布步骤后的第一执行结果;
8.对所述第一执行结果进行验证处理,其中,所述验证处理包括应用验证、数据库验证、业务功能验证以及监控性能指标检查中的至少一项,所述应用验证用于对所述第一执行结果中的应用配置结果进行验证,所述数据库验证用于对所述第一执行结果中的数据库操作语句进行验证,所述业务功能验证用于对所述第一执行结果中的结构化查询语言sql语句执行结果进行验证,所述监控性能指标检查用于对所述第一执行结果中的实例级别指标数据进行检查;
9.若所述第一执行结果通过所述验证处理,则执行第二灰度发布步骤,所述第二灰度发布步骤为所述第一灰度发布步骤的下一个灰度发布步骤;
10.当所述灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过所述验证处理,则确定所述子系统的版本更新所对应的灰度发布验证成功。
11.在一种可能的设计中,当所述验证处理包括所述数据库验证,则所述对所述第一执行结果进行验证处理,包括:
12.读取数据库db物料包中的待验证sql语句集合,并利用预设词法分析器对所述待验证sql语句集合中的每一项sql语句进行解析,以生成对应的语法树;
13.根据每一项sql语句所对应的语法树以及预设对象分类条件确定每一项sql语句所对应的语句类型;
14.根据第一sql语句所对应的语句类型获取所涉及的第一表名称,并根据所述第一表名称连接对应的第一数据库,其中,所述第一sql语句为所述待验证sql语句集合中的任意一项语句;
15.获取所述第一数据库对应的第一操作语句,并根据所述预设词法分析器对所述第一操作语句进行解析,以生成第一语法树;
16.按照预设语法树语句类型匹配规则对待验证语法树以及所述第一语法树确定校验,以确定对应数据库中的表与字段属性生效状态,所述待验证语法树为利用所述预设词法分析器对所述第一sql语句解析所生成的语法树。
17.在一种可能的设计中,在所述根据每一项sql语句所对应的语法树以及预设对象分类条件确定每一项sql语句所对应的语句类型之后,还包括:
18.确定所述语句类型为数据定义语言ddl的语句为所述第一sql语句;
19.根据预设分类规则确定所述第一sql语句对应的第一操作类型,所述第一操作类型用于确定所述第一数据库中所述第一sql语句对应的所述第一操作语句。
20.在一种可能的设计中,在所述根据第一sql语句所对应的语句类型获取所涉及的第一表名称之前,还包括:
21.根据所述待验证sql语句集合中的每一项sql语句的读取顺序以及对应的表名称分类对所述sql语句集合中的sql语句进行排序,以生成第一表结构对象;
22.从所述第一表结构对象的最后一项sql语句开始,逆序进行所述数据库验证;其中,若验证结果为成功,则将当前验证的sql语句从所述第一表结构对象中进行删除,并回滚至前一项sql语句继续进行所述数据库验证,并在所述第一表结构对象全部完成所述数据库验证后,输出检查报告;若验证结果为失败,则输出检查报告。
23.在一种可能的设计中,当所述验证处理包括所述监控性能指标检查,则所述对所述第一执行结果进行验证处理,包括:
24.获取第一执行结果中的所述实例级多运维指标数据,并根据数据特征确定所述实例级多运维指标数据的指标数据类型;
25.根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所述实例级多运维指标数据进行验证处理。
26.在一种可能的设计中,若所确定的所述指标数据类型为所述稳定型数据,则所述根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所述实例级多运维指标数据进行验证处理,包括:
27.同步使用多个滑动窗口遍历所述实例级多运维指标数据,并确定所述多个滑动窗口的特征统计量,所述特征统计量用于表征所述实例级多运维指标数据的集中趋势特征;
28.将所述实例级多运维指标数据分别与所述多个滑动窗口的特征统计量进行作差,并生成特征序列;
29.利用箱型图离群点检测算法对所述特征序列进行检验,当确定所述实例级多运维
指标数据中与所述多个滑动窗口的统计数据偏差大于预设阈值时,则确定所述实例级多运维指标数据为异常。
30.在一种可能的设计中,所述实例级多运维指标数据的异常,包括:毛刺异常、整体抬升异常以及整体下降异常;
31.其中,若异常点的前窗口与后窗口的均值符合预设正常条件且前窗口与后窗口的均值差值在预设范围内,异常点指标数据增幅大于预设增幅且大于所述前后窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,所述多个滑动窗口包括所述前窗口与所述后窗口;
32.若异常点前窗口均值的均值符合预设正常条件且小于后窗口均值,异常点指标数据增幅大于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常;
33.若异常点前窗口均值的均值符合预设正常条件且大于后窗口均值,异常点指标数据增幅小于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体下降异常。
34.在一种可能的设计中,所述利用箱型图离群点检测算法对所述特征序列进行检验,包括:
35.将判定时刻数据与前窗口与后窗口的统计量做差,重构得到所述特征序列,以确定特征序列的正常范围,若当前数据与前窗口与后窗口的统计量之差不在所述正常范围内,则确定所述特征序列为异常。
36.在一种可能的设计中,若确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,则将设置左窗口的长度大于右窗口的长度,以提高所述异常点发生前所采集的数据数量,所述多个滑动窗口包括所述左窗口与所述右窗口;
37.若所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常或所述整体下降异常,则将所述左窗口与所述右窗口的长度设置为满足长度要求,以捕获满足预设时长内的稳定数据。
38.在一种可能的设计中,若所确定的所述指标数据类型为所述趋势型数据,则所述根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所述实例级多运维指标数据进行验证处理,包括:
39.选择初始化的k个指标数据作为初始聚类中心,所述k为正整数;
40.将所述实例级多运维指标数据中的各个数据按照与初始聚类中心的距离分配至距离最小的初始聚类中心所对应的类中,其中,计算累积距离作为所述距离的度量;
41.对初始聚类中心所对应的类重新确定聚类中心,以作为后续步骤进行聚类新的聚类中心;
42.重复将所述实例级多运维指标数据中的各个数据按照与当前的聚类中心的距离,分配至距离最小的聚类中心所对应的类中,并更新对应的类的聚类中心,直至完成迭代次数或迭代结果满足预设条件,以确定聚类中心序列;
43.计算所述聚类中心序列当前的聚类中心与所对应类内最远数据的累积距离,以作为所述实例级多运维指标数据的异常指标阈值;
44.若所述实例级多运维指标数据与对应的聚类中心之间的距离大于所述异常指标
阈值,则确定所述实例级多运维指标数据为异常。
45.在一种可能的设计中,若所确定的所述指标数据类型为所述周期型数据,则所述根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所述实例级多运维指标数据进行验证处理,包括:
46.基于lstm算法以及历史多运维指标数据学习生成用于对周期型数据记性预测的预测模型;
47.根据所述预测模型确定各个时刻下的预测值,并根据所述预测值以及同期平均增长率确定同期增长范围;
48.若所述实例级多运维指标数据超出所述同期增长范围,则确定所述实例级多运维指标数据为异常。
49.第二方面,本技术实施例还提供一种灰度发布验证系统,包括:
50.发布模块,用于在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行所述第一灰度发布步骤后的第一执行结果;
51.处理模块,用于对所述第一执行结果进行验证处理,其中,所述验证处理包括应用验证、数据库验证、业务功能验证以及监控性能指标检查中的至少一项,所述应用验证用于对所述第一执行结果中的应用配置结果进行验证,所述数据库验证用于对所述第一执行结果中的数据库操作语句进行验证,所述业务功能验证用于对所述第一执行结果中的结构化查询语言sql语句执行结果进行验证,所述监控性能指标检查用于对所述第一执行结果中的实例级别指标数据进行检查;
52.所述处理模块,还用于在所述第一执行结果通过所述验证处理时,则执行第二灰度发布步骤,所述第二灰度发布步骤为所述第一灰度发布步骤的下一个灰度发布步骤;
53.所述处理模块,还用于当所述灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过所述验证处理时,确定所述子系统的版本更新所对应的灰度发布验证成功。
54.在一种可能的设计中,所述处理模块,具体用于:
55.读取数据库db物料包中的待验证sql语句集合,并利用预设词法分析器对所述待验证sql语句集合中的每一项sql语句进行解析,以生成对应的语法树;
56.根据每一项sql语句所对应的语法树以及预设对象分类条件确定每一项sql语句所对应的语句类型;
57.根据第一sql语句所对应的语句类型获取所涉及的第一表名称,并根据所述第一表名称连接对应的第一数据库,其中,所述第一sql语句为所述待验证sql语句集合中的任意一项语句;
58.获取所述第一数据库对应的第一操作语句,并根据所述预设词法分析器对所述第一操作语句进行解析,以生成第一语法树;
59.按照预设语法树语句类型匹配规则对待验证语法树以及所述第一语法树确定校验,以确定对应数据库中的表与字段属性生效状态,所述待验证语法树为利用所述预设词法分析器对所述第一sql语句解析所生成的语法树。
60.在一种可能的设计中,所述处理模块,具体用于:
61.确定所述语句类型为数据定义语言ddl的语句为所述第一sql语句;
62.根据预设分类规则确定所述第一sql语句对应的第一操作类型,所述第一操作类型用于确定所述第一数据库中所述第一sql语句对应的所述第一操作语句。
63.在一种可能的设计中,在所述根据第一sql语句所对应的语句类型获取所涉及的第一表名称之前,还包括:
64.根据所述待验证sql语句集合中的每一项sql语句的读取顺序以及对应的表名称分类对所述sql语句集合中的sql语句进行排序,以生成第一表结构对象;
65.从所述第一表结构对象的最后一项sql语句开始,逆序进行所述数据库验证;其中,若验证结果为成功,则将当前验证的sql语句从所述第一表结构对象中进行删除,并回滚至前一项sql语句继续进行所述数据库验证,并在所述第一表结构对象全部完成所述数据库验证后,输出检查报告;若验证结果为失败,则输出检查报告。
66.在一种可能的设计中,所述处理模块,具体用于:
67.获取第一执行结果中的所述实例级多运维指标数据,并根据数据特征确定所述实例级多运维指标数据的指标数据类型;
68.根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所述实例级多运维指标数据进行验证处理。
69.在一种可能的设计中,所述处理模块,具体用于:
70.同步使用多个滑动窗口遍历所述实例级多运维指标数据,并确定所述多个滑动窗口的特征统计量,所述特征统计量用于表征所述实例级多运维指标数据的集中趋势特征;
71.将所述实例级多运维指标数据分别与所述多个滑动窗口的特征统计量进行作差,并生成特征序列;
72.利用箱型图离群点检测算法对所述特征序列进行检验,当确定所述实例级多运维指标数据中与所述多个滑动窗口的统计数据偏差大于预设阈值时,则确定所述实例级多运维指标数据为异常。
73.在一种可能的设计中,所述实例级多运维指标数据的异常,包括:毛刺异常、整体抬升异常以及整体下降异常;
74.其中,若异常点的前窗口与后窗口的均值符合预设正常条件且前窗口与后窗口的均值差值在预设范围内,异常点指标数据增幅大于预设增幅且大于所述前后窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,所述多个滑动窗口包括所述前窗口与所述后窗口;
75.若异常点前窗口均值的均值符合预设正常条件且小于后窗口均值,异常点指标数据增幅大于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常;
76.若异常点前窗口均值的均值符合预设正常条件且大于后窗口均值,异常点指标数据增幅小于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体下降异常。
77.在一种可能的设计中,所述处理模块,具体用于:
78.将判定时刻数据与前窗口与后窗口的统计量做差,重构得到所述特征序列,以确定特征序列的正常范围,若当前数据与前窗口与后窗口的统计量之差不在所述正常范围内,则确定所述特征序列为异常。
79.在一种可能的设计中,若确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,则将设置左窗口的长度大于右窗口的长度,以提高所述异常点发生前所采集的数据数量,所述多个滑动窗口包括所述左窗口与所述右窗口;
80.若所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常或所述整体下降异常,则将所述左窗口与所述右窗口的长度设置为满足长度要求,以捕获满足预设时长内的稳定数据。
81.在一种可能的设计中,所述处理模块,具体用于:
82.选择初始化的k个指标数据作为初始聚类中心,所述k为正整数;
83.将所述实例级多运维指标数据中的各个数据按照与初始聚类中心的距离分配至距离最小的初始聚类中心所对应的类中,其中,计算累积距离作为所述距离的度量;
84.对初始聚类中心所对应的类重新确定聚类中心,以作为后续步骤进行聚类新的聚类中心;
85.重复将所述实例级多运维指标数据中的各个数据按照与当前的聚类中心的距离,分配至距离最小的聚类中心所对应的类中,并更新对应的类的聚类中心,直至完成迭代次数或迭代结果满足预设条件,以确定聚类中心序列;
86.计算所述聚类中心序列当前的聚类中心与所对应类内最远数据的累积距离,以作为所述实例级多运维指标数据的异常指标阈值;
87.若所述实例级多运维指标数据与对应的聚类中心之间的距离大于所述异常指标阈值,则确定所述实例级多运维指标数据为异常。
88.在一种可能的设计中,所述处理模块,具体用于:
89.基于lstm算法以及历史多运维指标数据学习生成用于对周期型数据记性预测的预测模型;
90.根据所述预测模型确定各个时刻下的预测值,并根据所述预测值以及同期平均增长率确定同期增长范围;
91.若所述实例级多运维指标数据超出所述同期增长范围,则确定所述实例级多运维指标数据为异常。
92.第三方面,本技术实施例还提供一种电子设备,包括:
93.处理器;以及,
94.存储器,用于存储所述处理器的可执行指令;
95.其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任意一种灰度发布验证方法。
96.第四方面,本技术实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任意一种灰度发布验证方法。
97.第五方面,本技术实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任意一种灰度发布验证方法。
98.本技术实施例提供的一种灰度发布验证方法、系统、介质、设备及程序,在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行第一灰度发布步骤后的第一执行结果,然后,对第一执行结果进行验证处理,只有当第一执行结果通过验证处理时,执行灰度发布步骤序列中下一个灰度发布步骤,在当灰度发布步骤序列中的所有灰度发布步骤执
行完毕,并且执行结果通过验证处理时,确定子系统的版本更新所对应的灰度发布验证成功,从而在版本灰度发布的过程中,实现在每个灰度步骤完成后,能够及时进行自动验证,以及时发现问题。
附图说明
99.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
100.图1是本技术实施例一示出的灰度发布验证方法的流程示意图;
101.图2是本技术实施例一示出的另一灰度发布验证方法的流程示意图;
102.图3是本技术实施例二示出的数据库验证处理步骤的流程示意图;
103.图4是本技术实施例二示出的另一数据库验证处理步骤的流程示意图;
104.图5是本技术实施例三示出的监控性能指标检查步骤的流程示意图;
105.图6是本技术实施例三示出的另一监控性能指标检查步骤的流程示意图;
106.图7是本技术实施例四示出的基于第一算法中异常数据示意图图;
107.图8是本技术实施例四示出的基于第三算法的流程示意图;
108.图9是本技术实施例四示出的主机指标时间序列示意图;
109.图10是本技术实施例五示出的基于第四算法的流程示意图;
110.图11是本技术实施例六示出的基于lstm的预测算法的流程示意图;
111.图12是本技术实施例六示出的lstm网络结构示意图;
112.图13是本技术实施例七示出的灰度发布验证系统的流程示意图;
113.图14是本技术根据一示例实施例示出的电子设备的结构示意图。
具体实施方式
114.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
115.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
116.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(finteh)转变,接口测试技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。目前,随着互联网技术的发展,微服务技术的应用,版本更
新频率的提高,企业内部进行版本发布的人力投入越来越大,给企业运维人员提出了更大的挑战。当前,企业运维人员进行版本发布后,绝大部分依赖人工进行版本验证,验证效率较低且耗时较长,并且,验证方案主要也是由发布人员凭经验整理得到,存在方案不完善的问题。尤其是在版本灰度发布的过程中,很难在每个灰度步骤完成后及时进行验证,若版本存在问题时,则难以及时发现问题。
117.具体的,由于系统运行及健康状态往往是由一系列指标共同决定的,指标之间并非相互独立的关系,随着子系统规模变大,系统调用复杂度的提高,运维人员版本发布后对各项运维指标需要逐一进行验证,验证效率低,耗时较长。
118.并且,运维人员结合长期运维经验配置专家规则进行版本验证,需要针对不同运维指标及业务场景构建不同的规则,开发及维护成本高。此外,在版本验证上,存在验证点不完整,验证方法不准确的问题,无法形成统一完备的验证方案。
119.更为重要的是,人工验证很难保证版本发布过程的每个灰度步骤发布完成后就及时进行验证,无法及时从海量监控数据中发现版本质量问题。
120.针对上述各个技术问题,本技术实施例旨在提供一种灰度发布验证方法,使得灰度发布验证实现自动化,以提升灰度发布验证的准确性和及时性。此外,还基于结构化查询语言(structured query language,sql)逆解析技术,以自动反向生成数据库模式定义语言(data definition language,ddl)验证sql以及数据操纵语言(data manipulation language,dml)验证sql,从而减少人工生成验证方案的人力投入,提高方案的准确性。此外,还基于多算法混合的多变量运维指标异常检测方式,在发布后对实例级别关键监控指标进行异常波动检测以及离群检测。
121.图1是本技术实施例一示出的灰度发布验证方法的流程示意图。如图1-图2所示,本实施例提供的灰度发布验证方法,包括:
122.步骤101、在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行第一灰度发布步骤后的第一执行结果。
123.本实施例可以应用于灰度发布验证系统,灰度发布验证系统包括多个子系统,每个子系统的版本更新包括灰度发布步骤序列,灰度发布步骤序列包括按照预设顺序排列的多个灰度发布步骤。具体的,可以通过灰度发布对子系统进行版本更新时,一个子系统所有实例的版本更新,可以分成多个灰度发布步骤来发布,每个灰度发布步骤中包含一台或者多台实例。每个发布步骤执行完成后,自动调起版本验证模块进行验证,若验证通过则继续执行下一个灰度发布步骤,若验证失败则停止后续灰度发布步骤的执行。
124.步骤102、对第一执行结果进行验证处理。
125.具体的,对第一执行结果进行验证处理,其中,验证处理包括应用验证、数据库验证、业务功能验证以及监控性能指标检查中的至少一项,应用验证用于对第一执行结果中的应用配置结果进行验证,数据库验证用于对第一执行结果中的数据库操作语句进行验证,业务功能验证用于对第一执行结果中的结构化查询语言sql语句执行结果进行验证,监控性能指标检查用于对第一执行结果中的实例级别指标数据进行检查。
126.继续参照图2,对于应用(application,app)验证,可以对以下项目进行检查:
127.a.检查app进程状态是否为启动状态;
128.b.检查进程启动时间是否是在版本更新后启动的;
129.c.检查进程物料包的md5值是否与用户验收测试(user acceptance test,uat)环境进程物料包的md5值一致;
130.d.检查进程版本号是否等于该次需要发布的版本号;
131.e.检查日志文件的最后更新时间是否大于版本更新时间;
132.f.检查配置文件中是否存在未被替换的变量。
133.对于数据库(data base,db)验证,可以对以下项目进行检查:
134.a.检查db版本中的ddl表变更语句是否已执行;
135.b.检查db版本中的dml语句是否已执行。
136.对于业务功能验证,可以对以下项目进行检查:
137.a.执行版本发布前整理的验证sql语句,检查执行结果是否等于预期结果值。
138.对于监控性能指标检查,可以对以下项目进行检查:
139.a.基于第一算法,检测已灰度实例的cpu、io及业务成功率等稳定型指标是否存在规律突刺异常,整体抬升或下降异常,其中,第一算法可以是无监督异常检测的python工具包;
140.b.基于第二算法,对已灰度实例及未灰度实例业务接口耗时指标进行聚类分析,从而检测关键业务指标耗时与为未发布实例是否存在离群异常。
141.c.基于长短期记忆(long short-term memory,lstm)的预测算法,预测实例级业务接口交易量并计算的历史同比增量率,从而生成正常交易量区间。与版本后业务交易量进行对比,从而检测关键业务交易量是否骤降或骤增异常。
142.步骤103、若第一执行结果通过验证处理,则执行第二灰度发布步骤。
143.若第一执行结果通过验证处理,则执行第二灰度发布步骤,其中,第二灰度发布步骤为第一灰度发布步骤的下一个灰度发布步骤。即依次对灰度发布步骤序列中所包括的按照预设顺序排列的多个灰度发布步骤进行执行与验证,并且,只有当上一个灰度发布步骤的执行结果通过验证处理后,才开始后一个灰度发布步骤。
144.步骤104、当灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过验证处理,则确定子系统的版本更新所对应的灰度发布验证成功。
145.当灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过验证处理,则确定子系统的版本更新所对应的灰度发布验证成功。若在灰度发布步骤序列中的所有灰度发布步骤执行完毕之前,出现灰度发布步骤的执行结果未能通过验证处理,则确定子系统的版本更新所对应的灰度发布验证失败。
146.在本实施例中,在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行第一灰度发布步骤后的第一执行结果,然后,对第一执行结果进行验证处理,只有当第一执行结果通过验证处理时,执行灰度发布步骤序列中下一个灰度发布步骤,在当灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过验证处理时,确定子系统的版本更新所对应的灰度发布验证成功,从而在版本灰度发布的过程中,实现在每个灰度步骤完成后,能够及时进行自动验证,以及时发现问题。
147.图3是本技术实施例二示出的数据库验证处理步骤的流程示意图,图4是本技术实施例二示出的另一数据库验证处理步骤的流程示意图。如图3-图4所示,本实施例提供的数据库验证处理步骤,包括:
148.步骤201、读取数据库db物料包中的待验证sql语句集合,并利用预设词法分析器对待验证sql语句集合中的每一项sql语句进行解析。
149.具体的,可以获取antlr4mysql语法和词法文件,可选的,还增加部分新版本中未适配的语法,从而对对应的文件生成解析监听和解释文件。
150.在本步骤中,可以是读取数据库db物料包中的待验证sql语句集合,并利用预设词法分析器,即antlr4词法分析器,对待验证sql语句集合中的每一项sql语句进行解析,以生成对应的语法树。然后,解析语法树第一层结构对象类型,识别包含ddlstatementcontext对象的语句为ddl语句,解析语法树第二层结构,分辨create类型语句和alter语句,针对alter语句进行第三层语法树解析,进而还可以分辨对标的具体操作类型。
151.步骤202、根据每一项sql语句所对应的语法树以及预设对象分类条件确定每一项sql语句所对应的语句类型。
152.在本步骤中,dml语句可以解析为5种类型语句:setvalue语句、update语句、replace语句、insert语句、delete语句,对每种类型的语句可以分别使用对应的方法进行验证。
153.而对于ddl语句则可以解析为11种类型语句,分别为:新建表语句、删除表语句、alter定义字段语句、alter添加字段语句、alter删除字段语句、alter修改字段语句、alter删除索引语句、alter添加索引语句、alter添加主键语句、alter删除主键语句、alter添加唯一键语句,对每种类型的语句可以分别使用对应的方法验证。
154.步骤203、根据第一sql语句所对应的语句类型获取所涉及的第一表名称,并根据第一表名称连接对应的第一数据库。
155.根据第一sql语句所对应的语句类型获取所涉及的第一表名称,并根据所述第一表名称连接对应的第一数据库,其中,所述第一sql语句为所述待验证sql语句集合中的任意一项语句。若确定语句类型为数据定义语言ddl的语句为第一sql语句,则根据预设分类规则确定第一sql语句对应的第一操作类型,第一操作类型用于确定第一数据库中第一sql语句对应的第一操作语句。
156.具体的,对于ddl语句中的新建表语句,可以通过检查表结构对象是有审查该表的方式来进行验证。对于删除表语句,可以通过检查表结构对象是有审查该表的方式来进行验证。对于alter定义字段语句,可以通过检查表结构对象中字段是否存在及属性是否符合要求来进行验证。对于alter添加字段语句,可以通过检查表结构对象中字段是否存在及属性是否符合要求来进行验证。对于alter删除字段语句,可以通过检查表结构对象中字段是否存在来进行验证。对于alter修改字段语句,可以通过检查表结构对象中字段是否存在及属性是否符合要求来进行验证。对于alter删除索引语句,可以通过检查表结构对象中索引是否存在来进行验证。alter添加索引语句,可以通过检查表结构对象中索引是否存在及索引字段是否正确来进行验证。对于alter添加主键语句,可以通过检查表结构对象中索引是否存在及索引字段是否正确来进行验证。对于alter删除主键语句,可以通过检查表结构对象中该主键索引是否存在来进行验证。对于alter添加唯一键语句,可以通过检查表结构对象中该唯一索引是否存在来进行验证。最后,可以根据验证的结果生产检查报表。
157.步骤204、获取第一数据库对应的第一操作语句,并根据预设词法分析器对第一操作语句进行解析,以生成第一语法树。
158.在本步骤中,获取第一数据库对应的第一操作语句,并根据预设词法分析器对第一操作语句进行解析,以生成第一语法树。具体的,可以是利用antlr4词法分析器对第一操作语句进行解析,以生成对应的第一语法树。
159.步骤205、按照预设语法树语句类型匹配规则对待验证语法树以及第一语法树确定校验,以确定对应数据库中的表与字段属性生效状态。
160.在本步骤中,可以是按照预设语法树语句类型匹配规则对待验证语法树以及第一语法树确定校验,以确定对应数据库中的表与字段属性生效状态,其中,待验证语法树为利用预设词法分析器对第一sql语句解析所生成的语法树
161.继续参照图4,在根据第一sql语句所对应的语句类型获取所涉及的第一表名称之前,还可以根据待验证sql语句集合中的每一项sql语句的读取顺序以及对应的表名称分类对sql语句集合中的sql语句进行排序,以生成第一表结构对象。然后,从第一表结构对象的最后一项sql语句开始,逆序进行数据库验证;其中,若验证结果为成功,则将当前验证的sql语句从第一表结构对象中进行删除,并回滚至前一项sql语句继续进行数据库验证,并在第一表结构对象全部完成数据库验证后,输出检查报告;若验证结果为失败,则输出检查报告。
162.在一种可能的实施方式中,在得到ddl语法树后,针对不同的类型的ddl语句执行不同的表名获取方法,获取到ddl涉及的表名称,然后连接db数据库,并获取到该表的建表语句,将建表语句使用ddl解析功能生成语法树,再解析生成python对象,其中,该python对象用于记录语法树的解析结果。
163.然后,根据ddl语句读取顺序和ddl语句涉及的表名,将ddl语句按照表名分类并按物料顺序进行存储。然后,再逐库逐表,批量进行ddl语句检查。并读取单个表的生产db表结构对象和涉及到的ddl语法树清单,在将ddl语句按照逆向顺序逐条验证,并且,可以根据不同的ddl语法树类型,使用不同的检查规则。具体的,可以是先解析ddl语法树,解析出修改的字段名、字段属性,然后比较真实的表结构对象,从而检查这些字段名称是否存在,字段属性是否一致。如果生效则在真实表生产db表结构对象上进行回滚操作,删除该字段,如果不存在则进行记录。然后进行该表的下一条ddl语句检查。最后,整理检查记录,生成检查报告进行上报。
164.在本实施例中,通过基于预设词法分析器对db物料包进行逆解析,自动反向生成ddl验证sql、dml验证sql,进而减少人工生成验证方案的人力投入,提高方案的准确性。
165.此外,随着分布式架构深入发展,微服务应用兴起,子系统规模及系统调用复杂度的提高,导致应用运维成本及应用版本发布验证成本不断激增。运维人员无法从版本变更后的海量监控数据中及时且精确发现质量问题,定位故障根因。因此,本技术实施例提出了一种基于混合算法的多变量运维指标异常检测模块,从而用于关注已灰度实例的关注各项指标是否异常。
166.其中,实例级运维指标监控数据是典型的时序数据,在指标数据形态上具有周期性、规律突刺、整体抬升和下降、低峰期等特点。对于版本发布验证,运维人员不仅需关注灰度实例本身主机性能指标,更需关注版本发布对业务交易量、接口耗时及成功率等影响。
167.对于多变量的运维指标预测,指标监控数据种类繁多,数据规模大,数据流速快,要求异常检测模型处理实时指标数据,从中精确定位异常时刻。在日常运维中,对于实例级
运维指标监控数据,仅有某个维度异常而将整个多维数据判断为异常是不合理的。其中,现有异常检测算法主要有:
168.1、将多变量时序数据进行纵向分隔,通过相关算法研究和发现异常序列模式。以多变量序列为整体输入差分自编码器或生成对抗式网络等深度学习算法中,挖掘其中异常时序模型,检测模型仅输出异常结果,挖掘异常模式解释性较弱,无法根据异常显式定位故障根因指标。
169.2、将多变量时序数据进行横向分隔,转换为多个单维时间序列,利用单维时间序列领域的算法检测异常。
170.图5是本技术实施例三示出的监控性能指标检查步骤的流程示意图,图6是本技术实施例三示出的另一监控性能指标检查步骤的流程示意图。如图5-图6所示,本实施例提供的监控性能指标检查步骤,包括:
171.步骤301、获取第一执行结果中的实例级多运维指标数据,并根据数据特征确定实例级多运维指标数据的指标数据类型。
172.步骤302、根据指标数据类型确定对应的异常检测算法,并根据异常检测算法对实例级多运维指标数据进行验证处理。
173.可以将变量时序数据进行横向分隔,根据指标类型匹配对应的异常检测算法,并行检测多变量时序指标,反馈异常结果,运维人员可快速定位异常指标类型及时间段。具体的,针对不同表征类型的多维运维指标数据,可以使用横向分隔的检测算法,对稳定型、趋势型、周期型指标数据使用单维度异常检测器,可让运维人员快速判断异常指标。从而在灰度发布过程中,运维人员需及时发现系统异常,多算法混合避免使用多维深度学习算法建模,加快异常检测时间。然后,根据指标数据类型确定对应的异常检测算法,并根据异常检测算法对实例级多运维指标数据进行验证处理。
174.具体的,若所确定的指标数据类型为稳定型数据,则确定的异常检测算法为第一算法。若所确定的指标数据类型为趋势型数据,则确定的异常检测算法为基于第二算法。若所确定的指标数据类型为周期型数据,则确定的异常检测算法为基于lstm的预测算法。
175.步骤3031、若所确定的指标数据类型为稳定型数据,则确定的异常检测算法为第一算法。
176.对于稳定型运维指标,其数值稳定且指标波动幅度不大,常见异常类型为毛刺异常和整体抬升下降异常,即当前时刻是否正常取决于它的值是否与其最近的过去对齐。图7是本技术实施例四示出的基于第一算法中异常数据示意图,如7图所示,若数值短暂激增或减少称为毛刺,若数值变化为永久性的,则成为整体抬升。版本发布后,运维人员需及时关注新版应用是否会出现cpu使用飙高,或者io占用过多及成功率抖动异常。
177.基于系统高可用及高性能架构,一般会基于经验值设定阈值监控。此类传统监控在指标达到临界告警值之前运维人员无法感知,无法提前知悉潜在异常。因此,在本步骤中可以基于第一算法对稳定型指标的常见异常进行检测。
178.步骤3032、若所确定的指标数据类型为趋势型数据,则确定的异常检测算法为第二算法。
179.在本步骤中,由于业务接口耗时指标往往以数据中心idc级别汇聚,与数据库部署机房相同的应用实例处理请求的整体耗时较低,呈现多簇心分布的形态。版本发布后,运维
人员需关注已灰度实例与该idc其它实例相比是否存在离群现象。传统监控往往使用固定阈值,但需针对每个机房单独设置异常检测阈值,维护成本高且db切换或接口更换需重新配置。因此,本步骤使用基于第二算法,计算idc中各实例的聚类簇心,以簇心与该簇中最远时序的距离为异常阈值。通过dtw计算已灰度实例接口耗时序列与本机房簇心的距离,若大于异常阈值,则判定该耗时序列为离群异常。
180.步骤3033、若所确定的指标数据类型为周期型数据,则确定的异常检测算法为基于lstm的预测算法。
181.在本步骤中,由于业务交易量指标呈现出较强的周期性,存在业务高低峰,根据实际业务情况的不同,指标数值波形形态有所区别。若使用同环比或固定阈值等异常检测方法,误判及漏率较高。因此,本步骤使用基于lstm长短周期预测算法的业务交易量预测异常检测,使用lstm算法学习生成业务交易量的预测模型,得到版本发布后各判定时刻的业务交易量预测值r。采用动态阈值设定法,以天为周期单位,将当前指标数据与历史同期数据进行对比,计算历史同期平均增长率y%,认定同期增长范围(r-r*y%,r+r*y%)内的为正常数据,其余判定为异常值。
182.在本实施例中,通过基于多算法混合的多变量运维指标异常检测方式,在发布后对实例级别关键监控指标进行异常波动检测以及离群检测。
183.图8是本技术实施例四示出的基于第三算法的流程示意图。如图8所示,本实施例提供的第三算法,包括:
184.步骤401、同步使用两个滑动窗口遍历所述实例级多运维指标数据,并确定两个滑动窗口的特征统计量。
185.在本步骤中,可以同步使用两个滑动窗口遍历实例级多运维指标数据,并确定两个滑动窗口的特征统计量,特征统计量用于表征实例级多运维指标数据的集中趋势特征。
186.具体的。第三算法中是基于滑动窗口及离群点发现的异常检测模块,提供不同组件可以组合成针对不同场景和不同类型的异常检测模型。第三算法同步使用多个滑动窗口遍历原始数据,持续跟踪原始序列数值与窗口平均值或中值间的差异。其中,上述多个滑动窗口的特征统计量可以为窗口平均值或中值间。
187.步骤402、将实例级多运维指标数据分别与两个滑动窗口的特征统计量进行作差,并生成特征序列。
188.可以将判定时刻数据与前后参考窗口的统计量做差,重构得到特征序列s1,其中,使用同步滑动窗口方法重构序列,对前后窗口的聚合操作,通过重构序列表征原始序列的异动变化。避免单窗户滑动的序列表征不足,聚合操作使用平均值,整体统计窗口内的数值变化,从而减少某个离群点的影响。
189.步骤403、利用箱型图离群点检测算法对特征序列进行检验,当确定实例级多运维指标数据中与两个滑动窗口的统计数据偏差大于预设阈值时,则确定实例级多运维指标数据为异常。
190.具体的,对特征序列s1应用箱型图离群点检测方法进行检验。当左右窗口中的统计数据显著不同时,则判定该时刻出现异常变动。图9是本技术实施例四示出的主机指标时间序列示意图。如图9所示,在本步骤中,为考虑原始序列整体性,以平均值为统计变量对原始窗口进行聚合操作及异常判定,各类异常具体判定方法如下,其中μ
w1
为前窗口均值,μ
w2
为后窗口均值,v
t1
为判定时刻的指标数值,q1为第一四分位数,q3为第三四分位数,iqr为四分位距,即第三四分位数与第一四分位数的差距。其中,对于s1可以根据一下公式进行确定:
[0191][0192]
继续参照图7与图9,对于以下几类数据异常,可以构建不同的异常表达式:
[0193]
毛刺异常:若异常点的前窗口与后窗口的均值符合预设正常条件且前窗口与后窗口的均值差值在预设范围内,异常点指标数据增幅大于预设增幅且大于所述前后窗口均值,则确定异常点对应的所述实例级多运维指标数据属于毛刺异常。具体的,异常点前后窗口均值正常且数值接近,异常点指标数据激增且大于前后窗口均值,其异常表达式如下。
[0194][0195]
整体抬升异常:若异常点前窗口均值的均值符合预设正常条件且小于后窗口均值,异常点指标数据增幅大于预设增幅且大于前窗口均值,则确定异常点对应的实例级多运维指标数据属于整体抬升异常。即异常点前窗口均值正常且小于后窗口均值,异常点指标数据激增且大于前窗口均值。
[0196]
若异常点前窗口均值的均值符合预设正常条件且大于后窗口均值,异常点指标数据增幅小于预设增幅且大于前窗口均值,则确定异常点对应的实例级多运维指标数据属于整体下降异常。即异常点前窗口均值正常且大于后窗口均值,异常点指标数据激增且小于前窗口均值。
[0197]
具体的,其异常表达式如下:
[0198]

w1
<μ
w2
&&μ
w1
<v
t1
)||(μ
w1
>μ
w2
&&μ
w2
<v
t1
)
[0199]
重构序列的异常判定:将判定时刻数据与前窗口与后窗口的统计量做差,重构得到特征序列,以确定特征序列的正常范围,若当前数据与前窗口与后窗口的统计量之差不在所述正常范围内,则确定特征序列为异常。具体的,计算重构序列s1的正常范围为[q
1-c*iqr,q3+c*iqr],若当前值与窗口统计量之差不在正常范围内则判定为异常。其中,根据不同类型的异常表现,基于第一算法调整异常检测模型参数,即窗口数w和界限参数c,基于箱型图以四分位数计算正常区间,使用不同的界限参数c。
[0200]
滑动窗口的长度控制检测时间尺度:若确定异常点对应的实例级多运维指标数据属于毛刺异常,则将设置左窗口的长度大于右窗口的长度,以提高异常点发生前所采集的数据数量,多个滑动窗口包括左窗口与右窗口。若异常点对应的实例级多运维指标数据属于整体抬升异常或整体下降异常,则将左窗口与右窗口的长度设置为满足长度要求,以捕获满足预设时长内的稳定数据。具体的,对于毛刺异常,左窗口比右窗口长,以捕获最近过去的代表性信息;对于整体水平抬升或下降异常,左右窗口都应设置为足够长以捕获长期稳定状态。其中,对于的前后窗口长度,毛刺类型需采集异常点发生前足够多的数值,设置为左窗口大于右窗口。抬升异常需排除毛刺异常的干扰,需左右窗口足够大,通过平均值聚合弱化毛刺离群点的干扰。
[0201]
此外,对于第一算法实现,对于毛刺异常,可以设定滑动左窗口为w
l
为10,滑动右wr为5,并设定历史四分位数范围正常范围的界限参数c为3,即重构序列s1的正常范围为[q
1-3*iqr,q3+3*iqr]。通过设定较大尺度的前窗口w
l
和较小的界限参数c,增强算法对发布前主
机指标的注意力及异常捕获敏感度。而对于整体抬升下降异常,可以设定前后窗口w均为10,并设定历史四分位数范围正常范围的界限参数c为6,即重构序列s1的正常范围为[q
1-6*iqr,q3+6*iqr]。通过设定前后相同的窗口尺度及较大的界限参数c,同时关注判定点前后的指标数值变化并将正常范围放大避免毛刺的干扰。
[0202]
图10是本技术实施例五示出的基于第四算法的流程示意图。如图10所示,本实施例提供的第四算法,包括:
[0203]
步骤501、选择初始化的k个指标数据作为初始聚类中心。
[0204]
在本步骤中,第四算法,可以是一种迭代求解的密度聚类分析算法。
[0205]
步骤a:选择初始化的k个样本作为初始聚类中心,a=a1,a2……ak
,在本步骤中以idc的个数聚类并生成对应的簇心,在每个idc中随机选择一个实例的耗时指标序列为初始聚类中心。
[0206]
步骤502、将实例级多运维指标数据中的各个数据按照与初始聚类中心的距离分配至距离最小的初始聚类中心所对应的类中。
[0207]
将实例级多运维指标数据中的各个数据按照与初始聚类中心的距离分配至距离最小的初始聚类中心所对应的类中,其中,选择dtw计算累积距离作为距离的度量。
[0208]
步骤b:针对各idc的实例耗时指标序列xi计算它到每个聚类中心的距离并将其分到距离最小的簇心所对应的类中,其中,聚类中心即为簇心。在本步骤中中选择dtw计算累积距离作为距离度量进行时间序列相似性的比较。值得说明的,本步骤所基于dtw计算聚类距离的方式,可以消除历史时序数据可能出现的尺度长短不一致问题,将时序指标序列归整对齐,避免单独使用欧式距离为相识度衡量。
[0209]
步骤503、对初始聚类中心所对应的类重新确定聚类中心,以作为后续步骤进行聚类新的聚类中心。
[0210]
步骤c:针对各簇心aj,重新计算它的聚类中心
[0211]
然后,重复执行步骤b,步骤c,直到达到中止条件迭代次数或最小误差变化,即所完成迭代次数或迭代结果满足预设条件。
[0212]
步骤504、重复将实例级多运维指标数据中的各个数据按照与当前的聚类中心的距离,分配至距离最小的聚类中心所对应的类中,并更新对应的类的聚类中心,直至完成迭代次数或迭代结果满足预设条件,以确定聚类中心序列。
[0213]
步骤505、计算聚类中心序列当前的聚类中心与所对应类内最远数据的累积距离,以作为实例级多运维指标数据的异常指标阈值。
[0214]
在本步骤中所采用的动态时间归整算法dtw,是一种时间序列相似性比较的常用算法。基于动态规划思想寻找最佳归整路径拉伸或压缩时间序列,并计算累积距离,得到两个时间序列的相识度,以此为距离度量可避免单纯使用欧式距离无法计算长度不一致时间序列。
[0215]
对于时间序列t={q1,q2,
…qn
},r={c1,c2,
…cm
},长度分别为n与m,应用dtw计算t与r相似度的过程如下:
[0216]
构建大小为n
×
m的矩阵d,矩阵元素d
ij
=dist(qi,cj),其中dist为欧式距离计算函数;
[0217]
采用动态规划搜索方法,在矩阵d中搜索从d
11
到d
nm
的所有规整搜索路径,并用w来表示。根据单调性及连续性可知其搜索路径w中路径已搜索点(i,j),下一个通过点只能为下列三种情况之一:(i+1,j)、(i+1,j+1)、(i,j+1)。
[0218]
再通过求得时间序列t,r规整代价最小的路径dtw,其中wk为第k条搜索路径,以欧式距离作为每条搜索路径的度量;分母中的k主要是用来对不同的长度的规整路径做补偿。对矩阵d中从d
11
到d
nm
的最短路径计算累积距离γ,累积距离γ(i,j)为点qi和cj的欧式距离(dist(qi,cj))与可到达该点的最小累积距离之和,即γ(i,j)=dist(qi,cj)+min{γ(i-1,j),γ(i-1,j-1),γ(i,j-1)},以此作为时间序列t和r的相似度度量。
[0219]
值得说明的,在本步骤中,以dtw的累积距离为运维指标时序序列间的距离衡量和相识度衡量,能够对齐序列间的尺度及考虑指标序列的时间连续性,比起欧式距离更准确。
[0220]
步骤506、若实例级多运维指标数据与对应的聚类中心之间的距离大于异常指标阈值,则确定实例级多运维指标数据为异常。
[0221]
在本步骤中,根据基于第二算法得出簇心序列,各簇心序列应是各idc耗时指标序列的表征。通过计算各簇心序列与簇内最远序列的dtw累计距离作为异常阈值距离,并计算已灰度的实例业务耗时指标序列与本idc簇心序列的dtw累积距离,若大于异常阈值距离,则判定该实例级多运维指标数据耗时异常。
[0222]
在本实施例中,计算各idc耗时指标时序数据簇心,以簇心及簇内最远时序样本距离为异常阈值,并且,通过设定动态阈值,自动设定各idc耗时异常阈值,可以减少固定阈值的维护成本。
[0223]
图11是本技术实施例六示出的基于lstm的预测算法的流程示意图。如图11所示,本实施例提供的lstm的预测算法,包括:
[0224]
步骤601、基于lstm算法以及历史多运维指标数据学习生成用于对周期型数据记性预测的预测模型。
[0225]
lstm,即长短期记忆网络,是一种通过引入门函数控制时序信息的累积及传递,构建记忆单元选择及遗忘部分信息,挖掘时间序列中时序变化规律的循环神经网络。
[0226]
图12是本技术实施例六示出的lstm网络结构示意图。如图12所示,t时刻输入为当前时刻网络输入值x
t
,上一时刻lstm输出值h
t-1
,当前时刻记忆单元状态c
t
。c是lstm网络的核心记忆单元(cell),主要对循环信息进行线性传递并非线性输出信息到隐藏层的外部状态h
t
。其中,遗忘门决定了上一时刻的单元状态c
t-1
需要遗忘多少信息并传递到c
t
;输入门决定了当前时刻网络的输入x
t’有多少保存到单元状态c
t
;输出门决定了控制单元状态c
t
有多少输出到lstm的当前输出值h
t

[0227]
并且,对于lstm记忆单元网络构建,可以采取门函数为全连接层网络,输出0到1之间实数向量,表示以一定的比例保留信息传递。门函数可设定为g(x)=σ(wx+b),其中σ为logistic函数,其输出区间为[0,1];w为门函数的权重向量;b为偏重项。经门函数处理后,记忆单元中各项输出如下:
[0228]
输入门:i
t
=σ(w
xi
x
t
+w
hiht-1
+bi);
[0229]
遗忘门:f
t
=σ(w
xf
x
t
+w
hfht-1
+bf);
[0230]
输出门,o
t
=σ(w
xo
x
t
+w
hoht-1
+bo);
[0231]
当前输入的单元状态,c

t
=tanh(w
xc
x
t
+w
hcht-1
+bc);
[0232]
当前时刻的单元状态:c
t
=f
t
⊙ct-1
+i
t
⊙c′
t

[0233]
lstm的最终输出:h
t
=o
t

tanh(c
t
)。
[0234]
而对于lstm预测算法实现,在本步骤中,通过python常用的神经网络框架keras构建lstm预测模型,仅需调整参数来activation函数,lstm层数,输入输出的变量维度对模型进行优化,屏蔽底层模型计算细节,具体构建过程如下:
[0235]
数据归一标准化,加快训练模型的loss下降及收敛速度。本方法使用z-score标准化方法,使得标准化后序列符合标准正态分布,均值为0且标准差为1,标准化公式如下,其中μ为原始序列均值,σ为原始序列方差:
[0236][0237]
激活函数选择,确定lstm模块的激活函数为tanh,接收,lstm输出的完全连接人工神经网络激活函数为linear。
[0238]
模型训练参数确定,确定网络节点的舍弃率为0.2,防止模型过拟合;确定loss的计算方法为均方误差;确定网络权重参数的迭代更新方式为rnn网络常用的rmsprop算法。
[0239]
确定模型训练超参数epoch为10和batch size为100,batch_size为每次随机送入网络中训练的数据规模,为保证模型收敛速度设置为100。epoch为完整的数据样本在网络中训练的次数,为保证参数训练的优化设置为10。
[0240]
步骤602、根据预测模型确定各个时刻下的预测值,并根据预测值以及同期平均增长率确定同期增长范围。
[0241]
步骤603、若实例级多运维指标数据超出同期增长范围,则确定实例级多运维指标数据为异常。
[0242]
在步骤602-步骤603中,实例级多运维指标数据若为业务交易量指标,则会呈现出较强的周期性,存在业务高低峰,根据实际业务情况的不同,指标数值波形形态有所区别。使用基于lstm长短周期预测算法的业务交易量预测异常检测,使用lstm算法学习生成业务交易量的预测模型,得到版本发布后各判定时刻的业务交易量预测值r。采用动态阈值设定法,以天为周期单位,将当前指标数据与历史同期数据进行对比,计算历史同期平均增长率y%,认定同期增长范围(r-r*y%,r+r*y%)内的为正常数据,其余判定为异常值。
[0243]
若对于周期型指标数据,单独使用同环比异常检测阈值,无法根据业务高低峰有效计算出指标正常范围。而在在本实施中,通过结合预测模型和统计同环比计算,计算灰度时刻实例级业务交易量正常区间。以lstm预测值为基准,以同比平均增长率为上下浮动区间,形成正常区间的上下甬道,从而减少类似业务交易量等周期变化型指标的误告警。
[0244]
图13是本技术实施例七示出的灰度发布验证系统的流程示意图。图图13所示,本实施例提供的灰度发布验证系统700,包括:
[0245]
发布模块701,用于在对子系统进行版本更新时,执行第一灰度发布步骤,并确定执行所述第一灰度发布步骤后的第一执行结果;
[0246]
处理模块702,用于对所述第一执行结果进行验证处理,其中,所述验证处理包括
应用验证、数据库验证、业务功能验证以及监控性能指标检查中的至少一项,所述应用验证用于对所述第一执行结果中的应用配置结果进行验证,所述数据库验证用于对所述第一执行结果中的数据库操作语句进行验证,所述业务功能验证用于对所述第一执行结果中的结构化查询语言sql语句执行结果进行验证,所述监控性能指标检查用于对所述第一执行结果中的实例级别指标数据进行检查;
[0247]
所述处理模块702,还用于在所述第一执行结果通过所述验证处理时,则执行第二灰度发布步骤,所述第二灰度发布步骤为所述第一灰度发布步骤的下一个灰度发布步骤;
[0248]
所述处理模块702,还用于当所述灰度发布步骤序列中的所有灰度发布步骤执行完毕,并且执行结果通过所述验证处理时,确定所述子系统的版本更新所对应的灰度发布验证成功。
[0249]
在一种可能的设计中,所述处理模块702,具体用于:
[0250]
读取数据库db物料包中的待验证sql语句集合,并利用预设词法分析器对所述待验证sql语句集合中的每一项sql语句进行解析,以生成对应的语法树;
[0251]
根据每一项sql语句所对应的语法树以及预设对象分类条件确定每一项sql语句所对应的语句类型;
[0252]
根据第一sql语句所对应的语句类型获取所涉及的第一表名称,并根据所述第一表名称连接对应的第一数据库,其中,所述第一sql语句为所述待验证sql语句集合中的任意一项语句;
[0253]
获取所述第一数据库对应的第一操作语句,并根据所述预设词法分析器对所述第一操作语句进行解析,以生成第一语法树;
[0254]
按照预设语法树语句类型匹配规则对待验证语法树以及所述第一语法树确定校验,以确定对应数据库中的表与字段属性生效状态,所述待验证语法树为利用所述预设词法分析器对所述第一sql语句解析所生成的语法树。
[0255]
在一种可能的设计中,所述处理模块702,具体用于:
[0256]
确定所述语句类型为数据定义语言ddl的语句为所述第一sql语句;
[0257]
根据预设分类规则确定所述第一sql语句对应的第一操作类型,所述第一操作类型用于确定所述第一数据库中所述第一sql语句对应的所述第一操作语句。
[0258]
在一种可能的设计中,在所述根据第一sql语句所对应的语句类型获取所涉及的第一表名称之前,还包括:
[0259]
根据所述待验证sql语句集合中的每一项sql语句的读取顺序以及对应的表名称分类对所述sql语句集合中的sql语句进行排序,以生成第一表结构对象;
[0260]
从所述第一表结构对象的最后一项sql语句开始,逆序进行所述数据库验证;其中,若验证结果为成功,则将当前验证的sql语句从所述第一表结构对象中进行删除,并回滚至前一项sql语句继续进行所述数据库验证,并在所述第一表结构对象全部完成所述数据库验证后,输出检查报告;若验证结果为失败,则输出检查报告。
[0261]
在一种可能的设计中,所述处理模块702,具体用于:
[0262]
获取第一执行结果中的所述实例级多运维指标数据,并根据数据特征确定所述实例级多运维指标数据的指标数据类型;
[0263]
根据所述指标数据类型确定对应的异常检测算法,并根据所述异常检测算法对所
述实例级多运维指标数据进行验证处理。
[0264]
在一种可能的设计中,所述处理模块702,具体用于:
[0265]
同步使用多个滑动窗口遍历所述实例级多运维指标数据,并确定所述多个滑动窗口的特征统计量,所述特征统计量用于表征所述实例级多运维指标数据的集中趋势特征;
[0266]
将所述实例级多运维指标数据分别与所述多个滑动窗口的特征统计量进行作差,并生成特征序列;
[0267]
利用箱型图离群点检测算法对所述特征序列进行检验,当确定所述实例级多运维指标数据中与所述多个滑动窗口的统计数据偏差大于预设阈值时,则确定所述实例级多运维指标数据为异常。
[0268]
在一种可能的设计中,所述实例级多运维指标数据的异常,包括:毛刺异常、整体抬升异常以及整体下降异常;
[0269]
其中,若异常点的前窗口与后窗口的均值符合预设正常条件且前窗口与后窗口的均值差值在预设范围内,异常点指标数据增幅大于预设增幅且大于所述前后窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,所述多个滑动窗口包括所述前窗口与所述后窗口;
[0270]
若异常点前窗口均值的均值符合预设正常条件且小于后窗口均值,异常点指标数据增幅大于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常;
[0271]
若异常点前窗口均值的均值符合预设正常条件且大于后窗口均值,异常点指标数据增幅小于预设增幅且大于前窗口均值,则确定所述异常点对应的所述实例级多运维指标数据属于所述整体下降异常。
[0272]
在一种可能的设计中,所述处理模块,具体用于:
[0273]
将判定时刻数据与前窗口与后窗口的统计量做差,重构得到所述特征序列,以确定特征序列的正常范围,若当前数据与前窗口与后窗口的统计量之差不在所述正常范围内,则确定所述特征序列为异常。
[0274]
在一种可能的设计中,若确定所述异常点对应的所述实例级多运维指标数据属于所述毛刺异常,则将设置左窗口的长度大于右窗口的长度,以提高所述异常点发生前所采集的数据数量,所述多个滑动窗口包括所述左窗口与所述右窗口;
[0275]
若所述异常点对应的所述实例级多运维指标数据属于所述整体抬升异常或所述整体下降异常,则将所述左窗口与所述右窗口的长度设置为满足长度要求,以捕获满足预设时长内的稳定数据。
[0276]
在一种可能的设计中,所述处理模块702,具体用于:
[0277]
选择初始化的k个指标数据作为初始聚类中心,所述k为正整数;
[0278]
将所述实例级多运维指标数据中的各个数据按照与初始聚类中心的距离分配至距离最小的初始聚类中心所对应的类中,其中,计算累积距离作为所述距离的度量;
[0279]
对初始聚类中心所对应的类重新确定聚类中心,以作为后续步骤进行聚类新的聚类中心;
[0280]
重复将所述实例级多运维指标数据中的各个数据按照与当前的聚类中心的距离,分配至距离最小的聚类中心所对应的类中,并更新对应的类的聚类中心,直至完成迭代次
数或迭代结果满足预设条件,以确定聚类中心序列;
[0281]
计算所述聚类中心序列当前的聚类中心与所对应类内最远数据的累积距离,以作为所述实例级多运维指标数据的异常指标阈值;
[0282]
若所述实例级多运维指标数据与对应的聚类中心之间的距离大于所述异常指标阈值,则确定所述实例级多运维指标数据为异常。
[0283]
在一种可能的设计中,所述处理模块702,具体用于:
[0284]
基于lstm算法以及历史多运维指标数据学习生成用于对周期型数据记性预测的预测模型;
[0285]
根据所述预测模型确定各个时刻下的预测值,并根据所述预测值以及同期平均增长率确定同期增长范围;
[0286]
若所述实例级多运维指标数据超出所述同期增长范围,则确定所述实例级多运维指标数据为异常。
[0287]
本实施例提供的灰度发布验证系统,可以用于执行上述方法实施例中的步骤。对于本技术装置实施例中未披露的细节,请参照本技术上述的方法实施例。
[0288]
图14是本技术根据一示例实施例示出的电子设备的结构示意图。如图14所示,本实施例提供的一种电子设备800,包括:
[0289]
处理器801;以及,
[0290]
存储器802,用于存储所述处理器的可执行指令,该存储器还可以是flash(闪存);
[0291]
其中,所述处理器801配置为经由执行所述可执行指令来执行上述方法中的各个步骤。
[0292]
可选地,存储器802既可以是独立的,也可以跟处理器801集成在一起。
[0293]
当所述存储器802是独立于处理器801之外的器件时,所述电子设备800,还可以包括:
[0294]
总线803,用于连接所述处理器801以及所述存储器802。
[0295]
本实施例还提供一种可读存储介质,可读存储介质中存储有计算机程序,当电子设备的至少一个处理器执行该计算机程序时,电子设备执行上述方法中的各个步骤。
[0296]
本实施例还提供一种程序产品,该程序产品包括计算机程序,该计算机程序存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该计算机程序,至少一个处理器执行该计算机程序使得电子设备实施上述方法中的各个步骤。
[0297]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0298]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1