组件升级方法、装置、电子设备和存储介质与流程

未命名 10-08 阅读:76 评论:0


1.本公开涉及软件升级技术领域,特别是涉及一种组件升级方法、装置、电子设备和存储介质。


背景技术:

2.在微服务的场景下,体量较大的软件会根据业务功能被拆分为多个组件。这些组件之间存在依赖关系,在服务器提供服务的过程中,各个组件可以通过协同运行来提供服务。
3.在实际使用过程中,软件存在版本升级的需求。在相关技术中,对于包含多个组件的软件,对于软件的升级可以是对软件中的组件进行逐个遍历升级。而微服务场景下的版本升级,可能存在一个组件的版本升级,需要依赖于另一个组件的版本为指定版本,例如,该另一个组件的指定版本为另一个组件的升级前的版本。可见,如果仍然采用逐个升级的策略,可能会导致软件中的各个组件无法正常升级或者升级后无法正常提供服务。


技术实现要素:

4.有鉴于此,本公开的目的在于提出一种组件升级方法、装置、电子设备和存储介质,本公开能够针对性的解决现有的问题。
5.基于上述目的,第一方面,本公开提出了一种组件升级方法,包括:对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序;按照所述升级路径对所述多个待升级组件进行升级。
6.第二方面,还提供了一种装置,应用于软件,所述软件包括存在升级依赖关系的多个待升级组件,所述装置包括:获取单元,被配置成对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;确定单元,被配置成根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序;升级单元,被配置成按照所述升级路径对所述多个待升级组件进行升级。
7.第三方面,还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现第一方面所述的方法。
8.第四方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现第一方面任一项所述的方法。
9.总的来说,本公开至少存在以下有益效果:根据软件中组件之间的升级依赖情况
确定组件的升级路径,可以确保组件升级时能够对被依赖组件进行正常的功能依赖,以实现顺利升级,有助于确保微服务的正常提供,在一定程度上避免了软件中组件升级失败的问题。
附图说明
10.在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本公开公开的一些实施方式,而不应将其视为是对本公开范围的限制。
11.图1示出了本公开实施例中组件升级方法的流程图;图2示出了本公开实施例中组件升级方法的另一个流程图;图3示出了本公开实施例中组件升级方法的另一个流程图;图4示出了本公开实施例中组件升级装置的示意图;图5示出了本公开一实施例所提供的一种电子设备的结构示意图;图6示出了本公开一实施例所提供的一种存储介质的示意图。
具体实施方式
12.下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
13.需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
14.图1示出本公开中组件升级方法。本公开的实施例中,该方法应用于软件,所述软件包括存在依赖关系的多个待升级组件,所述方法包括:步骤s101,对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一。
15.在本实施例中,该方法的执行主体可以对所述多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息。依赖关系信息可以指示待升级的组件与该组件的被依赖组件之间的依赖关系,也即该组件在升级时依赖哪个组件才能完成正确、顺利的升级。比如,组件a、组件b、组件c和组件d之间的依赖关系信息可以是a依赖b、c,b依赖d,c依赖d,d无依赖组件。
16.具体地,升级依赖可以指组件升级时需要使用被依赖组件所提供的功能,比如升级的组件需要调用被依赖组件中的接口等。
17.本实施例中的该步骤可以是对于多个待升级组件中的每个组件执行的,在此仅以目标组件为例进行说明。
18.在实践中,本公开的执行主体可以是任意电子设备,比如服务器或者终端设备。
19.步骤s102,根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序。
20.在本实施例中,上述执行主体可以根据所述依赖关系信息,确定所述多个待升级
组件的升级路径。具体地,上述执行主体可以采用各种方式根据所述依赖关系信息,确定所述多个待升级组件的升级路径。比如,上述执行主体可以将多个待升级组件和相应的依赖关系信息输入预设模型,并得到从该预设模型输出的升级路径。
21.配置文件中不仅可以包括依赖关系信息,还可以包括每个待升级组件的各条候选升级路径,每个候选升级路径包括升级顺序和升级所经版本。升级所经版本指升级过程要经过的所有版本,这些版本包括中间版本和目标版本。
22.举例来说,组件c的候选升级路径可以包括路径1和路径2,其中路径1是:组件c依赖组件d从版本e0709直接升级到版本e0711,路径2是依赖组件d首先从版本e0709升级到版本e0710,之后从版本e0710升级到版本e0711。这样,路径1的升级所经版本就是版本e0709、版本e0711。路径2的升级所经版本是版本e0709、版本e0710、版本e0711。其中,版本e0710是中间版本,版本e0711是目标版本。
23.步骤s103,按照所述升级路径对所述多个待升级组件进行升级。
24.在本实施例中,在确定出升级路径之后,上述执行主体可以按照所述升级路径对所述多个待升级组件进行升级。
25.本实施例可以根据软件中组件之间的升级依赖情况确定组件的升级路径,可以确保组件升级时能够对被依赖组件进行正常的功能依赖,以实现顺利升级,有助于确保微服务的正常提供,在一定程度上避免了软件中组件升级失败的问题。
26.图2示出根据本公开实施例的组件升级方法。如图2所示,该方法可以包括:步骤201,对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一。
27.步骤202,确定所述被依赖组件集合中的被依赖组件在升级时的停留版本,其中,停留版本用于指示所述被依赖组件需要停留在指定版本,直到所述目标组件完成依赖所述指定版本的所述被依赖组件的升级。
28.在本实施例中,上述执行主体可以确定所述被依赖组件集合中的被依赖组件在升级时的停留版本。停留版本用于指示组件依赖指定版本也即特定版本的被依赖组件。在目标组件的一个升级路径中,目标组件必须依赖指定版本的被依赖组件才能完成升级(阶段升级或完整升级)。因此,停留版本指目标组件在完成升级所依赖的被依赖组件对应的指定版本。该被依赖组件需要停留在该指定版本,直到目标组件完成上述升级。停留版本也即是断点版本或断开版本,采用break标签来标识。
29.步骤203,根据所述依赖关系信息和所述停留版本,确定所述多个待升级组件的升级顺序。
30.在本实施例中,上述执行主体可以采用各种方式根据依赖关系信息和停留版本,确定多个待升级组件的升级顺序。举例来说,上述执行主体可以将多个待升级组件中每个组件的依赖关系信息和停留版本输入指定模型,并得到从该指定模型输出的升级顺序。该指定模型可以通过多个待升级组件中每个组件的依赖关系信息和停留版本,预测多个待升级组件的升级顺序。
31.步骤204,按照所述升级顺序对所述多个待升级组件进行升级。
32.本实施例可以找到被依赖组件在升级过程中需要停留的版本,从而将该版本的停
留加入升级顺序的规划,避免需停留的被依赖组件过早升级导致无法满足组件间升级依赖的问题,从而可以完善组件的升级顺序,使升级顺序更加准确。
33.在本实施例的一些可选的实现方式中,所述方法还包括:确定所述目标组件对所述所依赖组件的依赖度,其中,所述依赖度用于表征所述目标组件对所述被依赖组件集合中全部组件的依赖程度;步骤203可以包括:根据每个组件所对应依赖度由小到大的顺序,确定所述多个待升级组件的初始升级顺序;根据所述依赖关系信息和所述停留版本调整所述初始升级顺序,将调整结果确定为所述多个待升级组件的升级顺序。
34.在这些可选的实现方式中,上述执行主体可以采用各种方式确定目标组件对所依赖组件的依赖度。比如,上述执行主体可以将目标组件的标识和被依赖组件集合中各个被依赖组件的标识全部输入依赖度计算公式或模型,并得到从该公式或模型输出的依赖度。
35.之后,上述执行主体可以根据依赖度由小到大的顺序,确定初始升级顺序。比如,上述执行主体可以直接将组件所对应依赖度由小到大的顺序,确定多个待升级组件的初始升级顺序。或者,上述执行主体可以对依赖度按照由小到大的顺序得到的序列进行预设处理,比如输入预置的顺序修正公式,并将该公式的输出作为初始升级顺序。
36.上述执行主体可以采用各种方式根据依赖关系信息和停留版本,调整初始升级顺序,并将调整结果确定为多个待升级组件的升级顺序。举例来说,依赖度由小到大的序列为d《c《b《a。
37.a:依赖b组件e0710,依赖c组件e0711(a组件从e0709升级到e0711)b:依赖d组件e0710(b组件从e0709升级到e0710)c:依赖d组件e0711(c组件从e0709升级到e0711)d:无(d组件从e0709升级到e0712)停留版本包括:a : e0709,e0711b :e0709,e0710c :e0709,e0711d : e0709,e0710,e0711升级顺序在调整后是:升级路径:d:e0709

