微服务依赖关系确定方法、装置及存储介质与流程

文档序号:25792015发布日期:2021-07-09 11:32阅读:111来源:国知局
微服务依赖关系确定方法、装置及存储介质与流程

1.本申请涉及软件开发维护技术领域,尤其涉及一种微服务依赖关系确定方法、装置及存储介质。


背景技术:

2.随着互联网行业的高速发展,软件开发面临越来越复杂的需求和频繁的版本发布。传统的单体架构项目因为模块间高耦合而更加复杂和难以维护。微服务架构通过服务实现组件化,将单体应用拆成多个高内聚、低耦合的小服务,提高了开发效率和扩展性,使得大型项目的开发和维护更加容易。
3.但是,随着业务功能增多,业务复杂度提升,微服务的数量增加,微服务间的依赖关系也变得越来越复杂。对于整个微服务系统而言,并不是任何一个微服务间的依赖出问题,都会导致整个微服务系统不可用。现有将那些会影响到整个系统不可用(or体验受损很严重)的依赖称之为强依赖,将那些即使自身出故障也不会导致整个系统不可用(or体验受损不严重)的依赖称之为弱依赖。因此,识别出微服务间的强弱依赖关系对整个微服务系统的治理有着重要作用。
4.然而,现有技术主要依靠人工梳理微服务间的强弱依赖关系。人工梳理过于依赖开发人员对业务的了解程度,而且随着微服务系统的迭代,依赖关系会产生变化,人工梳理很难梳理出微服务系统中微服务间的强弱依赖关系,难以适应不断变化的微服务系统。


技术实现要素:

