一种基于知识图谱的云计算管理方法及***
技术领域
本发明涉及云计算技术领域,特别是涉及一种基于知识图谱的云计算管理方法及***。
背景技术
云计算(cloud computing)定义为分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的***进行处理和分析这些小程序得到结果并返回给用户。而现在云计算已经发展为一种商业计算模型,它借助将多个成本相对较低的计算机实体构建成集群网络,按需为终端用户提供可动态伸缩的廉价计算服务。
在实际生产使用中,云服务提供商将大量的服务器设备通过软件技术虚拟化成庞大的VM虚拟机集群,终端用户付费购买一台或多台VM虚拟机,而这多台VM虚拟机可能和其他多个用户共用一台服务器设备。但从用户的体验上来说,像是自己独立拥有。例如一台物理服务器,可能有576GB内存/2个物理 CPU,每个物理CPU有6核,而每个核可以被逻辑出24个逻辑CPU,那么总逻辑CPU数是2*6*24=288个CPU。而此设备可能被虚拟化出72个4GB/4CPU的 VM。而每个VM是独享自己的内存和CPU,也就是可以同时有72个人使用同一台服务器设备,而从用户体验上是自己独立享有设备的。
随着服务集群的不断扩大,与计算中所需要管理的服务节点数越来越多,例如谷歌有几百万台服务器设备,如果虚拟化成vm的话,可能庞大到亿级的 vm节点。管理如此庞大的vm节点以及vm节点之间的网络关系(比如网络连接、通信管理)将变得非常困难。如果采用传统的关系型数据库管理节点之间的关系,效率比较低且复杂度高,并且不能有效的追踪节点之间的关系。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
因此,本发明要解决的技术问题在于克服现有技术中的服务节点数量增多是管理复杂的缺陷,从而提供一种基于知识图谱的云计算管理方法和***。
为解决上述技术问题,本发明提供如下技术方案:一种基于知识图谱的云计算管理方法,包括,
利用信息收集模块收集服务器集群中各个服务器的基本信息,并将基本信息储存在数据存储模块中;
利用关系建立模块建立基本信息之间的关系数据,并将所述关系数据存储在所述数据储存模块中;
利用数据展示模块接收并展示所述服务器基本信息以及所述关系数据。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述基本信息包括设备信息、虚拟节点信息、用户信息以及用户与虚拟节点的租用关系信息。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中:所述信息收集模块收集所述设备信息和所述虚拟节点信息时,采集设备的硬件信息;采集虚拟节点的虚拟ip地址、虚拟节点名称、虚拟节点内存、分配磁盘空间大小信息。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述信息收集模块收集所述用户信息中的用户id、用户姓名、用户联系方式的信息。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述信息收集模块收集用户与虚拟节点的租用关系信息中的虚拟机的实例id和虚拟机租用到期时间的信息。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述关系建立模块利用图数据库建立所述基本信息之间的知识图谱关系数据。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述关系建立模块建立知识图谱关系数据包括
创建实体节点,利用收集到的用户信息、设备的硬件信息、虚拟机信息以及各个信息之间的关系作为节点属性创造实体节点;
创建节点之间的关系,利用各个实体节点之间的关系建立关系连接,形成关系连接作为知识图谱的关系数据。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述数据展示模块提供第一接口和第二接口分别用于单节点查询和节点关系查询。
作为本发明所述的基于知识图谱的云计算管理方法的一种优选方案,其中所述信息收集模块与各个所述服务器之间利用http协议或二进制协议传输所述基本信息。
本发明还提供一种基于知识图谱的云计算管理***,其包括
信息收集模块,用于收集收集服务器集群中各个服务器的基本信息,并将基本信息储存在数据存储模块中;
关系建立模块,建立基本信息之间的关系数据,并将所述关系数据存储在所述数据储存模块中;
数据存储模块,与所述信息收集模块和所述关系建立模块连接,用于存储所述基本信息和所述关系数据;
数据展示模块,用于接收并展示所述服务器基本信息以及所述关系数据,并提供查询数据的第一接口和第二接口。
本发明的有益效果:本发明提供的基于知识图谱技术来管理服务节点的方法和***,能够降低节点的管理复杂度提高运维效率,能有效的追踪服务节点之间的关系,直观的展示服务节点之间的网络关联。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为基于知识图谱的云计算管理方法的流程示意图;
图2为知识图谱中节点关系示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
实施例1
本实施例提供了一种基于知识图谱的云计算管理方法,包括以下步骤:
步骤一:利用信息收集模块100收集服务器集群中各个服务器的基本信息,并将基本信息储存在数据存储模块200中;
步骤二:利用关系建立模块300建立基本信息之间的关系数据,并将所述关系数据存储在所述数据储存模块中;
步骤三:利用数据展示模块400接收并展示所述服务器基本信息以及所述关系数据。
本实施例中建立知识图谱的关系数据所需要的基本信息包括设备信息、虚拟节点信息、用户信息以及用户与虚拟节点的租用关系信息。
其中设备信息包括服务器ip地址、mac地址、设备名称、设备型号等;虚拟节点信息包括虚拟ip地址、虚拟节点名称、虚拟节点内存、分配磁盘空间大小等。用户信息可包括用户id、用户姓名、用户联系方式等;用户与虚拟节点的租用关系信息包括虚拟机的实体id和虚拟机租用到期时间的信息等。
具体的,信息收集模块100收集信息时的方法如下:脚本引用paramiko工具包,此工具包提供了ssh登录linux服务器的功能,登录到虚拟机后,执行命令uname-a采集内核/操作***/CPU信息,cat/proc/cpuinfo查看CPU信息,使用此脚本,可实现自动化的数据信息采集。用户信息是用户注册时候的注册信息,硬件设备虚拟化的服务信息、用户购买的虚拟服务器(VM)相关数据,云服务提供商均有记录,可直接获得。收集用户信息:用户在购买虚拟机之前,需要先在虚拟机提供商的***上进行用户注册,注册包含基本的用户id、用户名称、联系方式等信息。收集用户与虚拟机关系:用户在购买虚拟机时候,虚拟机提供商会记录用户id与虚拟机的关联,关联信息包括虚拟机的实例id、虚拟机租用到期时间。
在收集到以上信息后,关系建立模块300利用图数据库建立所述基本信息之间的知识图谱关系数据。具体的,建立知识图谱的关系数据包括创建实体点,利用收集到的用户信息、设备的硬件信息、虚拟机信息以及各个信息之间的关系作为节点属性创造实体节点。以及创建节点之间的关系,利用各个实体节点之间的关系建立关系连接,形成关系连接作为知识图谱的关系数据。
在创建知识图谱之前,需要先构建图数据库,本实施例采用neo4j图数据库为例,构建知识图谱。搭建neo4j环境的步骤如下,
1)首先,将存储库密钥添加到钥匙串
2)将存储库添加到apt源列表中
3)最后更新存储库信息并安装Neo4j
sudo apt update
sudo apt install neo4j
4)启动命令
sudo service neo4j start。
在搭建完neo4j的环境后,将信息采集模块收集到的各种基本信息创建实体节点,具体步骤如下,
创建实体节点,构建如下命令,
CREATE(<nodelnstance>:VM{instanceName:<nstanceName>,createTime:<createTime>,memory:<memory>,cpu
其中<nodeInstance>为实体节点的临时实体名称,<instanceName>为节点名称,<createTime>为节点创建时间,<memory>为设备内存地址,<cpuNum>为 cpu核数。节点信息包含但不限于上述几种。:
例如:CREATE(VmNode1:VM{instanceName:'aedeogeweuefpe-1', createTime:'2019-06-14',memory:'4G',cpu:4})
其中VM为节点类型,虚拟机节点,{instanceName:'aedeogeweuefpe-1',createTime:'2019-06-14',memory:'4G',cpu:4}为节点的属性信息,可作为节点内容查询,instanceName是节点命令,createTime为节点创建时间,memory为节点内存呢,cpu为虚拟机节点的cpu核数。
实体节点包含三部分:用户、设备、VM。示例如下:
创建VM实体:CREATE(VmNode1:VM{instanceName:'aedeegefefefefe-1',createTime:'2019-06-14',memory:'4G',cpu:4})
创建设备实体:CREATE(Device1:Device{instanceName:’device-1',createTime:'2018-06-14',memory:'156G',logcpu:48,cpu:2})
创建用户实体:CREATE(username:User{title:'用户名',phone:number})。
然后利用各种信息之间的关联信息创建节点之间的关系,
CREATE(用户名)-[:use]->(VmNode1)
其中用户名和VmNode1都是节点实体,use是两个节点的关系,意思为用户名useVmNode1。
将创建的实体节点建立关系,示例:
用户与VM的关系CREATE(liudehua)-[:使用]->(VmNode1)
创建设备与VM的关系CREATE(Device1)-[:子节点]->(VmNode1)
创建VM与VM关系CREATE(VmNode1)-[:白名单]->(VmNode1)。
创建完成后的知识图谱,关系处理模块将以上关系数据存贮在数据存储模块200中。
经过以上的步骤后,可以完成云计算设备、虚拟机节点的知识图谱的构建工作。可以基于此知识图谱为运维人员提供基于图谱的运维工作,功能涉及:用户与虚拟机关系查询、用户与虚拟机、虚拟机与虚拟机间的关系追踪。
用户与虚拟机关系查询能力:通过neo4j提供的图谱操作命令Match命令,可以查询出人物下名下正在使用的虚拟机节点有哪些,命令:MATCH (username:User{title:″用户名″})-[:使用]->(vms)RETURN username,vms
用户与虚拟机间的关系追踪:通过如下命令,可以做到快速查询出两个虚拟机节点之间的关系,返回一个图谱,标明两个虚拟机节点之间经过了用户是谁或者设备是什么。
Matchp=shortestPath((n:VM{instanceName:<instanceName>})[*](m:VM{instanceName:<instanceName>}))return p
数据展示模块400提供了两个接口,分别用于单节点信息查询的第一接口以及节点关系查询的第二接口。
其中,第一接口:单节点信息查询,用户输入要查询的节点名称,***根据指令构建查询指令,其中<nodeName.代表用户输入的节点名称:
MATCH(people:User{title:<nodeName>})-[:<relation>]->(<VM>)RETURNpeople,vms
第二接口:节点关系查询,用户输入要查询的虚拟机VM实体名称,返回和实体节点有关系的所有实体信息,构建的指令如下:
Match p=shortestPath((n:VM{instanceName:<instanceName>})[*](m:VM{instanceName:<instanceName>}))return p
利用上述方法能够直观的查看整个服务集群节点的状态,vm节点与用户之间的关系、vm节点与服务设备节点的关系以及vm节点和vm节点之间的关系,并且对节点做一定的管理工作。
现有传统的管理方式中,大多是通过关系型数据库来存储数据,关系型数据库能表达的关系层次只能达到一层,无法表达间接的关系。例如有事物一、事物二和事物三,事物一和事物二有关系,事物二和事物三有关系。现有传统的管理方式无法表达出事物一和事物二的关系。而本专利发明,可以便捷的管理起多层次的关系。
通过对比采用本实施例知识图谱的方式管理云服务器和传统方式管理云服务器的方式进行对比,实验前置说明:测试的关系层次,是指两个事物或实体之间所具备的关系层次,传统方式是指当前现有的运营商使用的关系型数据库存储数据,本实施例是指采用本专利发明方案进行的操作。比对的结果是操作所需要的步数。
实验一:VM_1和VM_2在同一台物理机器上,查询二者关系
实验二:VM_1和VM_2是白名单关系,VM_2和VM_3是白名单关系,VM_1 和VM_3之间的关系。
传统方式查找,首先查出所有和VM_1有关系的VM,假设N个,依次取N个 VM中的一条,查询其有关系的VM中是否有VM_3,实验结果如下
对比结果:当关系系数增大后,本实施例查询耗时和步数基本保持不变,而传统方案查询耗时和步数随着关系数的增加成倍数增大。因此,在高关系系数的情况下,本实施例中的使用知识图谱方式管理具有明显优势。
实施例2
本实施例提供一种基于知识图谱的云计算管理***,其包括信息收集模块 100,用于收集收集服务器集群中各个服务器的基本信息,并将基本信息储存在数据存储模块200中;
关系建立模块300,建立基本信息之间的关系数据,并将所述关系数据存储在所述数据储存模块中;
数据存储模块200,与所述信息收集模块100和所述关系建立模块300连接,用于存储所述基本信息和所述关系数据;
数据展示模块400,用于接收并展示所述服务器基本信息以及所述关系数据,并提供查询数据的第一接口和第二接口。管理人员可以通过第一接口和第二接口登录服务器管理界面,进行数据查询。
本实施例中的关系建立模块、数据存储模块、关系建立模块以及数据展示模块均设置在云服务器上,云服务器可以为自行搭建或租用现有的商业服务器。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。