e0710b:e0709

e0710d:e0710

e0712c:e0709

e0711a:e0709

e0711。
38.或者,上述执行主体可以将依赖关系信息、所述停留版本和初始升级顺序,输入预先训练的模型,并将从该模型的输出作为调整结果。
39.这些实现方式可以按照依赖度由小到大的顺序,确定初始升级顺序,从而将对其它组件依赖少、依赖程度低的组件先行升级,有助于确保升级的顺利实现。
40.在这些实现方式的一些可选的应用场景中,上述确定所述目标组件对所述所依赖组件的依赖度,可以包括:根据所述目标组件所对应的各个被依赖组件的预设依赖值,确定
所述目标组件的总依赖数值;根据所述总依赖数值确定所述目标组件的依赖度。
41.在这些应用场景中,上述执行主体可以采用各种方式根据所述目标组件所对应的各个被依赖组件的预设依赖值,确定所述目标组件的总依赖数值。比如,上述执行主体可以将目标组件的各个被依赖组件的预设依赖值相加,得到总依赖数值。或者上述执行主体可以在各个被依赖组件的预设依赖值一致的情况下,将预设依赖值乘以被依赖组件的个数,从而得到总依赖数值。再或者,上述执行主体可以将目标组件的各个被依赖组件的预设依赖值输入在先训练的模型,并得到从该模型输出的总依赖数值。
42.举例来说,组件d无依赖,组件c依赖组件d,组件b依赖组件d,组件a依赖组件b、c。各个被依赖组件的预设依赖值可以是相同的,都为10。
43.那么,各个组件的依赖度可以为:d:0,c:10,b:10,a:20。
44.依赖度由小到大的排序序列是d《c =b《a。
45.这些应用场景可以利用所依赖组件的预设依赖值,确定组件对于被依赖组件的依赖程度,准确评估组件对其它组件的整体依赖情况,有助于提高确定依赖度的准确度。
46.在这些实现方式的一些可选的应用场景中,所述依赖关系信息为树状结构;所述确定所述目标组件对所述所依赖组件的依赖度,可以包括:判断所述树状结构中的各个组件节点之间是否均为单向依赖关系;若所述树状结构中的各个组件节点之间均为单向依赖关系,则确定所述目标组件对所述所依赖组件的依赖度。
47.在这些应用场景中,上述执行主体可以判断目标组件对应的树状结构中的各个组件节点之间是否为单向依赖关系。单向依赖关系指,组件之间不能存在互相依赖,也不能存在间隔其它组件的循环依赖。也即,树状结构中不能存在环状结构或者循环结构。
48.这些应用场景中,可以根据配置文件中的依赖关系信息,验证组件是否是能够实现顺利升级。这些应用场景在验证依赖关系信息无误后,再确定依赖度,可以避免基于依赖关系信息的无效升级过程。
49.在本实施例的一些可选的实现方式中,步骤202可以包括:若对于同一个升级阶段的升级,组件存在至少两个可依赖的候选停留版本,采用贪心算法,在所述至少两个候选停留版本中查找使组件升级时版本跨度最大的候选停留版本;将查找到的候选停留版本作为被依赖组件在升级时的停留版本。
50.在这些可选的实现方式中,上述执行主体可以在任一个阶段升级过程中的可选停留版本有不止一个的情况下,利用贪心算法,查找使组件升级时版本跨度最大的停留版本。一次完整的升级过程可以包括至少一个升级阶段。以中间版本作为升级初始版本或者升级目标版本的升级过程,或者不存在中间版本的一步升级过程,均可以称为一个阶段升级过程。
51.具体的,可以选取使组件的升级跨度最大且符合依赖关系的候选停留版本,通常依赖该版本可以使组件的升级耗时最短。这里的跨度指一个升级阶段的升级对应的升级所经版本的数量,也即升级后版本和升级前版本之间的版本编号差值。
52.这些实现方式可以通过贪心算法,找到耗时短的停留版本,提高了升级的效率。
53.在这些实现方式的一些可选的应用场景中,所述方法还包括:获取对于每个组件所对应的停留版本所设定的版本区间;在所述至少两个候选停留版本中查找升级耗时最短的候选停留版本之前,所述确定所述被依赖组件集合中的被依赖组件在升级时的停留版本
还包括:在所述版本区间内,确定组件在升级时可依赖的候选停留版本。
54.在这些应用场景中,上述执行主体可以获取版本区间,并确定在版本区间内的候选停留版本。
55.对于每个要升级的组件,配置文件中的版本区间可以包括该组件所依赖组件的左区间和右区间。或者,版本区间可以包括左区间,在确定升级路径时,可以实时自动补全右区间。比如,所依赖组件的左区间可以是e0709+,右区间可以是e0709p08-,也即所依赖组件的版本号区间为[e0709,e0709p08]。
[0056]
所依赖组件的版本比如停留版本在版本区间的左区间和右区间的范围里。升级工具具有区间的补全开关,可以设置自动补全右区间的查找范围:(1)若补全右区间只能在该同一个大版本范围内补全,则上述执行主体可以利用升级工具自动从配置的左区间,设置区间版本可达最大版本作为右区间。比如,依赖组件的版本设置为e0709+,则自动补全的右区间为e0709p99-。(2)若补全右区间采用跨版本查找,则上述执行主体可以利用升级工具在被依赖组件的各候选升级目的版本中,获取最接近左区间的版本,作为右区间的版本。比如,依赖组件的版本设置为e0709+,跨版本后,从依赖组件配置找到最接近e0709的版本e0711p01,则自动补全为e0711p01-。
[0057]
这些应用场景可以通过版本区间,限制候选停留版本的版本的范围,提高确定停留版本的准确度。
[0058]
在本公开任一实施例的一些可选的实现方式中,所述升级路径还包括目标版本;所述根据所述依赖关系信息,确定所述多个待升级组件的升级路径,包括:对所述多个待升级组件中的目标组件,确定所述目标组件的候选目标版本是否符合配置文件中的依赖关系信息;若所述目标组件的候选目标版本符合配置文件中的依赖关系信息,则根据所述依赖关系信息,确定所述多个待升级组件的升级路径。
[0059]
在这些实现方式中,上述执行主体可以先验证配置文件中候选升级路径中的目标版本是否符合依赖关系信息。具体地。目标版本即是升级过程要升级到的最终版本。上述执行主体可以确定目标版本是否符合升级依赖关系。比如,目标版本在依赖关系信息中是否是依赖被依赖组件可以达到的版本。
[0060]
这些实现方式可以确认目标版本是否符合升级依赖关系,从而避免目标版本不符合升级依赖关系却盲目升级,导致升级后组件不可用的问题。
[0061]
如图3所示,图中示出了另一种组件升级方法。
[0062]
本公开中组件的之间的依赖可以是组件对至少一个其它组件的功能依赖。该依赖比如可以是一个组件依赖另外一个组件中的接口。
[0063]
本公开中,步骤301,加载升级配置文件。本公开中软件的组件存在已有的配置文件,具体地,每个组件存在对应的配置文件。配置文件可以采用json或xml等常用文件格式。在实践中,配置文件可以包括以下至少一者:组件名称标识、组件升级提示、组件各升级版本的路径。
[0064]
举例来说,组件a的组件升级配置文件可以表示为:《component》《com》组件a《/com》《tips》组件a升级说明《/tips》
《upgrade from="e0709" to="e0711" remark="升级路径说明"》《dependence》《comp id="组件b"》《version》e0711+《/version》《version》e0711h02-《/version》《version》e0711h07《/version》《/comp》《break》《version》e0711h01《/version》《/break》《/dependence》《dependence》《comp id="组件c"》《version》e0709+《/version》《version》e0709h02-《/version》《version》e0710+《/version》《version》e0710h01《/version》《/comp》《break》《version》e0711h01+《/version》《version》e0711h07-《/version》《/break》《/dependence》《patch》《/patch》《/upgrade》《upgrade from="e0707" to="e0709" remark="升级路径说明1"》《dependence》《comp id="组件b"》《version》e0711《/version》《/comp》《/dependence》《dependence》《comp id="组件c"》《version》e0711《/version》《/comp》《/ dependence》《patch》《version》h01《/version》
《version》l03《/version》《version》p05《/version》《version》h06《/version》《version》p07《/version》《version》h08《/version》《/patch》《/upgrade》《/component》组件c.xml:《component》《com》组件c《/com》《tips》组件c升级说明《/tips》《upgrade from="e0709" to="e0711" remark="升级路径说明"》《relation》《comp id="组件d"》《version》e0711+《/version》《version》e0711h02-《/version》《version》e0711h07《/version》《/comp》《break》《version》e0711h01《/version》《/break》《/relation》《dependence》《comp id="组件e"》《version》e0709+《/version》《version》e0709h02-《/version》《version》e0710+《/version》《version》e0710h01《/version》《/comp》《break》《version》e0711h01+《/version》《version》e0711h07-《/version》《/break》《/dependence》《patch》《/patch》《/upgrade》《/component》
其中,component标签代表一个组件的整体配置。在component下:com标签代表被依赖的组件编码,com下version代表依赖组件的版本情况。version可配置多个,可配置依赖版本包括多个依赖版本区间(可用+号和-号代表依赖版本区间的左区间和右区间)、多个指定版本及组合方式。tips标签代表组件整体升级说明。一个组件可以存在多个候选升级路径,采用component标签来表示。其中的每个升级路径可以采用upgrade标签表示。
[0065]
upgrade下存在三种标签:dependence标签:代表强依赖的依赖组件,如果选择升级此组件,则在此升级路径下必须要安装对应依赖组件的对应版本。
[0066]
relation标签:代表弱依赖的依赖组件,如果选择升级此组件,则在此升级路径下可选安装对应依赖组件。如果选择安装了,则升级为强依赖,需安装被依赖组件对应版本。
[0067]
patch:代表补丁版本,与常规版本的升级目的版本、升级规则及依赖关系均相同。
[0068]
一个upgrade标签下可包括任意数量个dependence和relation标签,代表一个组件所依赖的不同组件情况。若未配置,则代表不依赖任何组件。
[0069]
步骤302,自动计算补全依赖组件版本区间。对于每个要升级的组件,配置文件可以包括该组件所依赖组件的左区间和右区间。或者可以包括左区间,在具体确定升级路径时,可以实时自动补全右区间。
[0070]
步骤303,获取待升级组件的目标版本。判断各组件目标版本是否符合依赖情况也即依赖关系信息指示的升级依赖关系。对于待升级的每个组件,利用该组件的上述配置文件,确定该组件与所依赖组件之间依赖关系的树状结构。通过树状结构判断候选升级路径是否符合依赖情况,如果不符合,则重新确定升级路径,如果符合,则对该候选升级路径计算依赖度。具体地,如果树状结构中存在组件节点之间呈环状或者循环关系则不符合。如果树状结构中各个组件节点均是树状关系则符合。
[0071]
树状结构包括多个依赖层级,其中,以所述目标待升级组件作为所述多个依赖层级中的根节点层级,所述被依赖组件群中的各个被依赖组件按照依赖关系以子节点层级的方式呈现;每个上层节点组件与该上层节点组件的下一级节点组件之间组成一个依赖层级。
[0072]
步骤304,根据已选升级组件计算依赖度。在计算依赖度的过程中,可以采用数值的方式表征组件对于另一个组件的依赖程度。比如,该数值可以称为权重数值,其中无依赖的组件权重数值最小。如果某个组件不属于上述多个待升级组件,也即不参与升级,但是这个组件是待升级组件所依赖的被依赖组件,则对这个组件的依赖也可以加入依赖度计算,也即依赖的总依赖数值包括对这个组件的依赖。上述执行主体可以将未参与此次升级,但是与升级组件存在依赖关系的组件,加入依赖度的计算。
[0073]
步骤305,判断是否自动计算停留版本。如果设置了自动计算停留版本,则根据各组件被依赖组件配置,自动计算升级可能版本断点:上述执行主体可以根据采用依赖度计算出来的组件升级顺序,按依赖度从大到小的顺序,依次收集组件需要断开的版本。并且,按照依赖度从小到大的顺序,根据当前环境升级后的依赖满足情况,依次计算收集组件升级路径。同一组件下存在包含关系的版本可合并计算。举例来说:组件a、b、c、d,依赖度为d《c《b《a。
[0074]
a:依赖b组件e0710,依赖c组件e0711(a组件从e0709升级到e0711)b:依赖组件d组件e0710(b组件从e0709升级到e0710)c:依赖d组件e0711(c组件从e0709升级到e0711),依赖组件d组件e0710(c组件从e0709升级到e0710),依赖组件d组件e0711(c组件从e0710升级到e0711)d:无(d组件从e0709升级到e0712)依次从依赖度大到依赖度小收集停留版本:a : e0709,e0711b :e0709,e0710c :e0709,e0711d : e0709,e0710,e0711步骤306,如果未设置,则根据组件停留版本标签获取或计算被依赖组件升级版本断点。
[0075]
步骤307,被依赖组件升级停留版本的数据清理,以使停留版本不能超过被依赖组件实际配置范围。
[0076]
根据前述步骤获取的各升级组件版本停留版本,通过组件升级路径配置,按组件依次计算出采用各个停留版本的升级过程,以及升级过程的耗时,此处算法可根据贪心算法计算,不断贪心查找最快速的升级路径。
[0077]
步骤308,根据依赖组件停留版本,依次计算每个组件升级的合理步骤。根据组件间的依赖度及依赖关系信息,计算需要升级组件的整体升级路径。整合前述步骤中计算出来的各组件待升级版本的关键路径,根据组件间依赖度情况,整合计算出一条各组件合理的升级路径。所述升级路径包括升级顺序和节点版本。
[0078]
具体地,升级路径的计算步骤可以包括:步骤