5.为解决现有技术中存在的问题,本申请提供一种微服务依赖关系确定方法、装置及存储介质。
6.第一方面,本申请实施例提供一种微服务依赖关系确定方法,包括:
7.获取目标微服务系统产生的调用数据,所述调用数据包括所述目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果;
8.根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前依赖关系;
9.根据所述当前依赖关系,对记录的所述调用方微服务与所述被调用方微服务之间的历史依赖关系的计数值进行更新;
10.根据更新后的历史依赖关系的计数值,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系。
11.在一种可能的实现方式中,在所述根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前强弱依赖关系之前,还包括:
12.判断所述返回结果是否为所述被调用方微服务被所述调用方微服务直接调用后,所述调用方微服务产生的返回结果;
13.所述根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当
前强弱依赖关系,包括:
14.若所述返回结果为所述被调用方微服务被所述调用方微服务直接调用后,所述调用方微服务产生的返回结果,则根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前依赖关系。
15.在一种可能的实现方式中,所述根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前依赖关系,包括:
16.获取所述被调用方微服务被所述调用方微服务调用的调用结果;
17.若所述调用结果出错,且所述返回结果出错,则确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系为强依赖;
18.若所述调用结果出错,且所述返回结果未出错,则确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系为弱依赖。
19.在一种可能的实现方式中,所述历史依赖关系包括历史强依赖;
20.所述根据所述当前依赖关系,对记录的所述调用方微服务与所述被调用方微服务之间的历史依赖关系的计数值进行更新,包括:
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.若所述调用结果出错,且所述返回结果出错,则确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系为强依赖;
53.若所述调用结果出错,且所述返回结果未出错,则确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系为弱依赖。
54.在一种可能的实现方式中,所述历史依赖关系包括历史强依赖;
55.所述更新模块,具体用于:
56.若所述当前依赖关系为强依赖,则将记录的所述调用方微服务与所述被调用方微服务之间的所述历史强依赖的计数值加一;
57.若所述当前依赖关系为弱依赖,则将记录的所述调用方微服务与所述被调用方微服务之间的所述历史强依赖的计数值减一。
58.在一种可能的实现方式中,所述第二确定模块,具体用于:
59.将所述更新后的历史依赖关系的计数值与预设计数值阈值进行比较;
60.根据比较结果,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系。
61.在一种可能的实现方式中,所述历史依赖关系包括历史强依赖;
62.所述第二确定模块,具体用于:
63.若更新后的历史强依赖的计数值大于所述预设计数值阈值,则确定所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系为强依赖;
64.若所述更新后的历史强依赖的计数值小于或等于所述预设计数值阈值,则确定所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系为弱依赖。
65.在一种可能的实现方式中,还包括存储模块,用于在所述第二确定模块根据更新后的历史依赖关系的计数值,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系之后,将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在预设数据库中。
66.在一种可能的实现方式中,所述存储模块,具体用于:
67.判断所述预设数据库是否达到预设存储条件;
68.所述将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在预设数据库中,包括:
69.若所述预设数据库达到所述预设存储条件,则将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在所述预设数据库中。
70.在一种可能的实现方式中,所述预设存储条件包括所述预设数据库存储数据的间隔达到预设间隔阈值。
71.在一种可能的实现方式中,第一确定模块,具体用于:
72.将所述返回结果存储在预设队列中;
73.从所述预设队列中获取所述返回结果,并根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系。
74.第三方面,本申请实施例提供一种微服务依赖关系确定设备,包括:
75.处理器;
76.存储器;以及
77.计算机程序;
78.其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
79.第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
80.第五方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
81.本申请实施例提供的微服务依赖关系确定方法、装置及存储介质,该方法通过获取目标微服务系统产生的调用数据,该调用数据包括目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果,进而,根据该返回结果,确定上述调用方微服务与上
述被调用方微服务之间的当前依赖关系,根据该依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新,从而,根据更新后的结果,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系,其中,无需人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。而且本申请实施例采用微服务间当前的依赖关系对记录的微服务间的历史依赖关系进行更新,基于更新后的结果确定微服务间的最终依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
附图说明
82.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
83.图1为本申请实施例提供的一个微服务系统的示意图;
84.图2为本申请实施例提供的一个微服务系统中微服务间的强弱依赖关系示意图
85.图3为本申请实施例提供的一种微服务依赖关系确定系统架构示意图;
86.图4为本申请实施例提供的一种微服务依赖关系确定方法的流程示意图;
87.图5为本申请实施例提供的一种确定微服务依赖关系的示意图;
88.图6为本申请实施例提供的另一种确定微服务依赖关系的示意图;
89.图7为本申请实施例提供的另一种微服务依赖关系确定方法的流程示意图;
90.图8为本申请实施例提供的再一种微服务依赖关系确定方法的流程示意图;
91.图9为本申请实施例提供的一种微服务依赖关系确定装置的结构示意图;
92.图10为本申请实施例提供的另一种微服务依赖关系确定装置的结构示意图;
93.图11a为本申请提供的一种微服务依赖关系确定设备的基本硬件架构示意图;
94.图11b为本申请提供的另一种微服务依赖关系确定设备的基本硬件架构示意图。
具体实施方式
95.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
96.本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
97.相关技术中,微服务将单体应用拆成多个高内聚、低耦合的小服务,提高了开发效率和扩展性。同时也带来了一些问题,随着业务功能增多,业务复杂度提升,微服务的数量增加,依赖关系也变得越来越复杂。
98.示例性的,如图1所示,一个微服务系统中包括微服务a、b、c、d、e、f、g和h。其中,微服务a分别调用方微服务b、c和e,微服务b分别调用方微服务g和h,微服务c分别调用方微服务d和g,微服务d调用方微服务f,微服务e分别调用方微服务d和h,微服务g分别调用方微服务d,微服务间的依赖关系较复杂。如果业务功能增多,业务复杂度提升,图1所示微服务系统中的微服务的数量增加,依赖关系也变得越来越复杂。
99.其中,对于整个微服务系统而言,并不是任何一个微服务间的依赖出问题,都会导致整个微服务系统不可用。现有将那些会影响到整个系统不可用(or体验受损很严重)的依赖称之为强依赖,将那些即使自身出故障也不会导致整个系统不可用(or体验受损不严重)的依赖称之为弱依赖。识别出微服务间的强弱依赖关系对整个微服务系统的治理有着重要作用。示例性的,如图2所示,在图1所示微服务系统基础上示意出某些微服务间的强弱依赖。图1所示微服务系统中,如果微服务b出错,会影响到整个系统不可用(or体验受损很严重)。这里,影响到整个系统不可用(or体验受损很严重)可以理解为微服务a不可用(or体验受损很严重),这样就可以确定微服务a与微服务b之间的依赖关系为强依赖。如果微服务e出错,不会导致整个系统不可用(or体验受损不严重)。同上述,这里不会导致整个系统不可用(or体验受损不严重)可以理解为不会导致微服务a不可用(or体验受损不严重),这样就可以确定微服务a与微服务e之间的依赖关系为弱依赖。
100.然而,现有技术主要依靠人工梳理微服务间的强弱依赖关系。人工梳理过于依赖开发人员对业务的了解程度,而且随着微服务系统的迭代,依赖关系会产生变化,人工梳理难以适应不断变化的微服务系统。
101.因此,本申请实施例提出一种微服务依赖关系确定方法,通过获取微服务系统中调用方微服务(serverspan)在调用被调用方微服务(clientspan)后产生的返回结果,进而,基于该返回结果,确定调用方微服务与被调用方微服务之间的依赖关系,其中,无需依靠人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。而且,本申请实施例在确定调用方微服务与被调用方微服务之间的依赖关系时,考虑两者之间当前的依赖关系以及记录的历史依赖关系,进而基于当前的依赖关系和历史依赖关系,确定调用方微服务与被调用方微服务之间最终的依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
102.可选地,本申请实施例提供的微服务依赖关系确定方法可以应用于如图3所示的应用场景中。图3只是以示例的方式描述了本申请实施例提供的微服务依赖关系确定方法的一种可能的应用场景,本申请实施例提供的微服务依赖关系确定方法的应用场景不限于图3所示的应用场景。
103.图3为微服务依赖关系确定系统架构示意图。在图3中,以用户在终端设备上利用一微服务系统处理短视频为例,该微服务系统可以对短视频进行剪裁、变换、合成、渲染等。如果采用人工梳理该微服务系统中微服务间的强弱依赖关系,需要依赖相关人员对业务的了解程度。而且,如果上述微服务系统迭代,依赖关系会产生变化,人工梳理很难梳理出上
述微服务系统中微服务间的强弱依赖关系,难以适应不断变化的微服务系统。这样,可能会出现由于上述微服务系统中微服务间的强弱依赖关系不清楚,相关人员很难对系统中的强依赖关系进行及时维护,强依赖关系出问题,从而导致整个系统不可用(or体验受损很严重),进而导致用户在终端上利用上述微服务系统处理短视频时,出现无法处理或处理出错的情况。因此,本申请实施例提供上述微服务依赖关系确定系统架构,该架构可以包括获取单元301、处理器302和显示单元303。
104.可以理解的是,本申请实施例示意的结构并不构成对微服务依赖关系确定架构的具体限定。在本申请另一些可行的实施方式中,上述架构可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置,具体可根据实际应用场景确定,在此不做限制。图3所示的部件可以以硬件,软件,或软件与硬件的组合实现。
105.在具体实现过程中,上述获取单元301可以从上述微服务系统获取系统中调用方微服务在调用被调用方微服务后产生的返回结果,并将该返回结果发送至上述处理器302,从而,上述处理器302获取上述返回结果。这样上述处理器302在获取上述返回结果后,可以基于该返回结果,确定上述微服务系统中调用方微服务与被调用方微服务之间的强弱依赖关系,其中,无需依靠人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。而且,上述处理器302还可以在确定上述微服务系统中调用方微服务与被调用方微服务之间的强弱依赖关系时,考虑两者之间当前的依赖关系以及记录的历史依赖关系,进而基于当前的依赖关系和历史依赖关系,确定上述微服务系统中调用方微服务与被调用方微服务之间最终的依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。这样,相关人员可以基于上述处理器302确定的上述微服务系统中微服务间的依赖关系,对系统中的强依赖关系进行及时维护,减少强依赖关系出问题,导致的整个系统不可用(or体验受损很严重)的情况,进而减少用户在终端上利用上述微服务系统处理短视频时,出现的无法处理或处理出错的情况。
106.显示单元303可以用于对上述返回结果以及上述强弱依赖关系等进行显示。显示单元还可以是触摸显示屏,用于在显示的上述内容的同时接收用户指令,以实现与用户的交互。
107.应理解,本申请实施例描述的系统架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
108.下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
109.图4为本申请实施例提供的一种微服务依赖关系确定方法的流程示意图,本实施例的执行主体可以为图3中的处理器302,具体执行主体可以根据实际应用场景确定,本申请实施例对此不做特别限制。如图4所示,本申请实施例提供的微服务依赖关系确定方法可以包括如下步骤:
110.s401:获取目标微服务系统产生的调用数据,该调用数据包括上述目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果。
111.其中,目标微服务系统可以根据实际情况确定,例如上述图3中的微服务系统。
112.这里,以目标微服务系统为上述图3中的微服务系统,调用方微服务为上述图3中的微服务a,被调用方微服务为上述图3中的微服务b为例。上述调用数据可以包括上述目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果,可以理解为上述调用数据包括微服务a在调用方微服务b后,微服务a产生的返回结果。除此之外,上述调用数据还可以包括调用方微服务的标识(例如微服务名称),被调用方微服务的标识,调用方微服务调用被调用方微服务的方法标识(例如方法名称)等。
113.在一种可能的实现方式中,上述处理器在获取目标微服务系统产生的调用数据之后,可以将上述返回结果存储在预设队列中。这样,上述处理器可以在需要识别目标微服务系统中微服务间的依赖关系时,从上述预设队列中获取上述返回结果,并根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的依赖关系,满足不同应用场景下的不同应用需求。
114.示例性的,如图5所示,上述处理器从微服务系统获取该系统中调用方微服务在调用被调用方微服务后产生的返回结果,并将该返回结果存储在预设队列,从而,后续从上述预设队列中获取(消费)上述返回结果,根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的依赖关系。其中,上述预设队列可以为kafaka队列,这里,kafaka队列具备高吞吐量、持久性、可靠性、高并发等特点,适合应用。
115.s402:根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。
116.在本申请实施例中,上述处理器可以预先设置依赖关系确定规则,例如设置被调用方微服务出错会导致调用方微服务产生错误的返回结果,则两者之间为强依赖关系;被调用方微服务出错,调用方微服务仍然能够产生正确的返回结果,则两者之间为弱依赖关系。
117.这样,上述处理器在上述根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系时,可以先获取上述被调用方微服务被上述调用方微服务调用的调用结果,从而基于该调用结果和上述调用方微服务在调用上述被调用方微服务后产生的返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。即如果上述调用结果出错,且上述返回结果出错,则上述处理器可以确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系为强依赖。如果上述调用结果出错,且上述返回结果未出错,则上述处理器可以确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系为弱依赖。
118.s403:根据上述当前依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新。
119.这里,上述处理器在确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系后,基于当前依赖关系对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新,即考虑上述调用方微服务与上述被调用方微服务之间当前的依赖关系以及记录的历史依赖关系,进而基于当前的依赖关系和历史依赖关系,确定调用方微服务与被调用方微服务之间最终的依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
120.示例性的,上述历史依赖关系包括历史强依赖。上述处理器在基于当前依赖关系对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新时考虑:如果确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系为强依赖,则将记录的上述调用方微服务与上述被调用方微服务之间的历史强依赖的计数值加一;如果确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系为弱依赖,则将记录的上述调用方微服务与上述被调用方微服务之间的历史强依赖的计数值减一,从而,实现对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值的更新,后续可以基于更新后的历史依赖关系的计数值,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系。
121.s404:根据更新后的历史依赖关系的计数值,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系。
122.在本申请实施例中,上述处理器可以预设计数值阈值,在上述基于上述当前依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新后,将更新后的历史依赖关系的计数值与上述预设计数值阈值进行比较,从而,根据比较结果,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系。其中,上述历史依赖关系包括历史强依赖。
123.示例性的,如果更新后的历史强依赖的计数值大于上述预设计数值阈值,则上述处理器可以确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系为强依赖。如果上述更新后的历史强依赖的计数值小于或等于上述预设计数值阈值,则上述处理器可以确定上述调用方微服务与上述被调用方微服务之间的所述最终依赖关系为弱依赖。
124.其中,上述预设计数值阈值可以根据实际情况设置,例如设置为0。示例性的,如图6所示,上述处理器在获取目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果后,根据该返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。如果当前依赖关系为强依赖,则上述处理器可以将记录的上述调用方微服务与上述被调用方微服务之间的历史强依赖的计数值加一。如果当前依赖关系为弱依赖,则上述处理器将记录的上述调用方微服务与上述被调用方微服务之间的历史强依赖的计数值减一。从而,上述处理器实现基于当前依赖关系,实现对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值的更新,后续将更新后的历史依赖关系的计数值与预设计数值阈值进行比较,例如比较更新后的历史强依赖的计数值是否大于0。如果上述更新后的历史强依赖的计数值大于0,则上述处理器确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系为强依赖。如果上述更新后的历史强依赖的计数值小于或等于0,则上述处理器确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系为弱依赖。从而,后续相关人员可以基于上述确定的微服务间的强弱关系对系统中的强依赖关系进行及时维护,减少强依赖关系出问题,导致的整个系统不可用(or体验受损很严重)的情况。
125.本申请实施例中,上述处理器通过获取目标微服务系统产生的调用数据,该调用数据包括目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果,进而,根据该返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系,根据该依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系
的计数值进行更新,从而,根据更新后的结果,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系,其中,无需人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。而且上述处理器采用微服务间当前的依赖关系对记录的微服务间的历史依赖关系进行更新,基于更新后的结果确定微服务间的最终依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
126.另外,本申请实施例在上述根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前强弱依赖关系之前,还考虑判断上述返回结果是否为上述被调用方微服务被上述调用方微服务直接调用后,上述调用方微服务产生的返回结果。如果判断结果为是,则上述处理器可以根据该返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。图7为本申请实施例提出的另一种微服务依赖关系确定方法的流程示意图。如图7所示,该方法包括:
127.s701:获取目标微服务系统产生的调用数据,该调用数据包括目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果。
128.其中,步骤s701与上述步骤s401的实现方式相同,此处不再赘述。
129.s702:判断上述返回结果是否为上述被调用方微服务被上述调用方微服务直接调用后,上述调用方微服务产生的返回结果。
130.s703:若上述返回结果为上述被调用方微服务被上述调用方微服务直接调用后,上述调用方微服务产生的返回结果,则根据该返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。
131.这里,以图1或图2中微服务系统为例。如果微服务a调微服务b,在微服务a调微服务b后,微服务a产生一返回结果。如果微服务a调微服务b后再调微服务g,微服务a在调用方微服务b再调微服务g后,微服务a产生一返回结果。
132.上述处理器在获取微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果,首判断上述返回结果是否为上述被调用方微服务被上述调用方微服务直接调用后,上述调用方微服务产生的返回结果,例如以上述微服务a调微服务b,微服务a调微服务b后再调微服务g为例,上述处理器在获取微服务a产生的返回结果后,判断该返回结果是否为微服务a调微服务b后,微服务a产生的返回结果。
133.这里,上述处理器进行上述判断的目的是使得后续能够基于上述返回结果更加准确地确定出微服务间的依赖关系。因为如果不进行上述判断,那上述处理器获取的上述返回结果有可能是微服务a调微服务b再调微服务g后,微服务a产生返回结果。这样,后面在处理时,如果上述返回结果出错,上述处理器需要获取微服务b被微服务a的调用结果,以及微服务g被微服务b的调用结果,进而,基于上述返回结果和获取的调用结果,确定微服务a与微服务b的依赖关系,以及微服务b与微服务c的依赖关系。在上述微服务a产生的返回结果出错,微服务b被微服务a的调用结果出错,微服务g被微服务b的调用结果出错时,上述处理器无法确定是由于微服务b被微服务a的调用结果出错才导致上述微服务a产生的返回结果出错,还是微服务g被微服务b的调用结果出错才导致上述微服务a产生的返回结果出错,或者是微服务b被微服务a的调用结果出错,且微服务g被微服务b的调用结果出错,才导致上述微服务a产生的返回结果出错,从而,上述处理器无法准确确定微服务a与微服务b的依赖
关系,以及微服务b与微服务c的依赖关系。
134.s704:根据上述当前依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新。
135.s705:根据更新后的历史依赖关系的计数值,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系。
136.其中,步骤s704

