1.本发明实施例涉及金融科技(fintech)领域,尤其涉及一种确定微服务调用链的方法及装置。
背景技术:
2.随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
3.微服务是一种面向服务架构(soa)的变体,把应用程序设计成一系列松耦合的细粒度服务,即一个大型复杂软件应用可由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。基于微服务的架构特点,开始逐渐将微服务应用于金融科技领域,以便为金融企业或金融企业的客户提供更为便利的服务。
4.随着微服务的不断应用,尤其在金融科技领域,为了确保金融服务质量,如何对微服务调用链路中出现的告警原因进行定位成为急需解决的问题。现阶段,通常基于运维人员对告警原因进行定位。比如,针对某一金融交易软件应用,在监控系统监控到该金融交易软件应用的某个微服务(或某几个微服务)的业务指标出现异常告警时,依靠运维人员的分析来确定告警原因,然而,由于这种处理方式需要依靠人工进行分析,需要耗费一定的时间,导致异常告警的原因定位存在一定滞后性。
5.综上,目前亟需一种确定微服务调用链的方法,用以实现微服务调用链的自动准确生成。
技术实现要素:
6.本发明实施例提供了一种确定微服务调用链的方法及装置,用以实现微服务调用链的自动准确生成。
7.第一方面,本发明实施例提供了一种确定微服务调用链的方法,包括:
8.获取同一业务场景在第一时段的m笔交易的调用记录;其中,m为大于1的整数;所述调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的;
9.针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路;
10.将所述m笔交易的交易链路进行聚合,生成针对所述业务场景的第一微服务调用链。
11.上述技术方案中,通过获取同一业务场景在第一时段的m笔交易的调用记录,并针对每笔交易,以业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路。再将m笔交易的交易链路进行聚合,就可以生成针对业务场景的第一微服务调用链。由于现有技术依靠人工分析来确定告警原因,需要耗费一定的时间,且由于依赖人工分析会导致确定出的告警原因准确性不高,而该方法是先自动准确地确定出实时的微服务调用链,再基于该实时的微服务调用链与业务场景的告警数据进行关联分析,如此可以
及时准确地确定出业务场景出现异常告警的真实告警原因,因此该方法可以实现微服务调用链的自动准确生成,并可以节省人力时间成本,从而有助于提高运维问题排查的效率。
12.可选地,所述获取同一业务场景在第一时段的m笔交易的调用记录,包括:
13.从交易日志记录中获取所述第一时段内与所述业务场景对应的交易记录;
14.基于所述交易记录,确定出所述业务场景中m笔交易的调用记录。
15.上述技术方案中,通过从交易日志记录中获取第一时段内与业务场景对应的交易记录,并对该第一时段内与业务场景对应的交易记录进行解析处理,以及对解析后的交易记录进行结构化处理,可以去除一些无用的交易记录数据,以便降低构建交易链路的数据处理量,从而可以提高后续构建交易链路的处理效率。
16.可选地,所述以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路,包括:
17.从所述该笔交易的调用记录中确定出源节点为所述核心节点时所对应的第一调用信息,以所述源节点为构建起点,向所述第一调用信息中的目标节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第一调用链路;
18.从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路;
19.将所述该笔交易的第一调用链路与所述该笔交易的第二调用链路进行聚合,生成所述该笔交易的交易链路。
20.上述技术方案中,通过以业务场景的核心节点为构建起点,可以确保同一业务场景中m笔交易的交易链路能够及时准确地进行融合,并可以避免同一业务场景中m笔交易的交易链路在进行融合时,该业务场景中的核心节点在不同调用层重复出现,影响后续通过调用链路对出现业务指标告警的真实告警原因进行定位和跟踪的准确性。同时,以业务场景的核心节点为构建起点,可以及时准确地进行构建同一业务场景中m笔交易的交易链路。
21.可选地,所述第二调用链路包括与所述核心节点直连的调用链路和与所述核心节点非直连的调用链路;
22.所述从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路,包括:
23.从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为所述核心节点时所对应的第三调用信息,以所述目标节点为构建起点,向所述第三调用信息中的源节点的方向进行构建,直至未参与构建该笔交易的第一调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点直连的调用链路;
24.从未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中确定出源节点为所述与所述核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,以所述源节点为构建起点,向所述第四调用信息中
的目标节点的方向进行构建,直至未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点非直连的调用链路。
25.上述技术方案中,通过从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为核心节点时所对应的第三调用信息,并以该目标节点为构建起点进行构建,能够准确地构建出与核心节点直连的调用链路。再从未参与构建该笔交易的第一调用链路以及未参与构建与核心节点直连的调用链路的调用记录中确定出源节点为与所述核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,并以该源节点为构建起点进行构建,能够准确地构建出与核心节点非直连的调用链路。如此,可以为后续准确地生成该笔交易的交易链路提供支持。
26.可选地,在构建出该笔交易的第一调用链路之后,还包括:
27.将参与构建该笔交易的第一调用链路的调用记录标注上已处理的标识;
28.在构建出与所述核心节点直连的调用链路之后,还包括:
29.将参与构建与所述核心节点直连的调用链路的调用记录标注上已处理的标识;
30.在构建出与所述核心节点非直连的调用链路之后,还包括:
31.将参与构建与所述核心节点非直连的调用链路的调用记录标注上已处理的标识;
32.将该笔交易的调用记录中未标注上已处理标识的调用记录设置为未关联交易,并将所述未关联交易反馈给交易处理人员进行相应处理。
33.上述技术方案中,通过对已参与构建调用链路的调用记录标注上已处理标识,可以便于在构建调用链路时能够及时准确地识别出哪些调用记录已经被用于构建此前的调用链路,从而避免该调用记录再次被用于构建当前的调用链路。
34.可选地,在生成针对所述业务场景的第一微服务调用链之后,还包括:
35.获取所述业务场景的第二微服务调用链;所述第二微服务调用链是根据所述业务场景在第二时段的交易的调用记录生成的;所述第二时段位于所述第一时段之前;
36.确定所述第二微服务调用链与所述第一微服务调用链的相似度值;
37.若确定所述相似度值小于等于预设阈值,则将所述第二微服务调用链与所述第一微服务调用链进行融合,构建出第三微服务调用链。
38.上述技术方案中,获取基于第二时段的交易的调用记录生成的第二微服务调用链与第一微服务调用链进行对比,并在确定第二微服务调用链与第一微服务调用链的相似度值小于等于预设阈值时,对第一微服务调用链进行更新,如此可以确保微服务调用链能够及时地更新,并可以确保当前展示的微服务调用链符合该业务场景实际的微服务调用关系。
39.可选地,在生成针对所述业务场景的第一微服务调用链之后,还包括:
40.若确定第一节点的业务指标发生告警,则获取所述第一节点的业务指标告警信息;所述第一节点为任一业务场景的第一微服务调用链中的任一个节点;
41.在确定所述第一节点不为核心节点且业务指标不为核心指标时,根据所述业务指标告警信息,确定出对应的业务指标告警类型,并基于所述第一节点确定出所述第一节点所在的至少一个第一微服务调用链;
42.针对至少一个第一微服务调用链中每个第一微服务调用链,确定所述第一节点发
生业务指标告警时在所述第一微服务调用链中的业务影响范围;
43.从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息;所述第二节点为每个第一微服务调用链中除第一节点以外的任一个节点;
44.基于所述业务指标告警类型和所述业务影响范围,并结合所述第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因。
45.上述技术方案中,若确定第一节点的业务指标发生告警,获取该第一节点的业务指标告警信息,并在确定第一节点不为核心节点且业务指标不为核心指标时,确定出业务指标告警类型以及第一节点所在的至少一个第一微服务调用链,并确定第一节点发生业务指标告警时在每个第一微服务调用链中的业务影响范围。再从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息。然后基于业务指标告警类型和业务影响范围,并结合第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,可以快速准确地定位出第一节点的业务指标发生告警的真实告警原因。
46.可选地,所述确定所述第一节点发生业务指标告警时在所述第一微服务调用链中的业务影响范围,包括:
47.针对至少一个第一微服务调用链中每个第一微服务调用链,从业务场景记录中匹配出与所述第一微服务调用链中核心节点对应的业务场景和业务指标等级;所述业务场景记录是根据核心节点、业务场景以及业务指标等级构建的;
48.根据所述业务场景和所述业务指标等级,确定出所述第一节点发生业务指标告警时的业务影响范围。
49.上述技术方案中,基于第一微服务调用链,可以及时地确定出该第一微服务调用链中的核心节点,并基于核心节点可以快速准确地从业务场景记录中匹配出对应的业务场景和业务指标等级。再根据业务场景和业务指标等级就可以准确地确定出第一节点发生业务指标告警时的业务影响范围。
50.可选地,所述从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息,包括:
51.针对每个第二节点,从告警数据库中匹配出与所述第二节点对应的告警时间属于设定时段内的业务告警信息;
52.从配置管理数据库中确定出所述第二节点对应的虚拟机ip地址、母机ip地址,并从所述告警数据库中匹配出与所述虚拟机ip地址、所述母机ip地址对应的告警时间属于设定时段内的非业务指标告警信息;
53.将所述业务告警信息和所述非业务指标告警信息确定为所述第二节点的告警信息。
54.上述技术方案中,由于考虑到业务指标发生告警既有可能是业务指标的原因也有可能是非业务指标的原因,因此该方法基于各第二节点从告警数据库中匹配出各自对应的业务指标告警信息,并基于各第二节点对应的虚拟机ip地址、母机ip地址,从告警数据库中匹配出各自对应的非业务指标告警信息,以便为后续准确地定位出业务指标发生告警的真实告警原因提供支持。
55.可选地,所述基于所述业务指标告警类型和所述业务影响范围,并结合所述第一
节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因,包括:
56.根据所述业务指标告警类型,确定出对应的告警原因溯源方式;
57.基于所述业务影响范围,并按照所述告警原因溯源方式,对所述第一节点的业务指标告警信息以及各第二节点的告警信息进行分析,确定出针对业务指标告警的告警原因。
58.上述技术方案中,由于针对不同的业务指标告警类型,采用不同的告警原因溯源方式,因此在基于第一节点的业务指标告警类型确定出对应的告警原因溯源方式后,可以及时地基于业务影响范围,并按照该告警原因溯源方式,对第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,以便准确地定位出真实告警原因。
59.可选地,在获取同一业务场景在第一时段的m笔交易的调用记录之前,还包括:
60.确定所述业务场景发生告警;所述第一时段为告警前预设时段。
61.上述技术方案中,该方法也可以在业务场景发生告警时,基于该业务场景在告警前的第一时段内的m笔交易的调用记录,生成该业务场景的第一微服务调用链,如此可以确保生成的第一微服务调用链更符合业务场景发生告警时的微服务调用关系,以便后续更准确地确定出业务指标出现异常告警的真实告警原因。
62.可选地,在生成针对所述业务场景的第一微服务调用链之后,还包括:
63.展示所述第一微服务调用链,并展示所述第一微服务调用链中各节点所关联的状态信息。
64.可选地,所述状态信息包括以下至少一项:业务指标告警数据、服务请求的并发量、数据库资源使用情况以及机器资源使用情况。
65.上述技术方案中,在生成某一业务场景的第一微服务调用链后,展示第一微服务调用链,并将第一微服务调用链中各节点所关联的状态信息挂载在各节点上,以便可以直观地获知每个节点的状态信息,以便为确定业务指标出现异常告警的真实告警原因、节点容量分析提供支持,从而可以提高运维问题排查以及容量管理的效率。
66.第二方面,本发明实施例还提供了一种确定微服务调用链的装置,包括:
67.获取单元,用于获取同一业务场景在第一时段的m笔交易的调用记录;其中,m为大于1的整数;所述调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的;
68.处理单元,用于针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路;将所述m笔交易的交易链路进行聚合,生成针对所述业务场景的第一微服务调用链。
69.可选地,所述获取单元具体用于:
70.从交易日志记录中获取所述第一时段内与所述业务场景对应的交易记录;
71.基于所述交易记录,确定出所述业务场景中m笔交易的调用记录。
72.可选地,所述处理单元具体用于:
73.从所述该笔交易的调用记录中确定出源节点为所述核心节点时所对应的第一调用信息,以所述源节点为构建起点,向所述第一调用信息中的目标节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第一调用链路;
74.从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路;
75.将所述该笔交易的第一调用链路与所述该笔交易的第二调用链路进行聚合,生成所述该笔交易的交易链路。
76.可选地,所述第二调用链路包括与所述核心节点直连的调用链路和与所述核心节点非直连的调用链路;
77.所述处理单元具体用于:
78.从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为所述核心节点时所对应的第三调用信息,以所述目标节点为构建起点,向所述第三调用信息中的源节点的方向进行构建,直至未参与构建该笔交易的第一调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点直连的调用链路;
79.从未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中确定出源节点为所述与所述核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,以所述源节点为构建起点,向所述第四调用信息中的目标节点的方向进行构建,直至未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点非直连的调用链路。
80.可选地,所述处理单元还用于:
81.在构建出该笔交易的第一调用链路之后,将参与构建该笔交易的第一调用链路的调用记录标注上已处理的标识;
82.所述处理单元还用于:
83.在构建出与所述核心节点直连的调用链路之后,将参与构建与所述核心节点直连的调用链路的调用记录标注上已处理的标识;
84.所述处理单元还用于:
85.在构建出与所述核心节点非直连的调用链路之后,将参与构建与所述核心节点非直连的调用链路的调用记录标注上已处理的标识;
86.将该笔交易的调用记录中未标注上已处理标识的调用记录设置为未关联交易,并将所述未关联交易反馈给交易处理人员进行相应处理。
87.可选地,所述处理单元还用于:
88.在生成针对所述业务场景的第一微服务调用链之后,获取所述业务场景的第二微服务调用链;所述第二微服务调用链是根据所述业务场景在第二时段的交易的调用记录生成的;所述第二时段位于所述第一时段之前;
89.确定所述第二微服务调用链与所述第一微服务调用链的相似度值;
90.若确定所述相似度值小于等于预设阈值,则将所述第二微服务调用链与所述第一微服务调用链进行融合,构建出第三微服务调用链。
91.可选地,所述处理单元还用于:
92.在生成针对所述业务场景的第一微服务调用链之后,若确定第一节点的业务指标
发生告警,则获取所述第一节点的业务指标告警信息;所述第一节点为任一业务场景的第一微服务调用链中的任一个节点;
93.在确定所述第一节点不为核心节点且业务指标不为核心指标时,根据所述业务指标告警信息,确定出对应的业务指标告警类型,并基于所述第一节点确定出所述第一节点所在的至少一个第一微服务调用链;
94.针对至少一个第一微服务调用链中每个第一微服务调用链,确定所述第一节点发生业务指标告警时在所述第一微服务调用链中的业务影响范围;
95.从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息;所述第二节点为每个第一微服务调用链中除第一节点以外的任一个节点;
96.基于所述业务指标告警类型和所述业务影响范围,并结合所述第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因。
97.可选地,所述处理单元具体用于:
98.针对至少一个第一微服务调用链中每个第一微服务调用链,从业务场景记录中匹配出与所述第一微服务调用链中核心节点对应的业务场景和业务指标等级;所述业务场景记录是根据核心节点、业务场景以及业务指标等级构建的;
99.根据所述业务场景和所述业务指标等级,确定出所述第一节点发生业务指标告警时的业务影响范围。
100.可选地,所述处理单元具体用于:
101.针对每个第二节点,从告警数据库中匹配出与所述第二节点对应的告警时间属于设定时段内的业务告警信息;
102.从配置管理数据库中确定出所述第二节点对应的虚拟机ip地址、母机ip地址,并从所述告警数据库中匹配出与所述虚拟机ip地址、所述母机ip地址对应的告警时间属于设定时段内的非业务指标告警信息;
103.将所述业务告警信息和所述非业务指标告警信息确定为所述第二节点的告警信息。
104.可选地,所述处理单元具体用于:
105.根据所述业务指标告警类型,确定出对应的告警原因溯源方式;
106.基于所述业务影响范围,并按照所述告警原因溯源方式,对所述第一节点的业务指标告警信息以及各第二节点的告警信息进行分析,确定出针对业务指标告警的告警原因。
107.可选地,所述处理单元还用于:
108.在获取同一业务场景在第一时段的m笔交易的调用记录之前,确定所述业务场景发生告警;所述第一时段为告警前预设时段。
109.可选地,所述处理单元还用于:
110.在生成针对所述业务场景的第一微服务调用链之后,展示所述第一微服务调用链,并展示所述第一微服务调用链中各节点所关联的状态信息。
111.可选地,所述处理单元具体用于:
112.所述状态信息包括以下至少一项:业务指标告警数据、服务请求的并发量、数据库
资源使用情况以及机器资源使用情况。
113.第三方面,本发明实施例提供一种计算设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任意所述的确定微服务调用链的方法。
114.第四方面,本发明实施例提供一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任意所述的确定微服务调用链的方法。
附图说明
115.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
116.图1为本发明实施例提供的一种确定微服务调用链的方法的流程示意图;
117.图2为本发明实施例提供的一种同一业务类型不同入口进入核心业务系统的交易的不同交易的调用链路的结构示意图;
118.图3为本发明实施例提供的一种对同一业务类型中不同交易的调用链路进行划分后的结构示意图;
119.图4a为本发明实施例提供的一种交易1右树的第一层的结构示意图;
120.图4b为本发明实施例提供的一种交易1右树的第二层的结构示意图;
121.图4c为本发明实施例提供的一种交易1右树的第三层的结构示意图;
122.图5a为本发明实施例提供的一种交易2右树的第一层的结构示意图;
123.图5b为本发明实施例提供的一种交易2右树的第二层的结构示意图;
124.图5c为本发明实施例提供的一种交易2右树的第三层的结构示意图;
125.图6a为本发明实施例提供的一种交易1左树中和核心业务系统直连的第一层的结构示意图;
126.图6b为本发明实施例提供的一种交易1左树中和核心业务系统非直连的第一层的结构示意图;
127.图7a为本发明实施例提供的一种交易2左树中和核心业务系统直连的第一层的结构示意图;
128.图7b为本发明实施例提供的一种交易2左树中和核心业务系统直连的第二层的结构示意图;
129.图7c为本发明实施例提供的一种交易2左树中和核心业务系统非直连的第一层的结构示意图;
130.图8为本发明实施例提供的一种交易1的调用链路的结构示意图;
131.图9为本发明实施例提供的一种交易2的调用链路的结构示意图;
132.图10为本发明实施例提供的一种将交易1以及交易2的调用链路进行聚合后的交易调用链路的结构示意图;
133.图11为本发明实施例提供的一种将每个系统的qps挂载系统上的结构示意图;
134.图12为本发明实施例提供的一种确定微服务调用链的装置的结构示意图;
135.图13为本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
136.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
137.图1示例性的示出了本发明实施例提供的一种确定微服务调用链的方法的流程,该流程可以由确定微服务调用链的装置执行。
138.如图1所示,该流程具体包括:
139.步骤101,获取同一业务场景在第一时段的m笔交易的调用记录。
140.步骤102,针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路。
141.步骤103,将所述m笔交易的交易链路进行聚合,生成针对所述业务场景的第一微服务调用链。
142.上述步骤101中,获取同一业务场景在第一时段的m笔交易的调用记录。具体地,从交易日志记录中获取第一时段内与业务场景对应的交易记录,并基于交易记录,确定出业务场景中m笔交易的调用记录。该方法通过从交易日志记录中获取第一时段内与业务场景对应的交易记录,并对该第一时段内与业务场景对应的交易记录进行解析处理,以及对解析后的交易记录进行结构化处理,可以去除一些无用的交易记录数据,以便降低构建交易链路的数据处理量,从而可以提高后续构建交易链路的处理效率。示例性地,针对某一业务场景(比如贷款业务、借款业务等),获取该业务场景在第一时段内(比如10分钟、20分钟、30分钟或1小时等)的交易记录日志,并解析该业务场景的交易记录日志,以便采集记录交易流水号的行并进行回传处理来获取交易流水号。再基于交易流水号来获取第一时段内中各交易的交易记录数据,并对各交易的交易记录数据进行结构化处理,得到该业务场景中各交易的调用记录。其中,m为大于1的整数;调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的。
143.上述步骤102中,针对每笔交易,以业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路。具体地,针对每笔交易,从该笔交易的调用记录中确定出源节点为核心节点时所对应的第一调用信息,以源节点为构建起点,向第一调用信息中的目标节点的方向进行构建,直至调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第一调用链路。再从该笔交易的调用记录中确定出目标节点为核心节点时所对应的第二调用信息,以目标节点为构建起点,向第二调用信息中的源节点的方向进行构建,直至调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路。然后将该笔交易的第一调用链路与该笔交易的第二调用链路进行聚合,生成该笔交易的交易链路。该方法通过以业务场景的核心节点为构建起点,可以确保同一业务场景中m笔交易的交易链路能够及时准确地进行融合,并可以避免同一业务场景中m笔交易的交易链路在进行融合时,该业务场景中的核心节点在不同调用层重复出现,影响
后续通过调用链路对出现业务指标告警的真实告警原因进行定位和跟踪的准确性。同时,以业务场景的核心节点为构建起点,可以及时准确地进行构建同一业务场景中m笔交易的交易链路。其中,第一调用信息和第二调用信息中均可以包括源节点和目标节点。
144.其中,第二调用链路包括与核心节点直连的调用链路和与核心节点非直连的调用链路。具体地,从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为核心节点时所对应的第三调用信息,以目标节点为构建起点,向第三调用信息中的源节点的方向进行构建,直至未参与构建该笔交易的第一调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而准确地构建出与核心节点直连的调用链路。再从未参与构建该笔交易的第一调用链路以及未参与构建与核心节点直连的调用链路的调用记录中确定出源节点为与核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,以源节点为构建起点,向第四调用信息中的目标节点的方向进行构建,直至未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而准确地构建出与核心节点非直连的调用链路。如此,可以为准确地生成该笔交易的交易链路提供支持。
145.此外,需要说明的是,在构建出该笔交易的第一调用链路之后,需要将参与构建该笔交易的第一调用链路的调用记录标注上已处理的标识。并且在构建出与核心节点直连的调用链路之后,也将参与构建与核心节点直连的调用链路的调用记录标注上已处理的标识。以及在构建出与核心节点非直连的调用链路之后,将参与构建与核心节点非直连的调用链路的调用记录标注上已处理的标识。然后,将该笔交易的调用记录中未标注上已处理标识的调用记录设置为未关联交易,并将未关联交易反馈给交易处理人员进行相应处理。基于此,通过对已参与构建调用链路的调用记录标注上已处理标识,可以便于在构建调用链路时能够及时准确地识别出哪些调用记录已经被用于构建此前的调用链路,从而避免该调用记录再次被用于构建当前的调用链路。
146.上述步骤103中,将m笔交易的交易链路进行聚合,生成针对业务场景的第一微服务调用链。具体地,以核心节点为聚合对齐节点,将m笔交易的交易链路进行聚合,就可以实时的生成针对业务场景的第一微服务调用链。在生成针对业务场景的第一微服务调用链之后,可以定期更新生成的微服务调用链。即,获取业务场景的第二微服务调用链,其中,第二微服务调用链是根据业务场景在第二时段的交易的调用记录生成的,第二时段位于第一时段之前。再确定出第二微服务调用链与第一微服务调用链的相似度值,若确定该相似度值小于等于预设阈值,则将第二微服务调用链与第一微服务调用链进行融合,构建出第三微服务调用链,若确定该相似度值大于预设阈值,则通知人工介入进行核查。该方法通过将第二微服务调用链与第一微服务调用链进行对比,并在确定第二微服务调用链与第一微服务调用链的相似度值小于等于预设阈值时,对第一微服务调用链进行更新,如此可以确保微服务调用链能够及时地更新,并可以确保当前展示的微服务调用链符合该业务场景实际的微服务调用关系。而且,在生成针对业务场景的第一微服务调用链之后,可以展示第一微服务调用链,并展示第一微服务调用链中各节点所关联的状态信息。该方法通过将第一微服务调用链中各节点所关联的状态信息挂载在各节点上,以便可以直观地获知每个节点的状态信息,以便为确定业务指标出现异常告警的真实告警原因、节点容量分析提供支持,从而可以提高运维问题排查以及容量管理的效率。其中,状态信息可以包括业务指标告警数据、
服务请求的并发量、数据库资源使用情况以及机器资源使用情况等,本发明实施例对此并不作限定。
147.此外,在生成针对业务场景的第一微服务调用链之后,若确定第一节点的业务指标发生告警,则获取第一节点的业务指标告警信息,并在确定第一节点不为核心节点且业务指标不为核心指标时,根据业务指标告警信息,确定出对应的业务指标告警类型,以及基于第一节点确定出第一节点所在的至少一个第一微服务调用链。再针对至少一个第一微服务调用链中每个第一微服务调用链,从业务场景记录中及时准确地匹配出与第一微服务调用链中核心节点对应的业务场景和业务指标等级,并根据业务场景和业务指标等级,可以准确地确定出第一节点发生业务指标告警时的业务影响范围。然后,由于考虑到业务指标发生告警既有可能是业务指标的原因也有可能是非业务指标的原因,因此针对每个第二节点,从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的业务告警信息,以及从配置管理数据库中确定出第二节点对应的虚拟机ip地址、母机ip地址,并从告警数据库中匹配出与虚拟机ip地址、母机ip地址对应的告警时间属于设定时段内的非业务指标告警信息,将业务告警信息和非业务指标告警信息确定为第二节点的告警信息,以便为后续准确地定位出业务指标发生告警的真实告警原因提供支持。最后,由于针对不同的业务指标告警类型,采用不同的告警原因溯源方式,因此在根据业务指标告警类型,确定出对应的告警原因溯源方式之后,可以及时地基于业务影响范围,并按照告警原因溯源方式,对第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,以便准确地确定出针对业务指标告警的真实告警原因。其中,第一节点为任一业务场景的第一微服务调用链中的任一个节点;第二节点为每个第一微服务调用链中除第一节点以外的任一个节点;业务场景记录是根据核心节点、业务场景以及业务指标等级构建的。
148.需要说明的是,本发明实施例还可以在另一种情况下生成第一微服务调用链。即,在获取同一业务场景在第一时段的m笔交易的调用记录之前,若确定业务场景发生告警,则可以基于该业务场景在告警前的第一时段内的m笔交易的调用记录,生成该业务场景的第一微服务调用链,如此可以确保生成的第一微服务调用链更符合业务场景发生告警时的微服务调用关系,以便后续更准确地确定出业务指标出现异常告警的真实告警原因。具体地,该业务场景在告警前的第一时段内的m笔交易的调用记录,并针对每笔交易,以业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路。再将m笔交易的交易链路进行聚合,就可以实时的生成针对业务场景的第一微服务调用链。
149.有鉴于此,下面对本发明实施例中确定微服务调用链的方法的实施过程进行具体描述。
150.step1:定义关键业务功能以及关键系统功能。
151.由于一般企业实际关心的是面向用户的服务的可用性,而服务是由多个系统组合来提供服务,所以针对任一业务类型(比如贷款业务交易、借款业务交易等),首先会定义该业务类型所涉及的产品大类、二级产品、产品等级、产品关键功能、产品关键场景、功能等级,并定义该业务类型所涉及的核心业务系统、系统入口、对应的交易树id(identification,身份标识号),再将该业务类型所涉及的产品大类、二级产品、产品等级、产品关键功能、产品关键场景、功能等级以及对应的核心业务系统、核心业务系统入口、对应的交易树id统一管理起来。上述定义的任一关键业务所涉及的业务属性信息属于注册信
息,可以通过业务和开发在业务上线或版本迭代时在业务cmdb(configuration management database,配置管理数据库)进行更新,并将更新后的信息数据存储到业务场景表。其中,交易树id的定义为核心业务系统 核心业务系统接口的组合,用来关联交易背后的实际调用链路。
152.需要说明的是,对于交易树所需要的信息,可以通过表设计的方式进行定义,即:
153.(1)业务场景表:用于管理关键的业务指标所关联的核心业务系统、系统接口。
154.(2)交易树注册表:用于管理系统以及系统接口对应的交易树id。
155.(3)交易树明细表:用于管理实际交易树的每个明细调用,包括调用的源系统、目标系统、目标接口、服务治理信息、所处调用层级、调用顺序、是否根节点,以及属于入口模块或核心业务模块。
156.step2:获取核心业务系统入口的单笔交易调用数据。
157.根据旁路消息总线技术,可以使用交易流水号获得单笔交易的调用数据。基于此,就需要先获取生产环境实时生成的交易流水号,然后再基于交易流水号获取该单笔交易的调用数据。其中,该获取单笔交易的调用数据的过程可以为:
158.a、针对任一业务类型,获取该业务类型的交易记录日志,并解析该业务类型的交易记录日志,以便采集记录交易流水号的行并进行回传处理来获取交易流水号。
159.b、针对解析出的任一交易流水号,可以通过该交易流水号来获取该单笔交易的交易记录数据。
160.c、对该单笔交易的交易记录数据进行结构化处理,即可获得该单笔交易的调用数据。即,通过对该单笔交易的交易记录数据进行整理和归纳处理,保留调用系统(源系统)src_sys、目标系统dst_sys、目标系统接口dst_inter、layer调用层级、调用顺序sort、服务治理信息q。其中,结构化后的该单笔交易的交易记录数据(调用数据)的形式可以为:{src_sys:a,dst_sys:b,dst_inter:1,service:100,layer:1,sort:1,q:1001}。
161.step3:批量获取同一业务类型的交易调用数据。
162.针对同一业务类型的交易,可以通过不同的入口进入核心业务系统。基于此,由于经过不同的入口进入核心业务系统,就会有不同的判断逻辑来针对各自不同入口所涉及的交易,且不同的判断逻辑会导致判断分支和下游系统的差异,如此,为了获取完整的交易树信息,就需要获取更多交易的调用链路,用于构建准确的最终交易树。其中,示例性地,可以通过终端设备(比如手机、平板电脑、笔记本电脑或台式电脑等)上安装的app(application,应用程序)作为入口进入核心业务系统,或者,可以通过小程序作为入口进入核心业务系统,本发明实施例对此并不作限定。具体地,可通过下述方式批量获取同一业务类型的交易调用数据:
163.a、通过step2中获取单笔交易调用数据的方式,批量获取多笔交易的交易记录数据。
164.b、对多笔交易的交易记录数据进行结构化处理,即可获得该多笔交易的调用数据,并将该多笔交易的调用数据存储在数据库中。其中,该数据库中还存储包括交易树注册表,用于存放目前已有的交易树id,但不包含交易树的节点明细,以及存储交易树明细表,该交易树明细表包括交易树具体的交易节点和层次信息。
165.step4:将同一业务类型的多笔交易的调用数据进行聚合处理,生成该业务类型对
应的交易调用链路。
166.如图2所示,图2为本发明实施例提供放入一种同一业务类型不同入口进入核心业务系统的不同交易的调用链路的结构示意图。基于图2可知,针对同一业务类型的交易,由于可以经过不同入口进行入核心业务系统,因此该入口到达核心业务系统的距离可能也是不一致的,即核心业务系统可能在一个调用链路中处于第二层,也可能在另一个调用链路中处于第三层。这样,在对这两个调用链路合并的过程中,如果直接按照层次叠加,则可能导致核心模块在不同调用层重复出现,会影响后面通过调用链路对出现业务指标告警的真实告警原因进行定位和跟踪的准确性。
167.基于此,为了对齐核心系统,本发明实施例将单笔交易的调用链路划分为左右两个模块。即,左边的模块为入口模块,简称为左树;右边的模块为核心系统和核心下游系统,简称为右树。其中,该划分后的同一业务类型中不同交易的调用链路的结构形式可以如图3所示。
168.下面以同一业务类型中的两笔交易为例,对本发明实施例中生成交易调用链路中左右树的实施例过程进行具体描述。
169.示例性地,本发明实施例通过step2中获取交易调用数据的方式,获取同一业务类型中的两笔交易(交易1和交易2)的调用数据,并根据该两笔交易的调用数据,生成该业务类型对应的左右树。其中,该调用数据是结构化、无层次的。该交易1的调用数据为:
170.{src_sys:b,dst_sys:c,dst_inter:1,sort:1,q:1001};
171.{src_sys:b,dst_sys:c,dst_inter:2,sort:2,q:2001};
172.{src_sys:b,dst_sys:d,dst_inter:3,sort:3,q:3001};
173.{src_sys:d,dst_sys:e,dst_inter:4,sort:4,q:4001};
174.{src_sys:d,dst_sys:f,dst_inter:5,sort:5,q:5001};
175.{src_sys:d,dst_sys:g,dst_inter:6,sort:6,q:6001};
176.{src_sys:e,dst_sys:h,dst_inter:7,sort:7,q:7001};
177.{src_sys:e,dst_sys:f,dst_inter:8,sort:8,q:8001};
178.{src_sys:h,dst_sys:i,dst_inter:9,sort:9,q:9001};
179.{src_sys:k,dst_sys:i,dst_inter:9,sort:10,q:9001}。
180.该交易2的调用数据为:
181.{src_sys:a,dst_sys:b,dst_inter:1,sort:1,q:0001};
182.{src_sys:b,dst_sys:c,dst_inter:2,sort:2,q:1001};
183.{src_sys:b,dst_sys:c,dst_inter:3,sort:3,q:1001};
184.{src_sys:b,dst_sys:d,dst_inter:4,sort:4,q:2001};
185.{src_sys:d,dst_sys:e,dst_inter:5,sort:5,q:3001};
186.{src_sys:d,dst_sys:f,dst_inter:6,sort:6,q:4001};
187.{src_sys:d,dst_sys:g,dst_inter:7,sort:7,q:5001};
188.{src_sys:e,dst_sys:h,dst_inter:8,sort:8,q:6001};
189.{src_sys:h,dst_sys:i,dst_inter:9,sort:9,q:7001};
190.{src_sys:h,dst_sys:j,dst_inter10,sort:10,q:8001}。
191.a、生成右树。
192.本发明实施例设定该两笔交易所对应的业务类型的核心业务系统为d。因此,可以将源系统src_sys为d的交易作为右树的第一层,并加上层级layer:1。
193.从交易1的调用数据中匹配出源系统src_sys为d的调用数据,并基于源系统src_sys为d的调用数据,构建交易1右树的第一层,该构建出的交易1右树的第一层的结构示意图可以如图4a所示。其中,源系统src_sys为d的调用数据为:
194.{src_sys:d,dst_sys:e,dst_inter:4,sort:4,q:4001,layer:1};
195.{src_sys:d,dst_sys:f,dst_inter:5,sort:5,q:5001,layer:1};
196.{src_sys:d,dst_sys:g,dst_inter:6,sort:6,q:6001,layer:1}。
197.从交易2的调用数据中匹配出源系统src_sys为d的调用数据,并基于源系统src_sys为d的调用数据,构建交易2右树的第一层,该构建出的交易2右树的第一层的结构示意图可以如图5a所示。其中,源系统src_sys为d的调用数据为:
198.{src_sys:d,dst_sys:e,dst_inter:5,sort:5,q:3001,layer:1};
199.{src_sys:d,dst_sys:f,dst_inter:6,sort:6,q:4001,layer:1};
200.{src_sys:d,dst_sys:g,dst_inter:7,sort:7,q:5001,layer:1}。
201.在分别构建出交易1右树的第一层和交易2右树的第一层之后,继续以交易1右树的第一层的目标系统以及交易2右树的第一层的目标系统作为源系统,构建交易1右树的第二层和交易2右树的第二层。即,将交易1右树的第一层的目标系统dst_sys:e、dst_sys:f、dst_sys:g作为右树的第二层的源系统继续构建,构建交易1右树的第二层,以及将交易2右树的第一层的目标系统dst_sys:e、dst_sys:f、dst_sys:g作为右树的第二层的源系统继续构建,构建交易2右树的第二层。
202.从交易1的调用数据中匹配出源系统src_sys为e、f、g的调用数据,并基于源系统src_sys为e、f、g的调用数据,构建交易1右树的第二层,该构建出的交易1右树的第二层的结构示意图可以如图4b所示。其中,源系统src_sys为e、f、g的调用数据为:
203.{src_sys:e,dst_sys:h,dst_inter:7,sort:7,q:7001,layer:2};
204.{src_sys:e,dst_sys:f,dst_inter:8,sort:8,q:8001,layer:2}。
205.从交易2的调用数据中匹配出源系统src_sys为e、f、g的调用数据,并基于源系统src_sys为e、f、g的调用数据,构建交易2右树的第二层,该构建出的交易2右树的第二层的结构示意图可以如图5b所示。其中,源系统src_sys为e、f、g的调用数据为:
206.{src_sys:e,dst_sys:h,dst_inter:8,sort:8,q:6001,layer:2}。
207.在分别构建出交易1右树的第二层和交易2右树的第二层之后,继续以交易1右树的第二层的目标系统以及交易2右树的第二层的目标系统作为源系统,构建交易1右树的第三层和交易2右树的第三层。即,将交易1右树的第二层的目标系统dst_sys:h、dst_sys:f作为右树的第二层的源系统继续构建,构建交易1右树的第三层,以及将交易2右树的第二层的目标系统dst_sys:h作为右树的第二层的源系统继续构建,构建交易2右树的第三层。
208.从交易1的调用数据中匹配出源系统src_sys为h、f的调用数据,并基于源系统src_sys为h、f的调用数据,构建交易1右树的第三层,该构建出的交易1右树的第三层的结构示意图可以如图4c所示。其中,源系统src_sys为h、f的调用数据为:
209.{src_sys:h,dst_sys:i,dst_inter:9,sort:9,q:9001,layer:3}。
210.从交易2的调用数据中匹配出源系统src_sys为h的调用数据,并基于源系统src_
sys为h的调用数据,构建交易2右树的第三层,该构建出的交易2右树的第三层的结构示意图可以如图5c所示。其中,源系统src_sys为h的调用数据为:
211.{src_sys:h,dst_sys:i,dst_inter:9,sort:9,q:7001,layer:3};
212.{src_sys:h,dst_sys:j,dst_inter10,sort:10,q:8001,layer:3}。
213.基于上述方法,在构建右树的方向上继续整理右树后面的层级,以此类推,直至交易1或交易2的调用数据中在构建右树的方向上所关联到的调用数据全部构建完毕,从而可以构建出交易1的右树以及交易2的右树。
214.需要说明的是,无论交易1或交易2的调用数据,每一条参与过构建右树的调用数据都会被打上标签issort:1,以便识别出哪些调用数据已经被用于构建树,并可以避免该调用数据再次被用于构建树。
215.b、生成左树中和核心业务系统直连的路径。
216.在生成交易1的右树以及交易2的右树之后,针对交易1或交易2的调用数据中未参与构建右树的调用数据,本发明实施例以核心业务系统d作为目标系统,以此构建交易1或交易2的左树中和核心业务系统直连的第一层,并加上层级layer:
‑
1。
217.从交易1的调用数据中未参与构建右树的调用数据中匹配出目标系统dst_sys为d的调用数据,并基于目标系统dst_sys为d的调用数据,构建交易1左树中和核心业务系统直连的第一层,该构建出的交易1左树中和核心业务系统直连的第一层的结构示意图可以如图6a所示。其中,目标系统dst_sys为d的调用数据为:
218.{src_sys:b,dst_sys:d,dst_inter:3,sort:3,q:3001,layer:
‑
1}。
219.从交易2的调用数据中未参与构建右树的调用数据中匹配出目标系统dst_sys为d的调用数据,并基于目标系统dst_sys为d的调用数据,构建交易2左树中和核心业务系统直连的第一层,该构建出的交易2左树中和核心业务系统直连的第一层的结构示意图可以如图7a所示。其中,目标系统dst_sys为d的调用数据为:
220.{src_sys:b,dst_sys:d,dst_inter:3,sort:3,q:3001,layer:
‑
1}。
221.在分别构建出交易1左树中和核心业务系统直连的第一层和交易2左树中和核心业务系统直连的第一层之后,继续以交易1左树中和核心业务系统直连的第一层的源系统以及交易2左树中和核心业务系统直连的第一层的源系统作为目标系统,构建交易1左树中和核心业务系统直连的第二层和交易2左树中和核心业务系统直连的第二层。即,将交易1左树的第一层的源系统src_sys:b作为左树中和核心业务系统直连的第二层的目标系统继续构建,构建交易1左树中和核心业务系统直连的第二层,以及将交易2左树中和核心业务系统直连的第一层的源系统src_sys:b作为左树中和核心业务系统直连的第二层的目标系统继续构建,构建交易2左树中和核心业务系统直连的第二层。
222.由于交易1的调用数据中未参与构建右树的调用数据中匹配不到目标系统dst_sys为b的调用数据,因此在构建出交易1左树中和核心业务系统直连的第一层后,交易1的左树中和核心业务系统直连的调用层级不再增加。
223.从交易2的调用数据中未参与构建右树的调用数据中匹配出目标系统dst_sys为b的调用数据,并基于目标系统dst_sys为d的调用数据,构建交易2左树中和核心业务系统直连的第二层,该构建出的交易2左树中和核心业务系统直连的第二层的结构示意图可以如图7b所示。其中,目标系统dst_sys为d的调用数据为:
224.{src_sys:a,dst_sys:b,dst_inter:1,sort:1,q:0001,layer:
‑
2}。
225.基于上述方法,在构建左树中和核心业务系统直连的调用层级的方向上继续整理左树后面的层级,以此类推,直至交易1或交易2的调用数据中在构建左树中和核心业务系统直连的调用层级的方向上所关联到的调用数据全部构建完毕,从而可以构建出交易1左树中和核心业务系统直连的调用层级以及交易2左树中和核心业务系统直连的调用层级。
226.需要说明的是,无论交易1或交易2的调用数据,每一条参与过构建左树中和核心业务系统直连的调用层级的调用数据都会被打上标签issort:1,以便识别出哪些调用数据已经被用于构建树,并可以避免该调用数据再次被用于构建树。
227.c、生成左树中和核心业务系统非直连的路径。
228.在生成交易1左树中和核心业务系统直连的调用层级以及交易2左树中和核心业务系统直连的调用层级之后,针对交易1或交易2的调用数据中未参与构建左树中和核心业务系统直连的调用层级的调用数据,本发明实施例以构建交易1或交易2的左树中和核心业务系统直连的最大层级中的源系统作为源系统,以此构建交易1或交易2的左树中和核心业务系统非直连的第一层,并加上层级layer:
‑
1。
229.从交易1的调用数据中未参与构建左树中和核心业务系统直连的调用层级的调用数据中匹配出源系统src_sys为b的调用数据,并基于源系统src_sys为b的调用数据,构建交易1左树中和核心业务系统非直连的第一层,该构建出的交易1左树中和核心业务系统非直连的第一层的结构示意图可以如图6b所示。其中,源系统src_sys为b的调用数据为:
230.{src_sys:b,dst_sys:c,dst_inter:1,sort:1,q:1001,layer:
‑
1};
231.{src_sys:b,dst_sys:c,dst_inter:2,sort:2,q:2001,layer:
‑
1}。
232.从交易2的调用数据中未参与构建左树中和核心业务系统直连的调用层级的调用数据中匹配出源系统src_sys为b的调用数据,并基于源系统src_sys为b的调用数据,构建交易2左树中和核心业务系统非直连的第一层,该构建出的交易2左树中和核心业务系统非直连的第一层的结构示意图可以如图7c所示。其中,源系统src_sys为b的调用数据为:
233.{src_sys:b,dst_sys:c,dst_inter:2,sort:2,q:1001,layer:
‑
1};
234.{src_sys:b,dst_sys:c,dst_inter:3,sort:3,q:1001,layer:
‑
1}。
235.在分别构建出交易1左树中和核心业务系统非直连的第一层和交易2左树中和核心业务系统非直连的第一层之后,继续以交易1左树中和核心业务系统非直连的第一层的目标系统以及交易2左树中和核心业务系统非直连的第一层的目标系统作为源系统,构建交易1左树中和核心业务系统非直连的第二层和交易2左树中和核心业务系统非直连的第二层。即,将交易1左树中和核心业务系统非直连的第一层的目标系统dst_sys:c作为左树中和核心业务系统直连的第二层的源系统继续构建,构建交易1左树中和核心业务系统直连的第二层,以及将交易2左树中和核心业务系统非直连的第一层的目标系统dst_sys:c作为左树中和核心业务系统非直连的第二层的源系统继续构建,构建交易2左树中和核心业务系统非直连的第二层。
236.由于交易1的调用数据中未参与构建右树的调用数据中匹配不到源系统src_sys为c的调用数据,因此在构建出交易1左树中和核心业务系统非直连的第一层后,交易1的左树中和核心业务系统非直连的调用层级不再增加。而且,由于交易2的调用数据中未参与构建右树的调用数据中匹配不到源系统src_sys为c的调用数据,因此在构建出交易2左树中
和核心业务系统非直连的第一层后,交易2的左树中和核心业务系统非直连的调用层级不再增加。
237.基于上述方法,在构建左树中和核心业务系统非直连的调用层级的方向上继续整理左树后面的层级,以此类推,直至交易1或交易2的调用数据中在构建左树中和核心业务系统非直连的调用层级的方向上所关联到的调用数据全部构建完毕,从而可以构建出交易1左树中和核心业务系统非直连的调用层级以及交易2左树中和核心业务系统非直连的调用层级。
238.需要说明的是,无论交易1或交易2的调用数据,每一条参与过构建左树中和核心业务系统非直连的调用层级的调用数据都会被打上标签issort:1,以便识别出哪些调用数据已经被用于构建树,并可以避免该调用数据再次被用于构建树。
239.综上可知,通过上述步骤b和步骤c,就可以构建出交易1的左树以及交易2的左树。
240.需要说明的是,在构建出交易1的左树、右树以及交易2的左树、右树后,针对交易1的调用数据中未参与构建左右树的调用数据,以及交易2的调用数据中未参与构建左右树的调用数据,将这些未参与构建左右树的调用数据整合为未关联交易。比如,将交易1的调用数据中未参与构建左右树的调用数据为{src_sys:k,dst_sys:i,dst_inter:9,sort:10,q:9001},交易2的调用数据都参与构建左右树。
241.d、将基于同一业务类型中多笔交易的调用数据生成的左树、右树进行聚合,生成针对该业务类型的交易调用链路。
242.将上述步骤a~c生成的交易1的左树与右树进行关联,生成针对该交易1的调用链路,该交易1的调用链路的结构示意图可以如图8所示。以及将上述步骤a~c生成的交易2的左树与右树进行关联,生成针对该交易2的调用链路,该交易2的调用链路的结构示意图可以如图9所示。由于交易1和交易2同属于同一业务类型,因此可以将交易1的调用链路与交易2的调用链路进行聚合,以便实时的生成针对该业务类型的交易调用链路(交易树),该业务类型的交易调用链路的结构示意图可以如图10所示。
243.e、针对任一业务类型的交易调用链路,定期更新该业务类型的交易调用链路。
244.由于生产环境的调用链路,会随着版本迭代或限流降级等操作,不断变化,因此需要对交易调用链路有一个较好的更新机制,以便确保交易调用链路能够及时更新。
245.基于此,针对任一业务类型,本发明实施例可以采用每间隔预设时段(比如每隔10分钟、20分钟、30分钟或1小时等)执行一次step3至step4的处理过程。以此可获得该业务类型在当前时段的新交易调用链路,并在确定当前时段的新交易调用链路和上一时段生成的旧交易调用链路符合设定条件后,将当前时段的新交易调用链路和上一时段生成的旧交易调用链路进行融合,形成融合后的交易调用链路,以作为当前展示的交易调用链路。
246.具体地,通过确定当前时段的新交易调用链路和上一时段生成的旧交易调用链路的相似度值来确定是否将当前时段的新交易调用链路和上一时段生成的旧交易调用链路进行融合。即,若确定当前时段的新交易调用链路和上一时段生成的旧交易调用链路的相似度值小于等于预设阈值,则将当前时段的新交易调用链路和上一时段生成的旧交易调用链路进行融合,否则需要进行人工干预。需要说明的是,本发明实施例是在确定当前时段的新交易调用链路中每个调用层和上一时段生成的旧交易调用链路中对应调用层的相似度值均小于等于预设阈值,才将当前时段的新交易调用链路和上一时段生成的旧交易调用链
路进行融合。
247.示例性地,某一业务类型的旧交易调用链路中某一调用层的调用数据为:
248.{[{src_sys:a,dst_sys:b,dst_inter:1,service:100,layer:1},
[0249]
{src_sys:a,dst_sys:c,dst_inter:2,service:101,layer:1},
[0250]
{src_sys:d,dst_sys:e,dst_inter:3,service:102,layer:1}],
[0251]
[{},{},{}],
[0252]
[{},{},{}]}。
[0253]
本发明实施例可以使用[ab11001,ac21011,de31021]来描述该调用层。
[0254]
同理,该业务类型的新交易调用链路中对应调用层的调用数据为:
[0255]
{[{src_sys:a,dst_sys:b,dst_inter:1,service:100,layer:1},
[0256]
{src_sys:a,dst_sys:c,dst_inter:4,service:101,layer:1},
[0257]
{src_sys:d,dst_sys:e,dst_inter:3,service:102,layer:1},
[0258]
{src_sys:a,dst_sys:e,dst_inter:5,service:103,layer:1}],
[0259]
[{},{},{}],
[0260]
[{},{},{}]}。
[0261]
本发明实施例可以使用[ab11001,ac41011,de31021,ae51031]来描述该调用层。
[0262]
然后,本发明实施例将上述得到的[ab11001,ac21011,de31021]与[ab11001,ac41011,de31021,ae51031]进行取并集,得到并集后的数据为[ab11001,ac21011,de31021,1c41011,ae51031]。基于该并集形式,将该业务类型的旧交易调用链路中的该调用层表示为[1,1,1,0,0],将该业务类型的新交易调用链路中的该调用层表示为[1,0,1,1,1]。最后根据下述方式确定旧交易调用链路中的该调用层与新交易调用链路中的该调用层的相似度值,即:
[0263][0264]
其中,cosθ表示旧交易调用链路中的该调用层与新交易调用链路中的该调用层的相似度值,x表示旧交易调用链路中的该调用层,y表示新交易调用链路中的该调用层。
[0265]
示例性地,如果计算出的相似度值为0.57,该0.57大于预设阈值0.4,则确定旧交易调用链路与新交易调用链路在该调用层差异较大,需要人工介入复核。如果计算出的相似度值为0.3,该0.3小于预设阈值0.4,则确定旧交易调用链路与新交易调用链路在该调用层差异较小,符合要求,可以将新交易调用链路的该调用层和旧交易调用链路的该调用层进行融合。基于该方法,对各个新交易调用链路与旧交易调用链路的各个调用层进行对比,以此确定各个调用层是否更新。
[0266]
需要说明的是,本发明实施例还可以在另一种情况下生成某一业务类型的交易调用链路。若确定某一业务类型发生告警,则执行step3至step4的处理过程,可以生成针对该业务类型的交易调用链路。如此,可以在确定该业务类型发生告警时,及时准确地生成更符合该业务类型发生告警时的微服务调用关系的交易调用链路。
[0267]
step5:基于交易调用链路,确定业务系统出现业务指标告警的真实告警原因。
[0268]
示例性地,在发生业务指标告警时,可以将业务指标告警数据挂载在交易调用链
路中对应的系统上,从而向上下游系统,或向基础资源定位发生业务指标告警的具体原因。比如,以系统e出现业务指标告警(比如业务成功率下降等)为例,对本发明实施例中确定业务系统出现业务指标告警的真实告警原因进行描述。
[0269]
a、通过发生告警的系统和业务指标,确认交易调用链路和可能受到影响的核心指标的范围。
[0270]
首先需要判断发生告警的系统是否为核心业务系统以及判断发生告警的业务指标是否为核心业务指标,即,通过step1中确定的业务场景表,确认系统e不为核心业务系统。再通过查询交易树明细表可知,源系统、目标系统为系统e的,可能存在于交易树id为1(上述生成的交易1和交易2的调用链路进行聚合后的交易调用链路)的路径中,同时也存在于交易树id为2、3、4的路径中。
[0271]
示例性地,在交易树id为1中,系统e作为目标系统的调用数据为:
[0272]
{src_sys:d,dst_sys:e,dst_inter:4,sort:4,q:4001};
[0273]
{src_sys:d,dst_sys:e,dst_inter:5,sort:5,q:3001}。
[0274]
在交易树id为1中,系统e作为源系统的调用数据为:
[0275]
{src_sys:e,dst_sys:h,dst_inter:7,sort:7,q:7001};
[0276]
{src_sys:e,dst_sys:f,dst_inter:8,sort:8,q:8001};
[0277]
{src_sys:e,dst_sys:h,dst_inter:8,sort:8,q:6001}。
[0278]
在交易树id为2中,系统e作为源系统的调用数据为:
[0279]
{src_sys:e,dst_sys:h,dst_inter:7,sort:7,q:7001}。
[0280]
在交易树id为3中,系统e作为源系统的调用数据为:
[0281]
{src_sys:e,dst_sys:f,dst_inter:8,sort:8,q:8001}。
[0282]
在交易树id为4中,系统e作为源系统的调用数据为:
[0283]
{src_sys:e,dst_sys:h,dst_inter:8,sort:8,q:6001}。
[0284]
通过业务场景表,使用业务指标告警数据中提供的系统信息(系统名称、系统id、接口码等)以及交易树id作为检索条件,检索出业务场景表中交易树id相关的业务指标、业务场景、产品和重要等级等,通过这个检索结果就可以确认发生告警所产生的业务影响范围,并根据业务重要等级(s,a,b,c),可以确定发生告警所产生的影响严重程度,如果判断影响严重程度较大,则同步通知人工介入,如果判断影响严重程度较小,可以先进行进一步定位。示例性地,通过交易树id为1的交易树,搜索到影响业务指标1、2、3、4,其中,业务指标1为放款前的审批,功能等级s级,判断该业务指标1为核心业务指标,业务指标2、3、4为b级别,此时判断需要通知人工介入。
[0285]
b、针对交易树id为1、2、3、4的任一交易调用链路,根据该交易调用链路提供的系统清单,可以通过系统清单中的系统id到告警系统查询接口进行查询,获取各系统的关键字、业务指标告警。再通过系统id查询cmdb,获取系统对应的虚拟机ip地址(internet protocol,网络协议)、母机ip地址、db(database,数据库)等信息。然后根据这些信息,到告警系统查询接口进行查询,获取基础资源对应的告警信息,以确认交易调用链路上存在的所有告警。
[0286]
c、根据告警类型进行分类,并针对不同的告警类型进行溯源分析,确定业务指标告警的真实告警原因。
[0287]
其中,告警类型可以包括交易量、成功率、耗时等,这些都是业务上比较关心的指标。此外,不同的告警类型,收敛的方向不一样。比如,对交易量的告警可以向上游进行溯源,对成功率、耗时的告警,可以采用向下游进行溯源的方式,以便找到最前或最深的告警源(真实告警原因),并展示出来,通过告警处理预案进行处理。
[0288]
示例性地,系统e出现业务成功率下降的告警,同时发现系统e的下游系统f也出现业务指标成功率下降的告警。推荐该告警的实际原因为系统f的数据库存在慢查询,由于慢查询导致数据查询超时影响上游接口的业务成功率。此时,针对慢查询的处理,推荐告警处理预案为人工介入。
[0289]
step6:基于交易调用链路,对系统的容量进行管理以及对交易调用链路的变更风险进行评估。
[0290]
a、基于交易调用链路,对系统的容量进行管理。
[0291]
除了告警数据可以关联在交易调用链路上,对于系统的日常容量指标,也可以将系统的日常容量指标关联到交易调用链路上。通过系统的日常容量指标,可以直观地获知每个系统的实时容量,以便为系统容量分析提供支持。
[0292]
示例性地,交易调用链路中每个系统可以挂载qps(queries per second,每秒钟的请求数),服务机器使用情况、数据库资源使用情况,从整体上可以清晰地看到当前交易量在各个系统的压力分布,从而可以做准确地找出系统的容量瓶颈点。其中,将每个系统的qps挂载系统上的结构示意图可以如图11所示。
[0293]
b、基于交易调用链路,对交易调用链路的变更风险进行评估。
[0294]
对于生产环境中某一业务类型的交易调用链路的上下游分析,目前需要核心开发来对其进行评估。而开发往往只能根据自身开发的系统的上下游进行依赖评估,对于联合开发的大版本,整体变动的关联分析尤其重要,根据交易调用链路,可以为接口依赖提供依据。
[0295]
上述实施例表明,通过获取同一业务场景在第一时段的m笔交易的调用记录,并针对每笔交易,以业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路。再将m笔交易的交易链路进行聚合,就可以生成针对业务场景的第一微服务调用链。由于现有技术依靠人工分析来确定告警原因,需要耗费一定的时间,且由于依赖人工分析会导致确定出的告警原因准确性不高,而该方法是先自动准确地确定出实时的微服务调用链,再基于该实时的微服务调用链与业务场景的告警数据进行关联分析,如此可以及时准确地确定出业务场景出现异常告警的真实告警原因,因此该方法可以实现微服务调用链的自动准确生成,并可以节省人力时间成本,从而有助于提高运维问题排查的效率。
[0296]
基于相同的技术构思,图12示例性的示出了本发明实施例提供的一种确定微服务调用链的装置,该装置可以执行确定微服务调用链的方法的流程。
[0297]
如图12所示,该装置包括:
[0298]
获取单元1201,用于获取同一业务场景在第一时段的m笔交易的调用记录;其中,m为大于1的整数;所述调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的;
[0299]
处理单元1202,用于针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路;将所述m笔交易的交易链路进行聚合,
生成针对所述业务场景的第一微服务调用链。
[0300]
可选地,所述获取单元1201具体用于:
[0301]
从交易日志记录中获取所述第一时段内与所述业务场景对应的交易记录;
[0302]
基于所述交易记录,确定出所述业务场景中m笔交易的调用记录。
[0303]
可选地,所述处理单元1202具体用于:
[0304]
从所述该笔交易的调用记录中确定出源节点为所述核心节点时所对应的第一调用信息,以所述源节点为构建起点,向所述第一调用信息中的目标节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第一调用链路;
[0305]
从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路;
[0306]
将所述该笔交易的第一调用链路与所述该笔交易的第二调用链路进行聚合,生成所述该笔交易的交易链路。
[0307]
可选地,所述第二调用链路包括与所述核心节点直连的调用链路和与所述核心节点非直连的调用链路;
[0308]
所述处理单元1202具体用于:
[0309]
从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为所述核心节点时所对应的第三调用信息,以所述目标节点为构建起点,向所述第三调用信息中的源节点的方向进行构建,直至未参与构建该笔交易的第一调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点直连的调用链路;
[0310]
从未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中确定出源节点为所述与所述核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,以所述源节点为构建起点,向所述第四调用信息中的目标节点的方向进行构建,直至未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点非直连的调用链路。
[0311]
可选地,所述处理单元1202还用于:
[0312]
在构建出该笔交易的第一调用链路之后,将参与构建该笔交易的第一调用链路的调用记录标注上已处理的标识;
[0313]
所述处理单元1202还用于:
[0314]
在构建出与所述核心节点直连的调用链路之后,将参与构建与所述核心节点直连的调用链路的调用记录标注上已处理的标识;
[0315]
所述处理单元1202还用于:
[0316]
在构建出与所述核心节点非直连的调用链路之后,将参与构建与所述核心节点非直连的调用链路的调用记录标注上已处理的标识;
[0317]
将该笔交易的调用记录中未标注上已处理标识的调用记录设置为未关联交易,并将所述未关联交易反馈给交易处理人员进行相应处理。
[0318]
可选地,所述处理单元1202还用于:
[0319]
在生成针对所述业务场景的第一微服务调用链之后,获取所述业务场景的第二微服务调用链;所述第二微服务调用链是根据所述业务场景在第二时段的交易的调用记录生成的;所述第二时段位于所述第一时段之前;
[0320]
确定所述第二微服务调用链与所述第一微服务调用链的相似度值;
[0321]
若确定所述相似度值小于等于预设阈值,则将所述第二微服务调用链与所述第一微服务调用链进行融合,构建出第三微服务调用链。
[0322]
可选地,所述处理单元1202还用于:
[0323]
在生成针对所述业务场景的第一微服务调用链之后,若确定第一节点的业务指标发生告警,则获取所述第一节点的业务指标告警信息;所述第一节点为任一业务场景的第一微服务调用链中的任一个节点;
[0324]
在确定所述第一节点不为核心节点且业务指标不为核心指标时,根据所述业务指标告警信息,确定出对应的业务指标告警类型,并基于所述第一节点确定出所述第一节点所在的至少一个第一微服务调用链;
[0325]
针对至少一个第一微服务调用链中每个第一微服务调用链,确定所述第一节点发生业务指标告警时在所述第一微服务调用链中的业务影响范围;
[0326]
从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息;所述第二节点为每个第一微服务调用链中除第一节点以外的任一个节点;
[0327]
基于所述业务指标告警类型和所述业务影响范围,并结合所述第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因。
[0328]
可选地,所述处理单元1202具体用于:
[0329]
针对至少一个第一微服务调用链中每个第一微服务调用链,从业务场景记录中匹配出与所述第一微服务调用链中核心节点对应的业务场景和业务指标等级;所述业务场景记录是根据核心节点、业务场景以及业务指标等级构建的;
[0330]
根据所述业务场景和所述业务指标等级,确定出所述第一节点发生业务指标告警时的业务影响范围。
[0331]
可选地,所述处理单元1202具体用于:
[0332]
针对每个第二节点,从告警数据库中匹配出与所述第二节点对应的告警时间属于设定时段内的业务告警信息;
[0333]
从配置管理数据库中确定出所述第二节点对应的虚拟机ip地址、母机ip地址,并从所述告警数据库中匹配出与所述虚拟机ip地址、所述母机ip地址对应的告警时间属于设定时段内的非业务指标告警信息;
[0334]
将所述业务告警信息和所述非业务指标告警信息确定为所述第二节点的告警信息。
[0335]
可选地,所述处理单元1202具体用于:
[0336]
根据所述业务指标告警类型,确定出对应的告警原因溯源方式;
[0337]
基于所述业务影响范围,并按照所述告警原因溯源方式,对所述第一节点的业务指标告警信息以及各第二节点的告警信息进行分析,确定出针对业务指标告警的告警原
因。
[0338]
可选地,所述处理单元1202还用于:
[0339]
在获取同一业务场景在第一时段的m笔交易的调用记录之前,确定所述业务场景发生告警;所述第一时段为告警前预设时段。
[0340]
可选地,所述处理单元1202还用于:
[0341]
在生成针对所述业务场景的第一微服务调用链之后,展示所述第一微服务调用链,并展示所述第一微服务调用链中各节点所关联的状态信息。
[0342]
可选地,所述处理单元1202具体用于:
[0343]
所述状态信息包括以下至少一项:业务指标告警数据、服务请求的并发量、数据库资源使用情况以及机器资源使用情况。
[0344]
基于相同的技术构思,本发明实施例还提供了一种计算设备,如图13所示,包括至少一个处理器1301,以及与至少一个处理器连接的存储器1302,本发明实施例中不限定处理器1301与存储器1302之间的具体连接介质,图13中处理器1301和存储器1302之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
[0345]
在本发明实施例中,存储器1302存储有可被至少一个处理器1301执行的指令,至少一个处理器1301通过执行存储器1302存储的指令,可以执行前述的确定微服务调用链的方法中所包括的步骤。
[0346]
其中,处理器1301是计算设备的控制中心,可以利用各种接口和线路连接计算设备的各个部分,通过运行或执行存储在存储器1302内的指令以及调用存储在存储器1302内的数据,从而实现数据处理。可选的,处理器1301可包括一个或多个处理单元,处理器1301可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器1301中。在一些实施例中,处理器1301和存储器1302可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
[0347]
处理器1301可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合确定微服务调用链的方法的实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0348]
存储器1302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1302可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read
‑
only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1302是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1302还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序
指令和/或数据。
[0349]
基于相同的技术构思,本发明实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述确定微服务调用链的方法的步骤。
[0350]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd
‑
rom、光学存储器等)上实施的计算机程序产品的形式。
[0351]
本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0352]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0353]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0354]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0355]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
技术特征:
1.一种确定微服务调用链的方法,其特征在于,包括:获取同一业务场景在第一时段的m笔交易的调用记录;其中,m为大于1的整数;所述调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的;针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路;将所述m笔交易的交易链路进行聚合,生成针对所述业务场景的第一微服务调用链。2.如权利要求1所述的方法,其特征在于,所述以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路,包括:从所述该笔交易的调用记录中确定出源节点为所述核心节点时所对应的第一调用信息,以所述源节点为构建起点,向所述第一调用信息中的目标节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第一调用链路;从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路;将所述该笔交易的第一调用链路与所述该笔交易的第二调用链路进行聚合,生成所述该笔交易的交易链路。3.如权利要求2所述的方法,其特征在于,所述第二调用链路包括与所述核心节点直连的调用链路和与所述核心节点非直连的调用链路;所述从所述该笔交易的调用记录中确定出目标节点为所述核心节点时所对应的第二调用信息,以所述目标节点为构建起点,向所述第二调用信息中的源节点的方向进行构建,直至所述调用记录中在该构建方向上的节点全部构建完毕,从而构建出该笔交易的第二调用链路,包括:从未参与构建该笔交易的第一调用链路的调用记录中确定出目标节点为所述核心节点时所对应的第三调用信息,以所述目标节点为构建起点,向所述第三调用信息中的源节点的方向进行构建,直至未参与构建该笔交易的第一调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点直连的调用链路;从未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中确定出源节点为所述与所述核心节点直连的调用链路中位于起始位置的节点时所对应的第四调用信息,以所述源节点为构建起点,向所述第四调用信息中的目标节点的方向进行构建,直至未参与构建该笔交易的第一调用链路以及未参与构建与所述核心节点直连的调用链路的调用记录中在该构建方向上的节点全部构建完毕,从而构建出与所述核心节点非直连的调用链路。4.如权利要求3所述的方法,其特征在于,在构建出该笔交易的第一调用链路之后,还包括:将参与构建该笔交易的第一调用链路的调用记录标注上已处理的标识;在构建出与所述核心节点直连的调用链路之后,还包括:将参与构建与所述核心节点直连的调用链路的调用记录标注上已处理的标识;
在构建出与所述核心节点非直连的调用链路之后,还包括:将参与构建与所述核心节点非直连的调用链路的调用记录标注上已处理的标识;将该笔交易的调用记录中未标注上已处理标识的调用记录设置为未关联交易,并将所述未关联交易反馈给交易处理人员进行相应处理。5.如权利要求1所述的方法,其特征在于,在生成针对所述业务场景的第一微服务调用链之后,还包括:获取所述业务场景的第二微服务调用链;所述第二微服务调用链是根据所述业务场景在第二时段的交易的调用记录生成的;所述第二时段位于所述第一时段之前;确定所述第二微服务调用链与所述第一微服务调用链的相似度值;若确定所述相似度值小于等于预设阈值,则将所述第二微服务调用链与所述第一微服务调用链进行融合,构建出第三微服务调用链。6.如权利要求1所述的方法,其特征在于,在生成针对所述业务场景的第一微服务调用链之后,还包括:若确定第一节点的业务指标发生告警,则获取所述第一节点的业务指标告警信息;所述第一节点为任一业务场景的第一微服务调用链中的任一个节点;在确定所述第一节点不为核心节点且业务指标不为核心指标时,根据所述业务指标告警信息,确定出对应的业务指标告警类型,并基于所述第一节点确定出所述第一节点所在的至少一个第一微服务调用链;针对至少一个第一微服务调用链中每个第一微服务调用链,确定所述第一节点发生业务指标告警时在所述第一微服务调用链中的业务影响范围;从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息;所述第二节点为每个第一微服务调用链中除第一节点以外的任一个节点;基于所述业务指标告警类型和所述业务影响范围,并结合所述第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因。7.如权利要求6所述的方法,其特征在于,所述确定所述第一节点发生业务指标告警时在所述第一微服务调用链中的业务影响范围,包括:针对至少一个第一微服务调用链中每个第一微服务调用链,从业务场景记录中匹配出与所述第一微服务调用链中核心节点对应的业务场景和业务指标等级;所述业务场景记录是根据核心节点、业务场景以及业务指标等级构建的;根据所述业务场景和所述业务指标等级,确定出所述第一节点发生业务指标告警时的业务影响范围。8.如权利要求6所述的方法,其特征在于,所述从告警数据库中匹配出与第二节点对应的告警时间属于设定时段内的告警信息,包括:针对每个第二节点,从告警数据库中匹配出与所述第二节点对应的告警时间属于设定时段内的业务告警信息;从配置管理数据库中确定出所述第二节点对应的虚拟机ip地址、母机ip地址,并从所述告警数据库中匹配出与所述虚拟机ip地址、所述母机ip地址对应的告警时间属于设定时段内的非业务指标告警信息;将所述业务告警信息和所述非业务指标告警信息确定为所述第二节点的告警信息。
9.如权利要求6所述的方法,其特征在于,所述基于所述业务指标告警类型和所述业务影响范围,并结合所述第一节点的业务指标告警信息以及各第二节点的告警信息进行溯源分析,确定出针对业务指标告警的告警原因,包括:根据所述业务指标告警类型,确定出对应的告警原因溯源方式;基于所述业务影响范围,并按照所述告警原因溯源方式,对所述第一节点的业务指标告警信息以及各第二节点的告警信息进行分析,确定出针对业务指标告警的告警原因。10.一种确定微服务调用链的装置,其特征在于,包括:获取单元,用于获取同一业务场景在第一时段的m笔交易的调用记录;其中,m为大于1的整数;所述调用记录是任一笔交易在调用所述业务场景的核心节点的过程中产生的;处理单元,用于针对每笔交易,以所述业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路;将所述m笔交易的交易链路进行聚合,生成针对所述业务场景的第一微服务调用链。11.一种计算设备,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1至9任一权利要求所述的方法。12.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1至9任一权利要求所述的方法。
技术总结
本发明实施例提供了一种确定微服务调用链的方法及装置,该方法包括获取同一业务场景在第一时段的m笔交易的调用记录,针对每笔交易,以业务场景的核心节点为构建起点,根据该笔交易的调用记录,构建出该笔交易的交易链路,将m笔交易的交易链路进行聚合,生成针对业务场景的第一微服务调用链。由于现有技术依靠人工分析来确定告警原因,需要耗费一定的时间,而该方法是先自动准确地确定出实时的微服务调用链,再基于该微服务调用链与业务场景的告警数据进行关联分析,如此可以及时准确地确定出业务场景出现异常告警的真实告警原因,因此该方法可以实现微服务调用链的自动准确生成,并可以节省人力时间成本,从而有助于提高运维问题排查的效率。运维问题排查的效率。运维问题排查的效率。
技术研发人员:徐胜安 熊刚 江旻
受保护的技术使用者:深圳前海微众银行股份有限公司
技术研发日:2021.03.26
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-4896.html