对各组件关键指针均指向组件升级关联路径第一个节点。如:a : e0709(a组件升级指针,位置0),e0711b:e0709(b组件升级指针,位置0),e0710c:e0709(c组件升级指针,位置0),e0711d : e0709(d组件升级指针,位置0),e0710,e0712依赖度:d《c《b《a依赖组件关系: a: b、c; b:d; c:d; d:无 。
[0079]
升级的目标版本:a:依赖b组件e0710,依赖c组件e0711(a组件从e0709升级到e0711)b:依赖组件d组件e0710(b组件从e0709升级到e0710)c:依赖d组件e0711(c组件从e0709升级到e0711),依赖组件d组件e0710(c组件从e0709升级到e0710),依赖组件d组件e0711(c组件从e0710升级到e0711)d:无(d组件从e0709升级到e0712)步骤

各组件从依赖度从小到大的顺序,检测升级路径中的各个组件,是否符合依赖关系,如果符合,则当前组件进行补偿升级。根据依赖度顺序切换到下一个组件进行检测和升级。所有组件指针还有未走到队列末尾的,则组件按依赖度方向循环检测。同一组件升级后,若此组件具有依赖且继续满足条件可升级,则优化此组件继续升级。
[0080]
步骤

各组件从依赖度从小到大的顺序,检测升级路径中的各个组件,是否符合依赖关系,如果符合,则当前组件进行常规升级。根据依赖度顺序切换到下一个组件进行检测和升级。所有组件指针还有未走到队列末尾的,则组件按依赖度方向循环检测。
[0081]
步骤

