CN111580915A - 拓扑图的绘制方法及装置、存储介质、处理器 - Google Patents

拓扑图的绘制方法及装置、存储介质、处理器 Download PDF

Info

Publication number
CN111580915A
CN111580915A CN202010394485.2A CN202010394485A CN111580915A CN 111580915 A CN111580915 A CN 111580915A CN 202010394485 A CN202010394485 A CN 202010394485A CN 111580915 A CN111580915 A CN 111580915A
Authority
CN
China
Prior art keywords
nodes
group
node
topological graph
user operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010394485.2A
Other languages
English (en)
Inventor
刘子达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hillstone Networks Co Ltd
Original Assignee
Hillstone Networks Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hillstone Networks Co Ltd filed Critical Hillstone Networks Co Ltd
Priority to CN202010394485.2A priority Critical patent/CN111580915A/zh
Publication of CN111580915A publication Critical patent/CN111580915A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种拓扑图的绘制方法及装置、存储介质、处理器。其中,该方法包括:获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线;依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。本申请解决了现阶段在使用绘图组件库Cytoscape.js和插件cytoscape.js‑expand‑collapse绘制支持组打开关闭的拓扑图时,需预加载全部数据导致损耗处理器的性能,降低拓扑图的绘图速度的技术问题。

Description

拓扑图的绘制方法及装置、存储介质、处理器
技术领域
本申请涉及计算机领域,具体而言,涉及一种拓扑图的绘制方法及装置、存储介质、处理器。
背景技术
数据可视化是利用计算机技术将复杂的数据模型以图像的形式呈现到显示器的技术,数据可视化后易于理解与研究。常见的可视化方案包括:表格、图表、拓扑图等。拓扑图是常见的对于图状复杂数据结构的呈现方式。如网络环境中设备间流量的访问关系,就是一个典型的图状结构模型。
Cytoscape.js是拓扑图绘制的JavaScript库之一,该库支持基于分组的拓扑图,即属于同一父组的节点会绘制相同颜色的背景色,特定的布局算法(如CoSE布局)可以保证同一组内的子节点尽量靠近。另外插件cytoscape.js-expand-collapse为组件Cytoscape.js提供了组的打开关闭功能。
以上描述了一种基于分组支持组打开关闭的拓扑图绘制技术,但是基于此技术的拓扑图绘制方案要求初始加载全部数据,包括父组和子组间的全部分组和所属关系,此时可以以分组的形式呈现拓扑图,可以打开分组查看子分组。而在实际使用场景中,将全部数据一次性加载到客户端呈现并不是一个合理的方案,这主要是从性能的角度考虑。当数据量达到一定规模时(500个点、500条连线以上)就会明显出现性能问题。对于后续界面操作上从不打开的组,初始时就加载其全部子组数据,显然是对性能的损耗。
针对现阶段在使用绘图组件库Cytoscape.js和插件cytoscape.js-expand-collapse绘制支持组打开关闭的拓扑图时,需预加载全部数据导致损耗处理器的性能,降低拓扑图的绘图速度的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种拓扑图的绘制方法及装置、存储介质、处理器,以至少解决现阶段在使用绘图组件库Cytoscape.js和插件cytoscape.js-expand-collapse绘制支持组打开关闭的拓扑图时,需预加载全部数据导致损耗处理器的性能,降低拓扑图的绘图速度的技术问题。
根据本申请实施例的一个方面,提供了一种拓扑图的绘制方法,包括:获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点;依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
可选地,获取与用户操作对应的数据之前,上述方法还包括:构建历史层级展开状态集合,历史层级展开状态集合用于按层记录拓扑图的各层组节点的展开情况。
可选地,获取与用户操作对应的数据,包括:依据拓扑图的各层组节点的展开情况,获取拓扑图的各层组节点的子节点以及各层组节点的子节点之间的连线。
可选地,依据拓扑图的各层组节点的展开情况,获取拓扑图的各层组节点的子节点,包括:如果用户操作为展开一个组节点的下一级子节点,获取展开的当前组节点的下一级子节点;如果用户操作为展开一个组节点的全部子节点,获取展开的当前组节点的全部子节点。
可选地,依据拓扑图的各层组节点的展开情况,获取各层组节点的子节点之间的连线,包括:如果与展开的当前组节点连接的组节点未展开,连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的未展开的组节点;如果与展开的当前组节点连接的组节点已经展开,连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的组节点的子节点。
可选地,将与用户操作对应的数据添加至拓扑图,得到新的拓扑图,包括:将各级子节点添加至拓扑图,为各级子节点设置初始坐标,并标识各级子节点的父节点为当前正在展开的节点;在拓扑图中将各级子节点的父节点与其他节点的连线替换为各级子节点与其他节点的连线。
可选地,获取与用户操作对应的数据之前,上述方法还包括:检测是否存在用户操作;在检测到用户操作的情况下,触发获取与用户操作对应的数据。
根据本申请实施例的另一方面,还提供了一种拓扑图的绘制装置,包括:第一获取模块,用于获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点;绘制模块,用于依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;第二获取模块,用于获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;添加模块,用于将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
根据本申请实施例的再一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以上的拓扑图的绘制方法。
根据本申请实施例的再一方面,还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的拓扑图的绘制方法。
在本申请实施例中,采用获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点;依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;将与用户操作对应的数据添加至拓扑图,得到新的拓扑图的方式,通过一种延迟加载拓扑图子组数据的方案,初始时仅加载拓扑图一层组的数据,只有在用户手动触发加载时,才加载拓扑图的子节点的数据,以及子节点与其他节点的关系数据,从而实现了提高了拓扑图的绘图速度,且使上述绘制拓扑图的方法可应用于大规模数据场景的技术效果,进而解决了现阶段在使用绘图组件库Cytoscape.js和插件cytoscape.js-expand-collapse绘制支持组打开关闭的拓扑图时,需预加载全部数据导致损耗处理器的性能,降低拓扑图的绘图速度技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种拓扑图的绘制方法的流程图;
图2是根据本申请实施例的一种绘制模型的示意图;
图3是根据本申请实施例的另一种拓扑图绘制方法的流程图;
图4是根据历史层级展开状态集合请求子节点之间的连线关系的流程图;
图5是根据历史层级展开状态集合中的数据确定子节点的展开状态的流程图;
图6是根据本申请实施例的一种拓扑图的绘制装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例,提供了一种拓扑图的绘制方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
叶子节点:某个组所能展开的最底层节点。
组:组是对叶子节点逻辑上的归类,叶子节点必然属于某个组,组可以包含子组和叶子节点。
节点:节点是对组和叶子节点的统称。下文在表达“组包含子组或叶子节点”时,为语句简洁,会表述为“组包含子节点”;表达“某组内子组或叶子节点与其他组或叶子节点的连线”时,会表述为“某组的子节点与其他节点的连线”。
连线:叶子节点与叶子节点间可能存在连线,如果叶子节点A属于组G1,叶子节点B属于组G2,如果叶子节点A和B之间有连线,那么组G1和G2在未展开的情况下则G1和G2间存在连线,如果组G1展开G2未展开则A和G2间存在连线。
图1是根据本申请实施例的一种拓扑图的绘制方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点。
根据本申请的一个可选的实施例,执行步骤S102时仅绘制第一层组的拓扑图,仅加载所有第一层组和组间连线关系,不包括第一层组的子节点,仅提供构建初始拓扑图所必须的点和连线数据。
步骤S104,依据第一层组节点以及第一层组节点之间的连线绘制拓扑图。
步骤S106,获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线。
根据本申请的一个可选的实施例,执行步骤S106时根据用户操作按需提取数据。用户的操作可以为单击某个组、双击某个组、或者点击组上绘制的图标、或者通过一个明确的按钮加载所有下级组、或者通过下拉框选择加载到哪层组等,包括以上所有但不限于以上的形式,只要能达到触发加载子组数据的目的,都是属于延迟加载的范畴,都属于本发明要保护的步骤。
步骤S108,将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
执行步骤S108时,将提取的数据格式化为拓扑图绘制要求的格式,删除拓扑图中上一层组间连线关系等以达到将子节点数据整合到拓扑图中并绘图的目的。
通过上述步骤,通过一种延迟加载拓扑图子组数据的方案,初始时仅加载拓扑图一层组的数据,只有在用户手动触发加载时,才加载拓扑图的子节点的数据,以及子节点与其他节点的关系数据,从而实现了提高了拓扑图的绘图速度,且使上述绘制拓扑图的方法可应用于大规模数据场景的技术效果。
根据本申请的一个可选的实施例,执行步骤S106之前,还需要构建历史层级展开状态集合,历史层级展开状态集合用于按层记录拓扑图的各层组节点的展开情况。
在依据第一层组和第一层组之间的连线绘制拓扑图的同时,还需要构建一个空的历史层级展开状态集合,该历史层级展开状态集合的作用是按层记录拓扑图中当前所有已经展开的组。
在本申请的一个可选的实施例中,步骤S106可以通过以下方法实现:依据拓扑图的各层组节点的展开情况,获取拓扑图的各层组节点的子节点以及各层组节点的子节点之间的连线。
在执行步骤S106时,响应用户操作,根据历史层级展开状态集合请求子节点的数据和子节点之间的连线关系。
在本申请的一些可选的实施例中,依据拓扑图的各层组节点的展开情况,获取拓扑图的各层组节点的子节点,包括:如果用户操作为展开一个组节点的下一级子节点,获取展开的当前组节点的下一级子节点;如果用户操作为展开一个组节点的全部子节点,获取展开的当前组节点的全部子节点。
在本申请的另一个可选的实施例中,依据拓扑图的各层组节点的展开情况,获取各层组节点的子节点之间的连线,包括:如果与展开的当前组节点连接的组节点未展开,连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的未展开的组节点;如果与展开的当前组节点连接的组节点已经展开,连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的组节点的子节点。
用户操作的目的可以为展开某个组节点的下一级子节点或展开某个组节点的所有下一层组节点等。如果用户的操作目的为展开某个组节点的下一级子节点,则一方面请求该组节点的所有直接子节点(包括子组节点和叶子节点),不包括孙子组节点(孙子组节点的数据需聚合到子组层);另一方面,根据历史展开状态加载该组节点的子节点与其他节点的连线关系。其中连线的一端是该组节点的子节点,另一端则需根据历史展开状态集合处理,如果对端未展开过,则对端应为未展开的组节点,如果对端在历史展开状态集合上记录已经展开到某层,则对端应为对应展开到某层后的子节点。
根据本申请的一个可选的实施例,步骤S108可以通过以下方法实现:将各级子节点添加至拓扑图,为各级子节点设置初始坐标,并标识各级子节点的父节点为当前正在展开的节点;在拓扑图中将各级子节点的父节点与其他节点的连线替换为各级子节点与其他节点的连线。
在本步骤中,获取的数据增量添加到拓扑图,拓扑图中当前保存的是父组节点与其他子节点的连线关系,此步骤一方面需将子节点的数据添加到拓扑图,标识其父组节点为当前正在展开的节点,并为子节点设置合理的初始坐标;另一方面需从拓扑图中删除父组节点与其他节点的连线,替换为子节点与其它节点的连线。此时子节点数据已经更新到拓扑图的数据中,此时运行布局算法,则将子节点绘制在拓扑图中。
通过上述步骤,即可实现拓扑图的子节点数据的延迟加载。
根据本申请的一个可选的实施例,执行步骤S106之前,还需要检测是否存在用户操作;在检测到用户操作的情况下,触发获取与用户操作对应的数据。
需要说明的是,对于子节点的数据加载延迟到只有明确的用户操作触发时才加载,此为延迟加载的含义。因此在获取加载的子节点数据之前,需要检测是否存在用户操作。
图2是根据本申请实施例的一种绘制模型的示意图,如图2所示,该模型包括3个模块,初始化绘图模块、数据提取模块、数据整合模块。
初始化绘图模块负责仅绘制第一层组的拓扑图,仅包括所有第一层组和组间连线关系。
数据提取模块负责根据用户操作按需提取数据。用户的操作可以为单击某个组、双击某个组、或者点击组上绘制的图标、或者通过一个明确的按钮加载所有下级组、或者通过下拉框选择加载到哪层组等,包括以上所有但不限于以上的形式,只要能达到触发加载子组数据的目的,都是属于延迟加载的范畴,都属于本发明要保护的步骤。
数据整合模块负责将数据整合到拓扑图中,包括将数据提取模块提取的数据格式化为拓扑图绘制要求的格式,删除拓扑图中上一层组间连线关系等以达到将子节点数据整合到拓扑图中并绘图的目的。
为使本发明的技术方案更加清晰,以下结合具体的实施例,对本发明进一步详细说明。先对基本的数据模型进行阐述:
叶子节点模型M1:
名称 含义
Id 叶子节点唯一标识
Name 拓扑图中呈现的节点名称
P1 节点所属一级组
P2 节点所属二级组
PN 节点所属N级组
其中节点最大层次为N层。
组节点模型M2:
名称 含义
Id 组节点唯一标识
Name 拓扑图中呈现的节点名称
Parent 节点父组Id
第一层节点的Parent为空,其余层节点的Parent为其父节点的Id。
连线模型M3:
名称 含义
Id 线的唯一标识
Source 源叶子节点
Targe 目的叶子节点
连线模型为叶子节点间关系。
图3是根据本申请实施例的另一种拓扑图绘制方法的流程图,如图3所示,该方法包括以下步骤:
步骤S302,初始化时仅获取一层组的拓扑数据。
根据本申请的一个可选的实施例,执行步骤S302时,仅需要提供一层组的点数据和线数据。
a)一层组的点数据为:模型M2中Parent为空的节点。
b)一层节点的线数据为模型M3与M1关联按照模型M1的P1字段聚合后的数据,示例如下:
[{"data":{"id":"g1"},"group":"nodes"},
{"data":{"id":"g2"},"group":"nodes"},
{"data":{"id":"g3"},"group":"nodes"},
{"data":{"source":"g1","target":"g2","id":"g1_g2"},"group":"edges"},
{"data":{"source":"g1","target":"g3","id":"g1_g3"},"group":"edges"}]
c)初始化历史展开状态集合,为一个二维数组,第一维包含N个数组,对应记录N层中每层打开的节点Id,初始化时各数组都为空:
expandedPath=[[],[],[],…,[]]。
d)初始化正在展开组的路径,为一个空数组,expandingPath=[],当用户执行展开组操作时,此数组按照从第一层开始,记录整条展开路径。如果用户的操作为展开某个组,需执行此步骤。
步骤S304,响应用户操作,根据历史层级展开状态集合请求子节点数据和连线关系。
在本步骤中,响应用户操作,根据历史层级展开状态集合请求子节点数据和连线关系,本实施例以展开某个组为例,其余场景如展开下一层组可以类似推导:
1)首先按照当前正在展开组的路径提取当前父组的所有子节点,子节点包括子组和叶子节点。
a)获取当前父组的直接子组,则从数据模型M2中提取数据,规则为Parent=当前父节点Id。
b)根据正在展开组的路径计算正在展开组的层级X=expandingPath.length。
c)获取当前父组的叶子节点,由数据模型M1关联数据模型M2,根据当前正在展开层级提取数据,如当前正在展开层级为X,则提取规则为PX=当前父组Id且P(X+1)=空。
2)其次根据当前展开路径和历史展开状态集合提取连线数据,具体方法包括图4所示的步骤:
获取展开的第X层组节点的标识gId(gId是groupId的缩写,即组节点标识)。
步骤a),模型M3关联模型M1以获得source的第X层父组标识sPX和target的第X层父组标识tPX。
判断sPX=gId或tPX=gId,如果是则执行步骤b),否则执行步骤a);
步骤b),获取模型M3中符合条件的数据,过滤模型M3,确保仅获得source或target的第X层父组标识为当前父组Id的数据。
步骤c),对步骤b)符合条件的数据关联第1、2…到第N层父节点,获得source的父组依次为sP1,sP2…sPX,获得target的父组依次为tP1,tP2…tPX,其中N为所有已经展开的组的最大层数。
步骤d),对步骤c)的结果按照历史展开状态expandedPath进行合并,对于步骤c)中的每条记录执行图5所示的步骤:
模型M3中source和target关联了N层组,遍历每条数据,依次检查source的父组Sp1,Sp2…sPN。
i.依次检查source的第N层父组sPN是否属于expandedPath[N-1],如果是,说明此组已展开到最底层,则标记此记录的source为叶子节点的Id。
ii.否则检查source的第N-1层父组sP(N-1)是否属于expandedPath[N-2],如果是,则继续检查第N层父组sPN是否为空,如果不为空则标记此记录的source为第N层父组的值,否则是空说明为叶子节点,则标记此记录的source为叶子节点的Id。
iii.否则检查source的第N-2层父组是否属于expandedPath[N-3],如果是,则继续检查第N-1层父组是否为空,如果不为空,则标记此记录的source为第N-1层父组的值,否则是空说明为叶子节点则标记此记录的source为叶子节点的Id。
iv.依次类推
v.则检查source的第1层父组sP1是否属于expandedPath[0],如果是,则继续检查第2层父组是否为空,如果不为空则标记此记录的source为第2层父组的值,否则是空说明为叶子节点则标记此记录的source为叶子节点的Id。
vi.否则说明此组未进行过展开操作,则标记此记录的source为第1层父组的值。
vii.检查target,也需执行步骤i-vi。
执行完以上步骤后,e)中结果的source和target都更新为了对应展开层次的节点。
e)对d)中source和target都相同的记录进行合并。执行完此步骤后的示例数据:
[{"data":{"id":"g211"},"group":"nodes"},
{"data":{"id":"g212"},"group":"nodes"},
{"data":{"id":"g213"},"group":"nodes"},
{"data":{"source":"g211","target":"g2","id":"g211_g2"},"group":"edges"},
{"data":{"source":"g211","target":"g31","id":"g211_g31"},"group":"edges"},
{"data":{"source":"g212","target":"g411","id":"g212_g411"},"group":"edges"}]
步骤S306,将步骤S304中获取的数据增量添加到拓扑图。
在本步骤中,将步骤S304中获取的数据增量添加到拓扑图。拓扑图中当前保存的是父组与其他子节点的连线关系
a)一方面需将子节点的数据添加到拓扑图,标识其父节点为当前正在展开的点,更新parent后的数据格式为:
[{"data":{"id":"g211",“parent”:”g21”},"group":"nodes"},
{"data":{"id":"g212",“parent”:”g21”},"group":"nodes"},
{"data":{"id":"g213",“parent”:”g21”},"group":"nodes"},
{"data":{"source":"g211","target":"g2","id":"g211_g2"},"group":"edges"},
{"data":{"source":"g211","target":"g31","id":"g211_g31"},"group":"edges"},
{"data":{"source":"g212","target":"g411","id":"g212_g411"},"group":"edges"}]
b)为子节点设置合理的初始坐标。新节点加入拓扑图后,必需重新运行布局算法,但为了整体布局的稳定性,新增加的子节点需设置坐标,以父组的中心坐标为参考点,以特定值为(一个合理的值为节点直径)半径,围绕原组的中心点形成初始圆形布局。更新位置信息后的数据示例:
[{"data":{"id":"g211",“parent”:”g21”,“position”:{x:100,y:100}},"group":"nodes"},
{"data":{"id":"g212",“parent”:”g21”,“position”:{x:200,y:100}}},"group":"nodes"},
{"data":{"id":"g213",“parent”:”g21”,“position”:{x:150,y:20}}},"group":"nodes"},
{"data":{"source":"g211","target":"g2","id":"g211_g2"},"group":"edges"},
{"data":{"source":"g211","target":"g31","id":"g211_g31"},"group":"edges"},
{"data":{"source":"g212","target":"g411","id":"g212_g411"},"group":"edges"}]
c)从拓扑图中删除父组与其他节点的连线,替换为子节点与其他节点的连线。
d)步骤c)后子节点数据已经更新到拓扑图的数据中,此时再次运行布局算法,则将子节点绘制在拓扑图中。
基于以上3个主要步骤,则完成了本实施例所述展开某组后延迟加载子组数据。
本申请实施例提供的拓扑图的绘制方法可应用于以下场景:
场景1:没必要加载全部数据的场景。以用户虚机的流量拓扑为例,通常可以按部门或按业务等先绘制高维度的部门间或业务间流量拓扑,只有需要查看细节时,才展开组,查看子组与其他组间的关系,可以连续展开,直到查看某用户的流量。这完全取决于用户的需求和为满足需求而进行的操作,因此初始不关心的数据并不需要加载到拓扑图。
场景2:全部加载数据量大,数据规模不能准确预估。对于数据规模不能准确预估的场景,盲目将所有数据加载到拓扑图中,当数据规模急剧增加时,系统不堪重荷,会产生不可估量的风险,甚至损失。此情形显然也不适合加载全部数据,而应该初始只加载一层节点间数据,以保证系统的可扩展性。
本申请实施例提供的拓扑图的绘制方法可以实现以下技术效果:
保证了拓扑图呈现的可扩展性。如果加载全部数据,则很容易受到性能瓶颈的限制,不利于大规模数据场景,不易扩展。
提高了绘图的性能,进而提高易用性。数据量少后,自然绘图速度就会变快,系统响应更敏捷,提升软件的易用性。
图6是根据本申请实施例的一种拓扑图的绘制装置的结构图,如图6所示,该装置包括:
第一获取模块60,用于获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父节点为空的节点。
绘制模块62,用于依据第一层组节点以及第一层组节点之间的连线绘制拓扑图。
第二获取模块64,用于获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线。
添加模块66,用于将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
需要说明的是,图6所示实施例的优选实施方式可以参见图1所示实施例的相关描述,此处不再赘述。
本申请实施例还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以上的拓扑图的绘制方法。
存储介质用于存储执行以下功能的程序:获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点;依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
本申请实施例还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的拓扑图的绘制方法。
处理器用于运行执行以下功能的程序:获取绘制拓扑图所需的第一层组节点以及第一层组节点之间的连线,其中,第一层组节点是父组节点为空的节点;依据第一层组节点以及第一层组节点之间的连线绘制拓扑图;获取与用户操作对应的数据,其中,用户操作为能够触发展开第一层组节点以及展开第一层组节点的各级子节点的操作,用户操作对应的数据包括第一层组节点的各级子节点以及各级子节点之间的连线;将与用户操作对应的数据添加至拓扑图,得到新的拓扑图。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,ReQK-SSWd-Only Memory)、随机存取存储器(RQK-SSWM,RQK-SSWndom QK-SSWccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种拓扑图的绘制方法,其特征在于,包括:
获取绘制拓扑图所需的第一层组节点以及所述第一层组节点之间的连线,其中,所述第一层组节点是父组节点为空的节点;
依据所述第一层组节点以及所述第一层组节点之间的连线绘制所述拓扑图;
获取与用户操作对应的数据,其中,所述用户操作为能够触发展开所述第一层组节点以及展开所述第一层组节点的各级子节点的操作,所述用户操作对应的数据包括所述第一层组节点的各级子节点以及所述各级子节点之间的连线;
将与所述用户操作对应的数据添加至所述拓扑图,得到新的拓扑图。
2.根据权利要求1所述的方法,其特征在于,获取与用户操作对应的数据之前,所述方法还包括:
构建历史层级展开状态集合,所述历史层级展开状态集合用于按层记录所述拓扑图的各层组节点的展开情况。
3.根据权利要求2所述的方法,其特征在于,获取与用户操作对应的数据,包括:
依据所述拓扑图的各层组节点的展开情况,获取所述拓扑图的各层组节点的子节点以及所述各层组节点的子节点之间的连线。
4.根据权利要求3所述的方法,其特征在于,依据所述拓扑图的各层组节点的展开情况,获取所述拓扑图的各层组节点的子节点,包括:
如果所述用户操作为展开一个组节点的下一级子节点,获取展开的当前组节点的下一级子节点;
如果所述用户操作为展开一个组节点的全部子节点,获取展开的当前组节点的全部子节点。
5.根据权利要求3所述的方法,其特征在于,依据所述拓扑图的各层组节点的展开情况,获取所述各层组节点的子节点之间的连线,包括:
如果与展开的当前组节点连接的组节点未展开,所述连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的未展开的组节点;
如果与展开的当前组节点连接的组节点已经展开,所述连线的一端为展开的当前组节点的子节点,另一端为与展开的当前组节点连接的组节点的子节点。
6.根据权利要求3所述的方法,其特征在于,将与所述用户操作对应的数据添加至所述拓扑图,得到新的拓扑图,包括:
将所述各级子节点添加至所述拓扑图,为所述各级子节点设置初始坐标,并标识所述各级子节点的父节点为当前正在展开的节点;
在所述拓扑图中将所述各级子节点的父节点与其他节点的连线替换为所述各级子节点与其他节点的连线。
7.根据权利要求1所述的方法,其特征在于,获取与用户操作对应的数据之前,所述方法还包括:
检测是否存在所述用户操作;
在检测到所述用户操作的情况下,触发获取与所述用户操作对应的数据。
8.一种拓扑图的绘制装置,其特征在于,包括:
第一获取模块,用于获取绘制拓扑图所需的第一层组节点以及所述第一层组节点之间的连线,其中,所述第一层组节点是父组节点为空的节点;
绘制模块,用于依据所述第一层组节点以及所述第一层组节点之间的连线绘制所述拓扑图;
第二获取模块,用于获取与用户操作对应的数据,其中,所述用户操作为能够触发展开所述第一层组节点以及展开所述第一层组节点的各级子节点的操作,所述用户操作对应的数据包括所述第一层组节点的各级子节点以及所述各级子节点之间的连线;
添加模块,用于将与所述用户操作对应的数据添加至所述拓扑图,得到新的拓扑图。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述的拓扑图的绘制方法。
10.一种处理器,其特征在于,所述处理器用于运行存储在存储器中的程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的拓扑图的绘制方法。
CN202010394485.2A 2020-05-11 2020-05-11 拓扑图的绘制方法及装置、存储介质、处理器 Pending CN111580915A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010394485.2A CN111580915A (zh) 2020-05-11 2020-05-11 拓扑图的绘制方法及装置、存储介质、处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010394485.2A CN111580915A (zh) 2020-05-11 2020-05-11 拓扑图的绘制方法及装置、存储介质、处理器

Publications (1)

Publication Number Publication Date
CN111580915A true CN111580915A (zh) 2020-08-25

Family

ID=72126501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010394485.2A Pending CN111580915A (zh) 2020-05-11 2020-05-11 拓扑图的绘制方法及装置、存储介质、处理器

Country Status (1)

Country Link
CN (1) CN111580915A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112272163A (zh) * 2020-09-28 2021-01-26 中孚安全技术有限公司 一种基于浏览器端对网络流量的分析呈现方法
CN112737853A (zh) * 2020-12-30 2021-04-30 北京安博通科技股份有限公司 一种网络拓扑图绘制方法、设备及存储介质
CN114039856A (zh) * 2021-09-29 2022-02-11 中孚安全技术有限公司 一种网络拓扑结构展示系统及方法
CN114090833A (zh) * 2021-10-27 2022-02-25 中盈优创资讯科技有限公司 一种拓扑跃层展示方法及装置
WO2023109349A1 (zh) * 2021-12-17 2023-06-22 北京字跳网络技术有限公司 一种组节点的导出、导入方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834735A (zh) * 2009-03-11 2010-09-15 北京启明星辰信息技术股份有限公司 一种大规模网络节点拓扑结构的显示方法和显示装置
CN102833110A (zh) * 2012-08-31 2012-12-19 烽火通信科技股份有限公司 大数据量下网管软件中拓扑数据关系的管理方法
CN103413002A (zh) * 2013-08-20 2013-11-27 山东中创软件商用中间件股份有限公司 一种拓扑图编辑后方法及拓扑图编辑器
CN107276833A (zh) * 2017-08-03 2017-10-20 郑州云海信息技术有限公司 一种节点信息管理方法及装置
US20180295029A1 (en) * 2016-01-29 2018-10-11 Hewlett Packard Enterprise Development Lp Managing groups of servers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834735A (zh) * 2009-03-11 2010-09-15 北京启明星辰信息技术股份有限公司 一种大规模网络节点拓扑结构的显示方法和显示装置
CN102833110A (zh) * 2012-08-31 2012-12-19 烽火通信科技股份有限公司 大数据量下网管软件中拓扑数据关系的管理方法
CN103413002A (zh) * 2013-08-20 2013-11-27 山东中创软件商用中间件股份有限公司 一种拓扑图编辑后方法及拓扑图编辑器
US20180295029A1 (en) * 2016-01-29 2018-10-11 Hewlett Packard Enterprise Development Lp Managing groups of servers
CN107276833A (zh) * 2017-08-03 2017-10-20 郑州云海信息技术有限公司 一种节点信息管理方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112272163A (zh) * 2020-09-28 2021-01-26 中孚安全技术有限公司 一种基于浏览器端对网络流量的分析呈现方法
CN112737853A (zh) * 2020-12-30 2021-04-30 北京安博通科技股份有限公司 一种网络拓扑图绘制方法、设备及存储介质
CN114039856A (zh) * 2021-09-29 2022-02-11 中孚安全技术有限公司 一种网络拓扑结构展示系统及方法
CN114039856B (zh) * 2021-09-29 2024-02-27 中孚安全技术有限公司 一种网络拓扑结构展示系统及方法
CN114090833A (zh) * 2021-10-27 2022-02-25 中盈优创资讯科技有限公司 一种拓扑跃层展示方法及装置
WO2023109349A1 (zh) * 2021-12-17 2023-06-22 北京字跳网络技术有限公司 一种组节点的导出、导入方法及装置

Similar Documents

Publication Publication Date Title
CN111580915A (zh) 拓扑图的绘制方法及装置、存储介质、处理器
US10761687B2 (en) User interface that facilitates node pinning for monitoring and analysis of performance in a computing environment
US9734247B2 (en) Topology service using closure tables and metagraphs
US9229982B2 (en) Processing queries using oriented query paths
CN111427847B (zh) 面向用户自定义元数据的索引与查询方法和系统
US20080263082A1 (en) Recovery segment identification in a computing infrastructure
JP2000057174A (ja) マルチメディアオブジェクトの格納及び検索のための方法とシステム
CN106970958B (zh) 一种流文件的查询与存储方法和装置
CN103890709A (zh) 基于缓存的键值数据库映射和复制
CN107506484B (zh) 运维数据关联审计方法、系统、设备及存储介质
CN108427728A (zh) 元数据的管理方法、设备及计算机可读介质
CN111708895B (zh) 一种知识图谱系统的构建方法及装置
CN109189759A (zh) Kv存储系统中的数据读取方法、数据查询方法、装置及设备
US8219528B1 (en) Method and apparatus for simultaneous comparison of multiple backup sets maintained in a computer system
CN113553458A (zh) 图数据库中的数据导出方法及装置
CN107911541A (zh) 一种基于Android系统的多摄像头切换使用方法和装置
CN112000971A (zh) 一种文件权限记录方法、系统及相关装置
CN104317675B (zh) 应用的容灾处理方法和装置
KR20210077975A (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
CN114281242B (zh) 存储器负载均衡的方法、装置和设备
US20050229113A1 (en) Highlighted objects window
CN113282678B (zh) 数据血缘关系展示方法及装置
CN111143006B (zh) 命令帮助信息的获取方法及装置
CN111984691B (zh) 一种分布式存储系统中对象元数据检索列举方法及装置
US11163642B2 (en) Methods, devices and computer readable medium for managing a redundant array of independent disks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200825

RJ01 Rejection of invention patent application after publication