基于集群的拓扑结构生成方法及其装置、电子设备与流程

文档序号:32347997发布日期:2022-11-26 11:59阅读:110来源:国知局
基于集群的拓扑结构生成方法及其装置、电子设备与流程

1.本发明涉及数据处理技术领域,具体而言,涉及一种基于集群的拓扑结构生成方法及其装置、电子设备。


背景技术:

2.pod是在kubernetes集群中运行部署应用或服务的最小单元,当前,在kubernetes项目中,pod无法进行外部访问,需要将服务service作为访问的入口。前端页面通常会为客户提供拓扑图,以点表示pod和服务,以线表示pod与服务的访问关系,通过点线结合的方式,描述整个系统的宏观结构。
3.然而,往往一个kubernetes项目中,存在大量的pod与服务,当大量的节点与连线展示在页面中时,如何使拓扑图的展示清晰、直观是一个至关重要的问题。
4.相关技术中,前端可视化框架(例如,cytoscape.js,即前端可视化图库,用于进行图形分析和可视化)为了解决这个问题提供了布局方案,比如几何布局,力导布局,层级布局等。然而,当节点与连线太多时,大量的连线穿插在拓扑图中,连线杂乱无章,一条线会穿过多个节点,甚至连线会产生重叠,导致无法正确分辨连线的端点,造成误解。以cytoscape.js提供的几何布局的grid模式(即删格布局)为例,图1是根据现有技术中的一种可选的采用grid模式进行布局的示意图,如图1所示,连线穿过多个节点,无法确定连线的起点与终点。
5.为了让拓扑图更加直观与清晰,cytoscape.js等框架主要采用了修改连线样式的方法来优化拓扑展示,但依旧存在一些问题。
6.例如,图2是根据现有技术中的一种可选的采用曲线样式进行布局的示意图,如图2所示,通过增加线条的曲率,用曲线代替直线来进行布局,展示节点之间的关系。当采用曲线样式时,在点与线较少的情况下,能够改善连线穿透节点带来的视觉误差,提升拓扑的可视性和清晰度。然而,图3是根据现有技术中的一种可选的采用曲线样式进行布局后效果展示的示意图,如图3所示,在连线比较复杂的情况下,大量曲线相互交错,视觉会比直线模式下更为混乱,依然无法清晰的分辨连线的端点,并且大量的曲线交织在拓扑图中,还会严重影响拓扑图的美观。
7.图4是根据现有技术中的一种可选的为线条的起点和终点增加样式标记的示意图,如图4所示,展示了5种样式标记,包括:circle-triangle标记、triangle-backcurve标记、tee标记、circle标记、none标记。当连线发生重叠,或穿过其它节点时,可以根据连线端点的样式,对连线的端点进行区分。然而,图5是根据现有技术中的一种可选的采用样式标记进行布局后效果展示的示意图,如图5所示,该方法仅作用于对连线的源和目的进行区分,但当多条连线重叠时,同样无法有效地区分节点间连线的关系。同时,该方法在大量连线穿插的情况下,依然无法改善拓扑图杂乱无章的问题。
8.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