各组件升级指针依次走到各自队列末尾,则所有组件升级步骤计算完成:a : e0709,e0711(a组件升级指针,位置1)b :e0709,e0710(b组件升级指针,位置1c :e0709,e0711(c组件升级指针,位置1)d : e0709,e0710,e0712(d组件升级指针,位置2)升级路径:d:e0709

e0710b:e0709

e0710d:e0710

e0712c:e0709

e0711a:e0709

e0711。
[0082]
本公开实施例提供了一种组件升级装置,该装置用于执行上述实施例所述的组件升级方法,如图4所示,该装置应用于软件,所述软件包括存在升级依赖关系的多个待升级组件,所述装置包括:获取单元401,被配置成对所述多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;确定单元402,被配置成根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序;升级单元403,被配置成按照所述升级路径对所述多个待升级组件进行升级。
[0083]
可选地,所述装置还被配置成:确定所述被依赖组件集合中的被依赖组件在升级时的停留版本,其中,停留版本用于指示所述被依赖组件需要停留在指定版本,直到所述目标组件完成依赖所述指定版本的所述被依赖组件的升级;所述确定单元402,进一步被配置成按照如下方式执行所述根据所述依赖关系信息,确定所述多个待升级组件的升级路径:根据所述依赖关系信息和所述停留版本,确定所述多个待升级组件的升级顺序。
[0084]
可选地,所述装置还被配置成:确定所述目标组件对所述所依赖组件的依赖度,其中,所述依赖度用于表征所述目标组件对所述被依赖组件集合中全部组件的依赖程度;所述确定单元402,进一步被配置成按照如下方式执行所述根据所述依赖关系信息和所述停留版本,确定所述多个待升级组件的升级顺序:根据每个组件所对应依赖度由小到大的顺序,确定所述多个待升级组件的初始升级顺序;根据所述依赖关系信息和所述停留版本调整所述初始升级顺序,将调整结果确定为所述多个待升级组件的升级顺序。
[0085]
可选地,所述装置进一步被配置成按照如下方式执行确定所述目标组件对所述所依赖组件的依赖度:根据所述目标组件所对应的各个被依赖组件的预设依赖值,确定所述目标组件的总依赖数值;根据所述总依赖数值确定所述目标组件的依赖度。
[0086]
可选地,所述依赖关系信息为树状结构;所述装置进一步被配置成按照如下方式执行确定所述目标组件对所述所依赖组件的依赖度:判断所述树状结构中的各个组件节点
之间是否均为单向依赖关系;若所述树状结构中的各个组件节点之间均为单向依赖关系,则确定所述目标组件对所述所依赖组件的依赖度。
[0087]
可选地,所述装置进一步被配置成按照如下方式执行所述确定所述被依赖组件集合中的被依赖组件在升级时的停留版本:若对于同一个升级阶段的升级,组件存在至少两个可依赖的候选停留版本,采用贪心算法,在所述至少两个候选停留版本中查找使组件升级时版本跨度最大的候选停留版本;将查找到的候选停留版本作为被依赖组件在升级时的停留版本。
[0088]
可选地,所述装置还被配置成:获取对于每个组件所对应的停留版本所设定的版本区间;所述装置进一步被配置成按照如下方式执行所述确定所述被依赖组件集合中的被依赖组件在升级时的停留版本:在所述至少两个候选停留版本中查找使组件升级时版本跨度最大的候选停留版本之前,在所述版本区间内,确定组件在升级时可依赖的候选停留版本。
[0089]
可选地,所述升级路径还包括目标版本;所述确定单元402,进一步被配置成按照如下方式执行所述根据所述依赖关系信息,确定所述多个待升级组件的升级路径:对所述多个待升级组件中的目标组件,确定所述目标组件的候选目标版本是否符合配置文件中的依赖关系信息;若所述目标组件的候选目标版本符合配置文件中的依赖关系信息,则根据所述依赖关系信息,确定所述多个待升级组件的升级路径。
[0090]
本公开的上述实施例提供的组件升级装置与本公开实施例提供的组件升级方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0091]
本公开实施方式还提供一种与前述实施方式所提供的组件升级方法对应的电子设备,以执行上述组件升级方法。本公开实施例不做限定。
[0092]
请参考图5,其示出了本公开的一些实施方式所提供的一种电子设备的示意图。如图5所示,所述电子设备50包括:处理器500,存储器501,总线502和通信接口503,所述处理器500、通信接口503和存储器501通过总线502连接;所述存储器501中存储有可在所述处理器500上运行的计算机程序,所述处理器500运行所述计算机程序时执行本公开前述任一实施方式所提供的方法。
[0093]
其中,存储器501可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口503(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
[0094]
总线502可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器501用于存储程序,所述处理器500在接收到执行指令后,执行所述程序,前述本公开实施例任一实施方式揭示的所述组件升级方法可以应用于处理器500中,或者由处理器500实现。
[0095]
处理器500可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器500中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器500可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用
集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器500读取存储器501中的信息,结合其硬件完成上述方法的步骤。
[0096]
本公开实施例提供的电子设备与本公开实施例提供的组件升级方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
[0097]
本公开实施方式还提供一种与前述实施方式所提供的组件升级方法对应的计算机可读存储介质,请参考图6,其示出的计算机可读存储介质为光盘60,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的组件升级方法。
[0098]
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存 (pram)、静态随机存取存储器 (sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器 (ram)、只读存储器 (rom)、电可擦除可编程只读存储器 (eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
[0099]
本公开的上述实施例提供的计算机可读存储介质与本公开实施例提供的组件升级方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
[0100]
需要说明的是:在上述文本中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本公开实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
[0101]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
[0102]
上面结合附图对本公开的实施例进行了描述,仅为本公开的具体实施方式,但是本公开并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限
制性的,本领域的普通技术人员在本公开的启示下,在不脱离本公开宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本公开的保护之内。

技术特征:
1.一种组件升级方法,其特征在于,所述方法包括:对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序;按照所述升级路径对所述多个待升级组件进行升级。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定所述被依赖组件集合中的被依赖组件在升级时的停留版本,其中,停留版本用于指示所述被依赖组件需要停留在指定版本,直到所述目标组件完成依赖所述指定版本的所述被依赖组件的升级;所述根据所述依赖关系信息,确定所述多个待升级组件的升级路径,包括:根据所述依赖关系信息和所述停留版本,确定所述多个待升级组件的升级顺序。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:确定所述目标组件对所述所依赖组件的依赖度,其中,所述依赖度用于表征所述目标组件对所述被依赖组件集合中全部组件的依赖程度;所述根据所述依赖关系信息和所述停留版本,确定所述多个待升级组件的升级顺序,包括:根据每个组件所对应依赖度由小到大的顺序,确定所述多个待升级组件的初始升级顺序;根据所述依赖关系信息和所述停留版本调整所述初始升级顺序,将调整结果确定为所述多个待升级组件的升级顺序。4.根据权利要求3所述的方法,其特征在于,所述确定所述目标组件对所述所依赖组件的依赖度,包括:根据所述目标组件所对应的各个被依赖组件的预设依赖值,确定所述目标组件的总依赖数值;根据所述总依赖数值确定所述目标组件的依赖度。5.根据权利要求3所述的方法,其特征在于,所述依赖关系信息为树状结构;所述确定所述目标组件对所述所依赖组件的依赖度,包括:判断所述树状结构中的各个组件节点之间是否均为单向依赖关系;若所述树状结构中的各个组件节点之间均为单向依赖关系,则确定所述目标组件对所述所依赖组件的依赖度。6.根据权利要求2所述的方法,其特征在于,所述确定所述被依赖组件集合中的被依赖组件在升级时的停留版本,包括:若对于同一个升级阶段的升级,组件存在至少两个可依赖的候选停留版本,采用贪心算法,在所述至少两个候选停留版本中查找使组件升级时版本跨度最大的候选停留版本;将查找到的候选停留版本作为被依赖组件在升级时的停留版本。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:获取对于每个组件所对应的停留版本所设定的版本区间;在所述至少两个候选停留版本中查找使组件升级时版本跨度最大的候选停留版本之
前,所述确定所述被依赖组件集合中的被依赖组件在升级时的停留版本还包括:在所述版本区间内,确定组件在升级时可依赖的候选停留版本。8.根据权利要求1所述的方法,其特征在于,所述升级路径还包括目标版本;所述根据所述依赖关系信息,确定所述多个待升级组件的升级路径,包括:对所述多个待升级组件中的目标组件,确定所述目标组件的候选目标版本是否符合配置文件中的依赖关系信息;若所述目标组件的候选目标版本符合配置文件中的依赖关系信息,则根据所述依赖关系信息,确定所述多个待升级组件的升级路径。9.一种组件升级装置,其特征在于,应用于软件,所述软件包括存在升级依赖关系的多个待升级组件,所述装置包括:获取单元,被配置成对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;确定单元,被配置成根据所述依赖关系信息,确定所述多个待升级组件的升级路径,其中,所述升级路径包括所述多个待升级组件中各个组件的升级顺序;升级单元,被配置成按照所述升级路径对所述多个待升级组件进行升级。10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-8任一项所述的方法。11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-8中任一项所述的方法。

技术总结
本公开提供一种组件升级方法、装置、电子设备和存储介质,涉及软件技术领域。该方法包括:对多个待升级组件中的目标组件,从配置文件获取所述目标组件的依赖关系信息,其中,所述依赖关系信息包含与所述目标组件存在所述升级依赖关系的被依赖组件集合,所述目标组件是所述多个待升级组件中任一;根据所述依赖关系信息,确定所述多个待升级组件的升级路径;按照所述升级路径对所述多个待升级组件进行升级。本公开根据软件中组件之间的升级依赖情况确定组件的升级路径,可以确保组件的顺利升级,有助于确保微服务的正常提供,在一定程度上避免了软件中组件升级失败的问题。上避免了软件中组件升级失败的问题。上避免了软件中组件升级失败的问题。


技术研发人员:李烁
受保护的技术使用者:新华三技术有限公司
技术研发日:2023.08.24
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