s705与上述步骤s403

s404的实现方式相同,此处不再赘述。
137.本申请实施例中,上述处理器在上述根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前强弱依赖关系之前,还考虑上述调用方微服务是否为一个微服务,上述被调用方微服务是否为一个微服务,且上述返回结果是否为上述被调用方微服务被上述调用方微服务直接调用后,上述调用方微服务产生的返回结果。如果判断结果均为是,则上述处理器可以根据该返回结果,准确确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系,使得后续处理结果准确性较高。而且,上述处理过程中无需人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。另外,上述处理器采用微服务间当前的依赖关系对记录的微服务间的历史依赖关系进行更新,基于更新后的结果确定微服务间的最终依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
138.另外,上述处理器在确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系之后,可以将该最终依赖关系存储在预设数据库中,以便后续依赖数据库中存储的数据提供ui展示或开放api(openapi)以方便人工和第三方系统调用。而且,上述处理器在将上述最终依赖关系存储在预设数据库时,还考虑该预设数据库是否达到预设存储条件,如果满足,才将上述最终依赖关系存储在预设数据库,避免频繁更新数据库造成资源浪费。图8为本申请实施例提出的再一种微服务依赖关系确定方法的流程示意图。如图8所示,该方法包括:
139.s801:获取目标微服务系统产生的调用数据,该调用数据包括目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果。
140.s802:根据上述返回结果,确定上述调用方微服务与上述被调用方微服务之间的当前依赖关系。
141.s803:根据上述当前依赖关系,对记录的上述调用方微服务与上述被调用方微服务之间的历史依赖关系的计数值进行更新。
142.s804:根据更新后的历史依赖关系的计数值,确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系。
143.其中,步骤s801