9.本发明实施例提供了一种基于集群的拓扑结构生成方法及其装置、电子设备,以至少解决相关技术中无法生成能够清楚地展示集群节点间关系的拓扑结构的技术问题。
10.根据本发明实施例的一个方面,提供了一种基于集群的拓扑结构生成方法,包括:接收拓扑结构生成请求,其中,所述拓扑结构生成请求至少包括:布局需求、第一类节点与第二类节点之间的连接关系,所述第一类节点为起始节点,所述第二类节点为目的节点;基于所述布局需求,确定目标拓扑结构的行数和列数;依据第一排序策略,排列所述第一类节点,生成初始拓扑结构;依据所述第一类节点与第二类节点之间的连接关系,在所述初始拓扑结构上排列所述第二类节点,生成所述目标拓扑结构。
11.可选地,在接收拓扑结构生成请求之前,还包括:基于节点间对应关系,将所有节点划分为两类节点,其中,所述两类节点分别为:第一类节点、第二类节点;将所述第一类节点表征为所述起始节点,将所述第二类节点表征为所述目的节点;基于所述节点间对应关系,确定所述第一类节点与所述第二类节点之间的连接关系;基于展示界面的展示尺寸、所述第一类节点的节点数量以及所述第二类节点的节点数量,确定布局需求;基于所述第一类节点与所述第二类节点之间的连接关系以及所述布局需求,生成所述拓扑结构生成请求。
12.可选地,依据第一排序策略,排列所述第一类节点的步骤,包括:基于所述第一类节点与第二类节点之间的连接关系,确定与每个所述第一类节点相连的所述第二类节点的连接数量;对所述与每个所述第一类节点相连的所述第二类节点的连接数量进行排序,得到排序结果;基于所述排序结果,采用所述第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列所述第一类节点,其中,所述第一排序策略为将最大连接数量指示的所述第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据所述横向方向继续排列第一类节点,直至第一行最后一列排列完成。
13.可选地,在依据第一排序策略,排列所述第一类节点,生成初始拓扑结构之后,还包括:基于排列完成的第一类节点以及所述第一类节点与第二类节点之间的连接关系,确定每个所述第二类节点连接的列标识;将与每一列均相连的所述第二类节点归类为全连节点集合;将与每一列均不相连的所述第二类节点归类为独立节点集合;为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合,所述待处理集合用于存放有相连的列,但所述相连的列的列标识与当前列的列标识不一致的第二类节点,所述已处理集合用于存放只与当前列不相连的第二类节点。
14.可选地,在为每一列生成两个集合之后,还包括:在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点,将所述第二类节点重新归类为所述全连节点集合。
15.可选地,依据所述第一类节点与第二类节点之间的连接关系,在所述初始拓扑结构上排列所述第二类节点,生成所述目标拓扑结构的步骤,包括:在所述初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列所述第二类节点,直到最后一行最后一列排列结束,生成所述目标拓扑结构,其中,所述第二排序策略为:若当前列未存满第二类节点且所
述全连节点集合还存有未排列的第二类节点,将所述全连节点集合中的任一个第二类节点排列到当前位置;若所述全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置;若当前列的已处理集合和所述全连节点集合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置。
16.可选地,在生成所述目标拓扑结构之后,还包括:基于节点所在的行标识和列标识,确定每个所述节点的坐标属性;在展示界面上显示每个所述节点的所述坐标属性。
17.根据本发明实施例的另一方面,还提供了一种基于集群的拓扑结构生成装置,包括:接收单元,用于接收拓扑结构生成请求,其中,所述拓扑结构生成请求至少包括:布局需求、第一类节点与第二类节点之间的连接关系,所述第一类节点为起始节点,所述第二类节点为目的节点;确定单元,用于基于所述布局需求,确定目标拓扑结构的行数和列数;排列单元,用于依据第一排序策略,排列所述第一类节点,生成初始拓扑结构;生成单元,用于依据所述第一类节点与第二类节点之间的连接关系,在所述初始拓扑结构上排列所述第二类节点,生成所述目标拓扑结构。
18.可选地,所述生成装置还包括:第一划分模块,用于在接收拓扑结构生成请求之前,基于节点间对应关系,将所有节点划分为两类节点,其中,所述两类节点分别为:第一类节点、第二类节点;第一表征模块,用于将所述第一类节点表征为所述起始节点,将所述第二类节点表征为所述目的节点;第一确定模块,用于基于所述节点间对应关系,确定所述第一类节点与所述第二类节点之间的连接关系;第二确定模块,用于基于展示界面的展示尺寸、所述第一类节点的节点数量以及所述第二类节点的节点数量,确定布局需求;第一生成模块,用于基于所述第一类节点与第二类节点之间的连接关系以及所述布局需求,生成所述拓扑结构生成请求。
19.可选地,所述排列单元包括:第三确定模块,用于基于所述第一类节点与第二类节点之间的连接关系,确定与每个所述第一类节点相连的所述第二类节点的连接数量;第一排序模块,用于对所述与每个所述第一类节点相连的所述第二类节点的连接数量进行排序,得到排序结果;第一排列模块,用于基于所述排序结果,采用所述第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列所述第一类节点,其中,所述第一排序策略为将最大连接数量指示的所述第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据所述横向方向继续排列第一类节点,直至第一行最后一列排列完成。
20.可选地,所述生成装置还包括:第四确定模块,用于在依据第一排序策略,排列所述第一类节点,生成初始拓扑结构之后,基于排列完成的第一类节点以及所述第一类节点与第二类节点之间的连接关系,确定每个所述第二类节点连接的列标识;第一归类模块,用于将与每一列均相连的所述第二类节点归类为全连节点集合;第二归类模块,用于将与每一列均不相连的所述第二类节点归类为独立节点集合;第二生成模块,用于为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合,所述待处理集合用于存放有相连的列,但所述相连的列的列标识与当前列的列标识不一致的第二类节点,所述已处理集合用于存放只与当前列不相连的第二类节点。
21.可选地,所述生成装置还包括:第三归类模块,用于在为每一列生成两个集合之
后,在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点,将所述第二类节点重新归类为所述全连节点集合。
22.可选地,所述生成单元包括:第三生成模块,用于在所述初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列所述第二类节点,直到最后一行最后一列排列结束,生成所述目标拓扑结构,其中,所述第二排序策略为:若当前列未存满第二类节点且所述全连节点集合还存有未排列的第二类节点,将所述全连节点集合中的任一个第二类节点排列到当前位置;若所述全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置;若当前列的已处理集合和所述全连节点集合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置。
23.可选地,所述生成装置还包括:第五确定模块,用于在生成所述目标拓扑结构之后,基于节点所在的行标识和列标识,确定每个所述节点的坐标属性;第一显示模块,用于在展示界面上显示每个所述节点的所述坐标属性。
24.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述所述的基于集群的拓扑结构生成方法。
25.根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述所述的基于集群的拓扑结构生成方法。
26.在本公开中,接收拓扑结构生成请求,基于布局需求,确定目标拓扑结构的行数和列数,依据第一排序策略,排列第一类节点,生成初始拓扑结构,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。在本公开中,可以根据布局需求确定行数与列数,然后按照排序策略,排列第一类节点和第二类节点,生成目标拓扑结构,能够使得相连的节点错位排列,有效减少了拓扑结构中连线重叠问题,能够更清晰、直观地展示节点间关系,进而解决了相关技术中无法生成能够清楚地展示集群节点间关系的拓扑结构的技术问题。
附图说明
27.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
28.图1是根据现有技术中的一种可选的采用grid模式进行布局的示意图;
29.图2是根据现有技术中的一种可选的采用曲线样式进行布局的示意图;
30.图3是根据现有技术中的一种可选的采用曲线样式进行布局后效果展示的示意图;
31.图4是根据现有技术中的一种可选的为线条的起点和终点增加样式标记的示意图;
32.图5是根据现有技术中的一种可选的采用样式标记进行布局后效果展示的示意
图;
33.图6是根据本发明实施例的一种可选的基于集群的拓扑结构生成方法的流程图;
34.图7是根据本发明实施例的一种可选的排列方式的示意图;
35.图8是根据本发明实施例的一种可选的布局流程的示意图;
36.图9是根据本发明实施例的一种可选的未使用本实施例提出的布局方式生成的拓扑结构的示意图;
37.图10是根据本发明实施例的一种可选的使用本实施例提出的布局方式生成的拓扑结构的示意图;
38.图11是根据本发明实施例的一种可选的基于集群的拓扑结构生成装置的示意图;
39.图12是根据本发明实施例的一种用于基于集群的拓扑结构生成方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
40.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
41.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
42.需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
43.本发明适用于kubernetes中服务与pod间访问关系相同情况的拓扑结构,即存在两种不同类型的节点,同一种节点之间没有关联,不同的节点之间存在多对多关系。
44.本发明在上述拓扑结构下,可以根据节点间的连线关系,实现一种将有连线与没有连线的节点区分开,并使连线尽量不重叠的布局方式。这种优化后的布局方式,能够使得连线最大程度不重叠,根据布局需求确定行数与列数,按照没有连线的节点显示在最上行或最下行,与每一列均有节点相连的节点显示在中间行,其余节点按照相连节点交错,不放置于同一列的方式排列,能够尽量使拓扑图连线居中,能够直观地区分没有任何连线关系地节点,同时,尽量使连线不发生重叠,从而便于区分连线的起始节点和目的节点,能够有效保证了拓扑图的美观与清晰。
45.下面结合各个实施例来详细说明本发明。
46.实施例一
47.根据本发明实施例,提供了一种基于集群的拓扑结构生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
48.图6是根据本发明实施例的一种可选的基于集群的拓扑结构生成方法的流程图,如图6所示,该方法包括如下步骤:
49.步骤s601,接收拓扑结构生成请求,其中,拓扑结构生成请求至少包括:布局需求、第一类节点与第二类节点之间的连接关系,第一类节点为起始节点,第二类节点为目的节点。
50.步骤s602,基于布局需求,确定目标拓扑结构的行数和列数。
51.步骤s603,依据第一排序策略,排列第一类节点,生成初始拓扑结构。
52.步骤s604,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。
53.通过上述步骤,可以接收拓扑结构生成请求,基于布局需求,确定目标拓扑结构的行数和列数,依据第一排序策略,排列第一类节点,生成初始拓扑结构,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。在本发明实施例中,可以根据布局需求确定行数与列数,然后按照排序策略,排列第一类节点和第二类节点,生成目标拓扑结构,能够使得相连的节点错位排列,有效减少了拓扑结构中连线重叠问题,能够更清晰、直观地展示节点间关系,进而解决了相关技术中无法生成能够清楚地展示集群节点间关系的拓扑结构的技术问题。
54.下面结合上述各步骤对本发明实施例进行详细说明。
55.在本发明实施例中,在kubernetes集群中,无法对pod直接进行外部访问,需要将服务service作为访问pod的入口。service用于定义pod的逻辑分组和一种可以访问它们的策略。基于kubernetes,可以建立并维护一种用于展示pod与服务之间关系的拓扑结构,以点表示pod和服务,以线表示pod与服务间的访问关系,通过点线结合方式,描述kubernetes结构。
56.在本发明实施例中,一种可选地,在接收拓扑结构生成请求之前,还包括:基于节点间对应关系,将所有节点划分为两类节点,其中,两类节点分别为:第一类节点、第二类节点;将第一类节点表征为起始节点,将第二类节点表征为目的节点;基于节点间对应关系,确定第一类节点与第二类节点之间的连接关系;基于展示界面的展示尺寸、第一类节点的节点数量以及第二类节点的节点数量,确定布局需求;基于第一类节点与第二类节点之间的连接关系以及布局需求,生成拓扑结构生成请求。
57.在本发明实施例中,可以通过节点间对应关系(即节点间访问关系),将节点分为两类,两类节点分别为:第一类节点(即服务节点)、第二类节点(即pod节点),将第一类节点表征为起始节点,放置在拓扑结构的上方,将第二类节点表征为目的节点,放置在拓扑结构的下方。然后,可以根据节点间对应关系,确定第一类节点与第二类节点之间的连接关系(即服务节点与pod节点具有连线的关系)。同时,可以根据展示界面的展示尺寸、第一类节
点的节点数量以及第二类节点的节点数量,确定布局需求,如此,按照该布局需求生成的拓扑结构可以进行更加整齐、美观的展示。再根据连接关系以及布局需求,生成拓扑结构生成请求。
58.步骤s601,接收拓扑结构生成请求,其中,拓扑结构生成请求至少包括:布局需求、第一类节点与第二类节点之间的连接关系,第一类节点为起始节点,第二类节点为目的节点。
59.在本发明实施例中,可以接收拓扑结构生成请求,以通过拓扑结构生成请求中携带的布局需求以及第一类节点与第二类节点之间的连接关系构建用于展示服务节点与pod节点之间的访问关系的拓扑结构。
60.步骤s602,基于布局需求,确定目标拓扑结构的行数和列数。
61.在本发明实施例中,可以根据布局需求(即根据展示界面的展示尺寸以及节点的节点数量),确定每行显示节点的个数(即列数)以及每列显示节点的个数(即行数),如此,根据布局需求重新布局的拓扑结构能够更加整齐、美观。
62.步骤s603,依据第一排序策略,排列第一类节点,生成初始拓扑结构。
63.可选地,依据第一排序策略,排列第一类节点的步骤,包括:基于第一类节点与第二类节点之间的连接关系,确定与每个第一类节点相连的第二类节点的连接数量;对与每个第一类节点相连的第二类节点的连接数量进行排序,得到排序结果;基于排序结果,采用第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列第一类节点,其中,第一排序策略为将最大连接数量指示的第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据横向方向继续排列第一类节点,直至第一行最后一列排列完成。
64.在本发明实施例中,可以根据连接关系,确定与每个第一类节点相连的第二类节点的连接数量,对连接数量进行排序,得到排序结果(即可以将第一类节点根据相连的第二类节点数降序排序),然后根据排序结果,采用第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列第一类节点(即将第一类节点从最后一行第一个开始排列,当最后一行放满后,从上一行第一列开始排列,以此类推,直至排列至第一行最后一列)。
65.本实施例中,第一排序策略为将最大连接数量指示的第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据横向方向继续排列第一类节点,以此类推,直至第一行最后一列排列完成。如此,可以使得没有连线的第一类节点显示在最上行,连线多的第一类节点显示在中间行,能够更加清楚地展示服务节点与pod节点之间的访问关系,有助于用户重点查看有连线关系的节点。
66.例如,假设每行显示4个,a0-a9为第一类节点,并且相连的第二类节点数递减,图7是根据本发明实施例的一种可选的排列方式的示意图,如图7所示,排列方式为:将连线最多的a0放置在最后一行第一列,然后将a1放置在最后一行第二列,在最后一行放满后,从上一行第一列(即第二行第一列)开始,依次放置a2、a3、a4、a5,在第二行放满后,再从上一行第一列(即第一行第一列)开始,依次放置a6、a7、a8、a9。
67.可选地,在依据第一排序策略,排列第一类节点,生成初始拓扑结构之后,还包括:基于排列完成的第一类节点以及第一类节点与第二类节点之间的连接关系,确定每个第二
类节点连接的列标识;将与每一列均相连的第二类节点归类为全连节点集合;将与每一列均不相连的第二类节点归类为独立节点集合;为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合,待处理集合用于存放有相连的列,但相连的列的列标识与当前列的列标识不一致的第二类节点,已处理集合用于存放只与当前列不相连的第二类节点。
68.在本发明实施例中,可以根据排列好的第一类节点,确定每个第二类节点与哪几列相连(即基于排列完成的第一类节点以及连接关系,确定每个第二类节点连接的列标识),将与每一列均相连的第二类节点单独记录为connectall(即将与每一列均相连的第二类节点归类为全连节点集合),将与每一列均不相连的第二类节点单独记录为connectnone(即将与每一列均不相连的第二类节点归类为独立节点集合)。并且,可以为每列生成两个列对象,一个待处理列和一个已处理列(即为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合),待处理列中存入该列可以存放的第二类节点(即有连线,但不与该列任何一个第一类节点相连的第二类节点)(即待处理集合用于存放有相连的列,但相连的列的列标识与当前列的列标识不一致的第二类节点),已处理列中存放确认放入该列的第二类节点(即已处理集合用于存放只与当前列不相连的第二类节点)。
69.可选地,在为每一列生成两个集合之后,还包括:在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点,将第二类节点重新归类为全连节点集合。
70.在本发明实施例中,若每列处理完后,还存在有连线,且并未与每一列均相连的第二类节点(即在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点),则可以将这些第二类节点记录为connectall(即将第二类节点重新归类为全连节点集合)。
71.步骤s604,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。
72.可选地,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构的步骤,包括:在初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列第二类节点,直到最后一行最后一列排列结束,生成目标拓扑结构,其中,第二排序策略为:若当前列未存满第二类节点且全连节点集合还存有未排列的第二类节点,将全连节点集合中的任一个第二类节点排列到当前位置;若全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置;若当前列的已处理集合和全连节点集合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置。
73.在本发明实施例中,可以依据连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构,具体为:可以在初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列第二类节点,直到最后一行最后一列排列结束(即可以按照第一行第一列,第一行第二列,第一行第三列,......,最后一行最后一列,依次排列第二类节点),生成目标拓扑结构。
74.本实施例中,第二排序策略为:若当前列未存满第二类节点且全连节点集合还存
有未排列的第二类节点,将全连节点集合中的任一个第二类节点排列到当前位置(即若该列未存满第二类节点,且connectall还存有未排列的第二类节点,则将connectall的一个第二类节点排列到该位置);若全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置(即若该列已处理列已存满第二类节点或该列已处理列未存满第二类节点,但connectall中没有未排列的第二类节点,且该列已处理列中还存有未排列的第二类节点,则从该列的已处理列中放一个第二类节点到该位置);若当前列的已处理集合和全连节点集合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置(即若该列已处理列和connectall均不存在未排列的第二类节点,则将connectnone的第二类节点放入该位置)。
75.如此,可以使得没有连线的第二类节点显示在最下行,连线多的第二类节点显示在中间行,其余第二类节点按照相连节点交错,不放置于同一列的方式排列,能够使拓扑图连线居中,能够直观地区分没有任何连线关系地节点,同时,也可以尽量避免连线发生重叠,从而便于区分连线的起始节点和目的节点,有效保证了拓扑图的美观与清晰。
76.可选地,在生成目标拓扑结构之后,还包括:基于节点所在的行标识和列标识,确定每个节点的坐标属性;在展示界面上显示每个节点的坐标属性。
77.在本发明实施例中,在将第一类节点与第二类节点布局排列后,可以根据节点所在的行数和列数,为每个节点添加坐标属性(即基于节点所在的行标识和列标识,确定每个节点的坐标属性),之后在展示界面上显示每个节点的坐标属性,以便于更直观地展示。
78.下面结合另一种可选的具体实施方式进行详细说明。
79.本实施例可以采用cytoscape.js等可视化框架的插件的自定义布局,为节点添加坐标属性,自定义节点坐标,以此控制拓扑图的布局。
80.图8是根据本发明实施例的一种可选的布局流程的示意图,如图8所示,具有如下流程:
81.(1)通过节点间关系将节点分类,确认a类节点(即第一类节点)在上,b类节点(即第二类节点)在下。
82.(2)根据布局需求,确定节点的行列数。
83.(3)排列a类节点,将a类节点根据相连的b类节点数降序排序,并将a类节点从最后一行第一个开始排列,当最后一行放满后,从上一行第一个开始排列,以此类推。
84.(4)将b类节点根据与每一列均相连、与每一列均不相连、其它,分为三类。
85.(5)根据b类节点与相连的a类节点不在相同列的策略,为每列存入属于其它的b类节点。
86.(6)剩余不符合以上策略的b类节点归类为与每一列均相连的b类节点。
87.(7)按列排列b类节点。
88.(8)判断该列是否未存满b类节点,还存在与每列均相连且未排列的b类节点,如果是,则该位置存入一个与每列均相连的b类节点;如果否,则判断该列是否还存有未排列的属于其它类的b类节点,如果是,则将属于其它类的b类节点排入该位置;如果否,则将与每一列均不相连的b类节点放入该位置。
89.(9)最后,为排列后的节点添加坐标属性。
90.例如,有如下应用场景:创建kubernetes中service与pod的拓扑图,可以先将拓扑图的节点分为两类,以a类代指service,b类代指pod,通过连线,使service与pod对应。
91.图9是根据本发明实施例的一种可选的未使用本实施例提出的布局方式生成的拓扑结构的示意图,如图9所示,是按默认顺序排列的拓扑结构,a1到a16以及b17到b38的排列顺序没有改变,a1到a16从上部分的第一行第一列开始排列,直到最后一行最后一列排列结束,b17到b38从下部分的第一行第一列开始排列,直到最后一行最后一列排列结束,展示出来的连线杂乱无章,不能清楚地展示service与pod之间的访问关系。
92.图10是根据本发明实施例的一种可选的使用本实施例提出的布局方式生成的拓扑结构的示意图,如图10所示,是根据节点间的连接关系,按照优化后的布局方式排列后的拓扑结构。依据优化后的布局方式,将a1放置在上部分的最后一行第一列,将a13放置在上部分的最后一行第二列,将a4放置在上部分的最后一行第三列,将a11放置在上部分的最后一行最后一列,然后,将a8、a3、a5、a6、a12、a2依次放置在上部分的第二行第一列、上部分的第二行第二列、上部分的第二行第三列、上部分的第二行第四列、上部分的第二行第五列、上部分的第二行第六列,将a15、a16、a14、a7、a9、a10依次放置在上部分的第一行第一列、上部分的第一行第二列、上部分的第一行第三列、上部分的第一行第四列、上部分的第一行第五列、上部分的第一行第六列;将b18、b17、b20、b29、b38、b27依次放置在下部分的第一行第一列、下部分的第一行第二列、下部分的第一行第三列、下部分的第一行第四列、下部分的第一行第五列、下部分的第一行第六列,将b33、b21、b32、b24、b36、b22依次放置在下部分的第二行第一列、下部分的第二行第二列、下部分的第二行第三列、下部分的第二行第四列、下部分的第二行第五列、下部分的第二行第六列,将b23、b25、b26、b28、b19、b30依次放置在下部分的第三行第一列、下部分的第三行第二列、下部分的第三行第三列、下部分的第三行第四列、下部分的第三行第五列、下部分的第三行第六列,将b31、b34、b35、b37依次放置在下部分的最后一行第一列、下部分的最后一行第二列、下部分的最后一行第三列、下部分的最后一行最后一列。重排后的拓扑结构相较于默认顺序的布局,更加整齐、美观,能够更清晰、直观地展示service与pod之间的访问关系。
93.本发明实施例中,基于节点连线的数量,对节点进行对称的布局,能够保障连线穿越更少的节点。并且,对于有关联的节点,错列排放,能够保证连线在穿越节点的时候不与节点本身的连线重合,减少了拓扑结构中连线重叠的问题,更清晰、直观地展示节点间的关系。
94.下面结合另一实施例进行详细说明。
95.实施例二
96.本实施例中提供的一种基于集群的拓扑结构生成装置包含了多个实施单元,每个实施单元对应于上述实施例一中的各个实施步骤。
97.图11是根据本发明实施例的一种可选的基于集群的拓扑结构生成装置的示意图,如图11所示,该生成装置可以包括:接收单元110,确定单元111,排列单元112,生成单元113,其中,
98.接收单元110,用于接收拓扑结构生成请求,其中,拓扑结构生成请求至少包括:布局需求、第一类节点与第二类节点之间的连接关系,第一类节点为起始节点,第二类节点为目的节点;
99.确定单元111,用于基于布局需求,确定目标拓扑结构的行数和列数;
100.排列单元112,用于依据第一排序策略,排列第一类节点,生成初始拓扑结构;
101.生成单元113,用于依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。
102.上述生成装置,可以通过接收单元110接收拓扑结构生成请求,通过确定单元111基于布局需求,确定目标拓扑结构的行数和列数,通过排列单元112依据第一排序策略,排列第一类节点,生成初始拓扑结构,通过生成单元113依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。在本发明实施例中,可以根据布局需求确定行数与列数,然后按照排序策略,排列第一类节点和第二类节点,生成目标拓扑结构,能够使得相连的节点错位排列,有效减少了拓扑结构中连线重叠问题,能够更清晰、直观地展示节点间关系,进而解决了相关技术中无法生成能够清楚地展示集群节点间关系的拓扑结构的技术问题。
103.可选地,生成装置还包括:第一划分模块,用于在接收拓扑结构生成请求之前,基于节点间对应关系,将所有节点划分为两类节点,其中,两类节点分别为:第一类节点、第二类节点;第一表征模块,用于将第一类节点表征为起始节点,将第二类节点表征为目的节点;第一确定模块,用于基于节点间对应关系,确定第一类节点与第二类节点之间的连接关系;第二确定模块,用于基于展示界面的展示尺寸、第一类节点的节点数量以及第二类节点的节点数量,确定布局需求;第一生成模块,用于基于第一类节点与第二类节点之间的连接关系以及布局需求,生成拓扑结构生成请求。
104.在本发明实施例中,可以通过节点间对应关系(即节点间访问关系),将节点分为两类,两类节点分别为:第一类节点(即服务节点)、第二类节点(即pod节点),将第一类节点表征为起始节点,放置在拓扑结构的上方,将第二类节点表征为目的节点,放置在拓扑结构的下方。然后,可以根据节点间对应关系,确定第一类节点与第二类节点之间的连接关系(即服务节点与pod节点具有连线的关系)。同时,可以根据展示界面的展示尺寸、第一类节点的节点数量以及第二类节点的节点数量,确定布局需求,如此,按照该布局需求生成的拓扑结构可以进行更加整齐、美观的展示。再根据连接关系以及布局需求,生成拓扑结构生成请求。
105.可选地,排列单元包括:第三确定模块,用于基于第一类节点与第二类节点之间的连接关系,确定与每个第一类节点相连的第二类节点的连接数量;第一排序模块,用于对与每个第一类节点相连的第二类节点的连接数量进行排序,得到排序结果;第一排列模块,用于基于排序结果,采用第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列第一类节点,其中,第一排序策略为将最大连接数量指示的第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据横向方向继续排列第一类节点,直至第一行最后一列排列完成。
106.在本发明实施例中,可以根据连接关系,确定与每个第一类节点相连的第二类节点的连接数量,对连接数量进行排序,得到排序结果(即可以将第一类节点根据相连的第二类节点数降序排序),然后根据排序结果,采用第一排序策略,从最后一行第一列开始至第一行最后一列结束依次排列第一类节点(即将第一类节点从最后一行第一个开始排列,当
最后一行放满后,从上一行第一列开始排列,以此类推,直至排列至第一行最后一列)。
107.本实施例中,第一排序策略为将最大连接数量指示的第一类节点排列在最后一行第一列,依据从左到右的横向方向依次排列第一类节点,并在最后一行放满后,依据从下到上的纵向方向,从上一行第一列开始,依据横向方向继续排列第一类节点,以此类推,直至第一行最后一列排列完成。如此,可以使得没有连线的第一类节点显示在最上行,连线多的第一类节点显示在中间行,能够更加清楚地展示服务节点与pod节点之间的访问关系,有助于用户重点查看有连线关系的节点。
108.可选地,生成装置还包括:第四确定模块,用于在依据第一排序策略,排列第一类节点,生成初始拓扑结构之后,基于排列完成的第一类节点以及第一类节点与第二类节点之间的连接关系,确定每个第二类节点连接的列标识;第一归类模块,用于将与每一列均相连的第二类节点归类为全连节点集合;第二归类模块,用于将与每一列均不相连的第二类节点归类为独立节点集合;第二生成模块,用于为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合,待处理集合用于存放有相连的列,但相连的列的列标识与当前列的列标识不一致的第二类节点,已处理集合用于存放只与当前列不相连的第二类节点。
109.在本发明实施例中,可以根据排列好的第一类节点,确定每个第二类节点与哪几列相连(即基于排列完成的第一类节点以及连接关系,确定每个第二类节点连接的列标识),将与每一列均相连的第二类节点单独记录为connectall(即将与每一列均相连的第二类节点归类为全连节点集合),将与每一列均不相连的第二类节点单独记录为connectnone(即将与每一列均不相连的第二类节点归类为独立节点集合)。并且,可以为每列生成两个列对象,一个待处理列和一个已处理列(即为每一列生成两个集合,其中,一个集合为待处理集合,另一个集合为已处理集合),待处理列中存入该列可以存放的第二类节点(即有连线,但不与该列任何一个第一类节点相连的第二类节点)(即待处理集合用于存放有相连的列,但相连的列的列标识与当前列的列标识不一致的第二类节点),已处理列中存放确认放入该列的第二类节点(即已处理集合用于存放只与当前列不相连的第二类节点)。
110.可选地,生成装置还包括:第三归类模块,用于在为每一列生成两个集合之后,在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点,将第二类节点重新归类为全连节点集合。
111.在本发明实施例中,若每列处理完后,还存在有连线,且并未与每一列均相连的第二类节点(即在对每一列处理完成的情况下,若存在有相连的列且并未与每一列均相连的第二类节点),则可以将这些第二类节点记录为connectall(即将第二类节点重新归类为全连节点集合)。
112.可选地,生成单元包括:第三生成模块,用于在初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列第二类节点,直到最后一行最后一列排列结束,生成目标拓扑结构,其中,第二排序策略为:若当前列未存满第二类节点且全连节点集合还存有未排列的第二类节点,将全连节点集合中的任一个第二类节点排列到当前位置;若全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置;若当前列的已处理集合和全连节点集
合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置。
113.在本发明实施例中,可以依据连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构,具体为:可以在初始拓扑结构上,采用第二排序策略,从排列完成的第一类节点下的第一行第一列开始,依据从左到右的横向方向以及从下到上的纵向方向依次排列第二类节点,直到最后一行最后一列排列结束(即可以按照第一行第一列,第一行第二列,第一行第三列,......,最后一行最后一列,依次排列第二类节点),生成目标拓扑结构。
114.本实施例中,第二排序策略为:若当前列未存满第二类节点且全连节点集合还存有未排列的第二类节点,将全连节点集合中的任一个第二类节点排列到当前位置(即若该列未存满第二类节点,且connectall还存有未排列的第二类节点,则将connectall的一个第二类节点排列到该位置);若全连节点集合没有未排列的第二类节点,但当前列的已处理集合中还存有未排列的第二类节点,从当前列的已处理集合中任选一个第二类节点排列到当前位置(即若该列已处理列已存满第二类节点或该列已处理列未存满第二类节点,但connectall中没有未排列的第二类节点,且该列已处理列中还存有未排列的第二类节点,则从该列的已处理列中放一个第二类节点到该位置);若当前列的已处理集合和全连节点集合均不存在未排列的第二类节点,将独立节点集合中的任一个第二类节点排列到当前位置(即若该列已处理列和connectall均不存在未排列的第二类节点,则将connectnone的第二类节点放入该位置)。如此,可以使得没有连线的第二类节点显示在最下行,连线多的第二类节点显示在中间行,其余第二类节点按照相连节点交错,不放置于同一列的方式排列,能够使拓扑图连线居中,能够直观地区分没有任何连线关系地节点,同时,也可以尽量避免连线发生重叠,从而便于区分连线的起始节点和目的节点,有效保证了拓扑图的美观与清晰。
115.可选地,生成装置还包括:第五确定模块,用于在生成目标拓扑结构之后,基于节点所在的行标识和列标识,确定每个节点的坐标属性;第一显示模块,用于在展示界面上显示每个节点的坐标属性。
116.在本发明实施例中,在将第一类节点与第二类节点布局排列后,可以根据节点所在的行数和列数,为每个节点添加坐标属性(即基于节点所在的行标识和列标识,确定每个节点的坐标属性),之后在展示界面上显示每个节点的坐标属性,以便于更直观地展示。
117.上述的生成装置还可以包括处理器和存储器,上述接收单元110,确定单元111,排列单元112,生成单元113等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
118.上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。
119.上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
120.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收拓扑结构生成请求,基于布局需求,确定目标拓扑结构的
行数和列数,依据第一排序策略,排列第一类节点,生成初始拓扑结构,依据第一类节点与第二类节点之间的连接关系,在初始拓扑结构上排列第二类节点,生成目标拓扑结构。
121.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述的基于集群的拓扑结构生成方法。
122.根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的基于集群的拓扑结构生成方法。
123.图12是根据本发明实施例的一种用于基于集群的拓扑结构生成方法的电子设备(或移动设备)的硬件结构框图。如图12所示,电子设备可以包括一个或多个(图中采用1202a、1202b,
……
,1202n来示出)处理器1202(处理器1202可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1204。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
124.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
125.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
126.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
127.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
128.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
129.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
130.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1