s804与上述步骤s401

s404的实现方式相同,此处不再赘述。
144.s805:判断预设数据库是否达到预设存储条件。
145.其中,上述预设存储条件可以根据实际情况设置,例如设置上述预设数据库存储数据的间隔达到预设间隔阈值。例如预设间隔阈值为一天,上述处理器可以判断上述数据库存储数据的间隔是否达到一天,如果达到,则将上述调用方微服务与上述被调用方微服务之间的最终依赖关系存储在上述数据库中,避免频繁更新数据库造成资源浪费。
146.s806:若上述数据库达到上述预设存储条件,则将上述调用方微服务与上述被调
用方微服务之间的最终依赖关系存储在上述数据库中。
147.在本申请实施例中,上述处理器将上述最终依赖关系存储在预设数据库中,方便后续依赖数据库中存储的数据提供ui展示或openapi以便人工和第三方系统调用。
148.本申请实施例上述处理器在确定上述调用方微服务与上述被调用方微服务之间的最终依赖关系之后,将该最终依赖关系存储在预设数据库中,以便后续依赖数据库中存储的数据提供ui展示或openapi以方便人工和第三方系统调用。而且,上述处理器在将上述最终依赖关系存储在预设数据库时,还考虑该预设数据库是否达到预设存储条件,如果满足,才将上述最终依赖关系存储在预设数据库,避免频繁更新数据库造成资源浪费。而且,上述处理过程中无需人工梳理微服务间的强弱依赖关系,提高微服务间强弱依赖关系的识别效率,节省人力,能够较好地适应不断变化的微服务系统。另外,上述处理器采用微服务间当前的依赖关系对记录的微服务间的历史依赖关系进行更新,基于更新后的结果确定微服务间的最终依赖关系,减少通过少数次数识别微服务间依赖关系出现的由于噪声数据等产生的干扰,以及数据丢失导致的识别出错的概率。
149.对应于上文实施例的微服务依赖关系确定方法,图9为本申请实施例提供的微服务依赖关系确定装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图9为本申请实施例提供的一种微服务依赖关系确定装置的结构示意图,该微服务依赖关系确定装置90包括:获取模块901、第一确定模块902、更新模块903以及第二确定模块904。这里的微服务依赖关系确定装置可以是上述处理器本身,或者是实现处理器的功能的芯片或者集成电路。这里需要说明的是,获取模块、第一确定模块、更新模块以及第二确定模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
150.其中,获取模块901,用于获取目标微服务系统产生的调用数据,所述调用数据包括所述目标微服务系统中调用方微服务在调用被调用方微服务后产生的返回结果。
151.第一确定模块902,用于根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前依赖关系。
152.更新模块903,用于根据所述当前依赖关系,对记录的所述调用方微服务与所述被调用方微服务之间的历史依赖关系的计数值进行更新。
153.第二确定模块904,用于根据更新后的历史依赖关系的计数值,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系。
154.在一种可能的实现方式中,所述第一确定模块902,具体用于:
155.判断所述返回结果是否为所述被调用方微服务被所述调用方微服务直接调用后,所述调用方微服务产生的返回结果;
156.若所述返回结果为所述被调用方微服务被所述调用方微服务直接调用后,所述调用方微服务产生的返回结果,则根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的当前依赖关系。
157.在一种可能的实现方式中,所述第一确定模块902,具体用于:
158.获取所述被调用方微服务被所述调用方微服务调用的调用结果;
159.若所述调用结果出错,且所述返回结果出错,则确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系为强依赖;
160.若所述调用结果出错,且所述返回结果未出错,则确定所述调用方微服务与所述
被调用方微服务之间的所述当前依赖关系为弱依赖。
161.在一种可能的实现方式中,所述历史依赖关系包括历史强依赖。
162.所述更新模块903,具体用于:
163.若所述当前依赖关系为强依赖,则将记录的所述调用方微服务与所述被调用方微服务之间的所述历史强依赖的计数值加一;
164.若所述当前依赖关系为弱依赖,则将记录的所述调用方微服务与所述被调用方微服务之间的所述历史强依赖的计数值减一。
165.在一种可能的实现方式中,所述第二确定模块904,具体用于:
166.将所述更新后的历史依赖关系的计数值与预设计数值阈值进行比较;
167.根据比较结果,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系。
168.在一种可能的实现方式中,所述历史依赖关系包括历史强依赖。
169.所述第二确定模块904,具体用于:
170.若更新后的历史强依赖的计数值大于所述预设计数值阈值,则确定所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系为强依赖;
171.若所述更新后的历史强依赖的计数值小于或等于所述预设计数值阈值,则确定所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系为弱依赖。
172.在一种可能的实现方式中,第一确定模块902,具体用于:
173.将所述返回结果存储在预设队列中;
174.从所述预设队列中获取所述返回结果,并根据所述返回结果,确定所述调用方微服务与所述被调用方微服务之间的所述当前依赖关系。
175.本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
176.图10为本申请实施例提供的另一种微服务依赖关系确定装置的结构示意图,在图9所示实施例基础上,上述微服务依赖关系确定装置90还包括:存储模块905。
177.其中,存储模块905,用于在所述第二确定模块904根据更新后的历史依赖关系的计数值,确定所述调用方微服务与所述被调用方微服务之间的最终依赖关系之后,将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在预设数据库中。
178.在一种可能的实现方式中,所述存储模块905,具体用于:
179.判断所述预设数据库是否达到预设存储条件;
180.所述将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在预设数据库中,包括:
181.若所述预设数据库达到所述预设存储条件,则将所述调用方微服务与所述被调用方微服务之间的所述最终依赖关系存储在所述预设数据库中。
182.在一种可能的实现方式中,所述预设存储条件包括所述预设数据库存储数据的间隔达到预设间隔阈值。
183.本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
184.可选地,图11a和11b示意性地提供本申请所述微服务依赖关系确定设备的一种可
能的基本硬件架构示意图。
185.参见图11a和11b,微服务依赖关系确定设备1100包括至少一个处理器1101以及通信接口1103。进一步可选的,还可以包括存储器1102和总线1104。
186.其中,微服务依赖关系确定设备1100中,处理器1101的数量可以是一个或多个,图11a和11b仅示意了其中一个处理器1101。可选地,处理器1101,可以是中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)或者数字信号处理器(digital signal processor,dsp)。如果微服务依赖关系确定设备1100具有多个处理器1101,多个处理器1101的类型可以不同,或者可以相同。可选地,微服务依赖关系确定设备1100的多个处理器1101还可以集成为多核处理器。
187.存储器1102存储计算机指令和数据;存储器1102可以存储实现本申请提供的上述微服务依赖关系确定方法所需的计算机指令和数据,例如,存储器1102存储用于实现上述微服务依赖关系确定方法的步骤的指令。存储器1102可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(rom)、固态硬盘(ssd)、硬盘(hdd)、光盘),易失性存储器。
188.通信接口1103可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
189.可选的,通信接口1103还可以用于微服务依赖关系确定设备1100与其它计算设备或者终端进行数据通信。
190.进一步可选的,图11a和11b用一条粗线表示总线1104。总线1104可以将处理器1101与存储器1102和通信接口1103连接。这样,通过总线1104,处理器1101可以访问存储器1102,还可以利用通信接口1103与其它计算设备或者终端进行数据交互。
191.在本申请中,微服务依赖关系确定设备1100执行存储器1102中的计算机指令,使得微服务依赖关系确定设备1100实现本申请提供的上述微服务依赖关系确定方法,或者使得微服务依赖关系确定设备1100部署上述的微服务依赖关系确定装置。
192.从逻辑功能划分来看,示例性的,如图11a所示,存储器1102中可以包括获取模块901、第一确定模块902、更新模块903以及第二确定模块904。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现获取模块、第一确定模块、更新模块以及第二确定模块的功能,而不限定是物理上的结构。
193.示例性的,如图11b所示,存储器1102中可以包括存储模块905。这里的包括仅仅涉及存储器中所存储的指令被执行时可以实现存储模块的功能,而不限定是物理上的结构。
194.另外,上述的微服务依赖关系确定设备除了可以像上述图11a和11b通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
195.本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述微服务依赖关系确定方法。
196.本申请提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行本申请提供的上述微服务依赖关系确定方法。
197.本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所
述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述微服务依赖关系确定方法。
198.在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
199.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
200.另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1