买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于CMDB的自助资源分配调度的方法_千寻位置网络有限公司_201710406136.6 

申请/专利权人:千寻位置网络有限公司

申请日:2017-06-01

公开(公告)日:2020-12-01

公开(公告)号:CN107276914B

主分类号:H04L12/911(20130101)

分类号:H04L12/911(20130101);H04L29/08(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.12.01#授权;2017.11.17#实质审查的生效;2017.10.20#公开

摘要:本发明提供了一种基于CMDB的自助资源分配调度的方法,步骤如下:步骤S1,收集服务器资源信息并存入CMDB数据库资源表中;步骤S2,用户在CMDB系统中填写申请资源信息并提交;步骤S3,客户端接收到用户填写的申请资源信息后,向CMDB系统的服务器端发送请求,服务器端接收到申请资源信息后,构建一个双向队列,并同时把用户的申请资源信息放入双向队列中;步骤S4,从CMDB数据库中获取所有服务器资源信息,并生成动态资源池;步骤S5,计算分配调度申请资源信息;步骤S6,进行申请资源信息验证并实时输出。本发明避免了服务器单点故障隐患,提高高可用性,从而降低事后人为干预的问题。

主权项:1.一种基于CMDB的自助资源分配调度的方法,其特征在于,步骤如下:步骤S1,收集服务器资源信息并存入CMDB数据库资源表中;步骤S2,用户在CMDB系统中填写申请资源信息并提交;步骤S3,客户端接收到用户填写的申请资源信息后,向CMDB系统的服务器端发送请求,服务器端接收到申请资源信息后,构建一个双向队列,并同时把用户的申请资源信息放入双向队列中;步骤S4,从CMDB数据库中获取所有服务器资源信息,并生成动态资源池;步骤S5,计算分配调度申请资源信息,用户申请的资源数量作为索引范围进行分片访问动态资源池,取出相应的结果作为所述的申请资源信息;步骤S6,进行申请资源信息验证并实时输出;构建一组所述的动态资源池,包括以下步骤:穷举每个顶点的同时,获取所述顶点的边,每一次的遍历顶点的同时,依次把各个顶点所对应的栈弹出栈顶元素,并通过内存地址作为节点引入进一个空的单向链表中,所述单向链表为动态资源池。

全文数据:基于CMDB的自助资源分配调度的方法技术领域[0001]本发明涉及IT管理技术领域,具体涉及一种基于CMDB的自助资源分配调度的方法。背景技术[0002]随着目前诸多大型企业越来越重视互联网技术,所建立的数据中心也不单单在某个城市,可能在多个城市、甚至多个国家拥有多个分布式数据中心;而每个数据中心可能还包括数以万计的物理资源和虚拟资源泛指虚拟机,指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统),尤其是每台物理服务器都承载大量重要的虚拟机等应用。针对这种日趋复杂的情况,需要通过CMDB系统针对“闲置资源”和“业务应用”进行分配及关联。[0003]CMDBConfigurationManagementDatabase,配置管理数据库)通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务,并为其它流程,例如事故管理、问题管理、变更管理、发布管理等流程提供准确的配置信息。[0004]作为IT管理的核心,近年来CMDB逐渐成为系统管理项目实施的热点。CMDB系统中至少包含这几种关键的功能:整合、调和、同步、映射和可视化,其中“同步”是指确保CMDB中的信息能够反映联合数据源的更新情况,在联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新CMDB,找出未被批准的变更。这当中有一个重要的特性“资源”,资源在这里多指IP资源,也可以是存储资源、网络资源、机房资源等等,而资源必须要和应用关联起来,那么这当中就会涉及到“资源分配申请”的功能模块。[0005]在运用CMDB系统进行资源分配时,通常为了节省成本及资源,会在每台物理机(即宿主机,虚拟机的物理基础,虚拟机存在于宿主机中,与宿主机共享使用硬件。宿主机的运行是虚拟机运行的前提与基础。)中承载多个虚拟机,每个虚拟机可以看作独立的服务器进行使用,然而为了避免发生单点故障这里的“单点”是指通过CMDB系统在进行自动申请资源时,所申请的某个或多个虚拟机服务器资源,正巧都落在同一个宿主机中,容易发生单点故障),会在多个宿主机及其包含的虚拟机中组建成庞大的计算机集群一来加强计算能力,二来可以防止单点故障发生,然后通过CMDB系统的资源申请功能来让企业开发人员自助根据不同的业务应用来申请资源数量。[0006]CMDB系统的资源分配功能,通常都是以网页并且以BS结构的方式表现,使用人员通过浏览器所呈现的页面进行自助申请操作,结合以上描述,目前主要有以下实施方式:[0007]现有技术方案一:[0008]如图1所示,包括以下步骤:[0009]步骤al,为每个业务应用开发创建一个CMDB系统,然后将事先已经预定好的应用和所涉及到的所有服务器集群资源信息都收集并导入进各个CMDB系统的数据库中,确保每个应用下的CMDB系统中资源信息互相隔离。[0010]服务器集群是将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份。[0011]步骤a2,开发人员通过对应的业务应用中的CMDB系统,进入资源申请的页面,然后填写包括“应用名”、“资源申请数量”、“责任人”等信息自助提交申请操作。[0012]步骤a3,后端服务器接收到前端发来的提交申请的数据,会在数据库中表的'status'和lostjp'字段来组合查询该业务应用是否有可用闲置资源,若有,即会变更和记录相应的数据信息并把结果返回给前端页面;若没有,则会向前端页面抛出错误。图2是各个数据库关于资源表的相关E-R图^EntityRelationshipDiagram,实体-联系图),经图里显示lostjp'唯一性约束字段可说明其服务器资源仅有宿主机即物理机)。[0013]步骤a4,开发人员或系统管理员可以看到提交申请结果和相关日志。[0014]现有技术方案二:[0015]如图3所示,现有技术方案二不同于现有技术方案一为每个应用都开发一套独立的CMDB系统,现有技术方案二主要通过一个CMDB系统对多个业务应用进行统一资源申请,而数据库存储的是所有业务应用所涉及到的所有服务器集群资源信息,通过图4的E-R图可知,如字段Iosi^ip7和唯一"性约束字段irivatejp',代表可能有多条数据拥有相同'hostjp'和不同的irivatejp',说明技术方案二所申请的资源不仅包括宿主机(即物理机),并且部分宿主机中还包括大量虚拟机。接下来的步骤基本和技术方案一所提到的步骤al、a2、a3—样,开发人员通过申请自助页面填入相关信息后,系统后台向数据库表的'status和Iostjp'字段来组合查询可用资源,并进行相应的变更和返回结果。[0016]综上所述,现有技术方案一主要通过为每个应用都开发一套独立的CMDB系统,并单独存储该应用所对应的资源信息,且这些资源都只是物理服务器,没有虚拟机,因此该方案主要从不同应用之间的数据隔离来确保资源申请的准确性,但由于当前企业互联网业务大量普及,仅仅通过一台物理服务器运行一个应用既浪费服务器性能,又耗费巨大,已不符合现代企业互联网建设的初衷;再者,日后若在物理机中引入虚拟机技术,该方案将无法满足需求,另外,随着企业的发展越来越大,而业务应用也会越来越多,而CMDB系统也会变的更复杂庞大,若为每个应用都单独开发一套CMDB系统和数据库显然大大增加了人力维护的成本,因此该资源申请方案的使用场景非常有限,只适合于拥有服务器资源极少的企业选用。[0017]现有技术方案二相当于针对现有技术方案一的改进,通过开发创建一个CMDB系统来统一对各个业务应用进行资源申请,而所有的资源服务器信息都会在一个数据库中进行查询相关可用资源信息,并为使用人员在申请多台资源时随机分配资源数量,尽管这一技术方案大大弥补了技术方案一所涉及的问题,但由于现在诸多企业的服务器资源以虚拟机的形式安放在多台物理机中,这样就会带来另一种问题,如果开发人员在申请2台及2台以上的服务器资源时,后台无论是通过数据库表中的字段Status'和'private」?'还是字段StatuV和lostjp'进行组合查询并随机分配资源时,都会面临分配的资源都落在同一台宿主机中,而且闲置资源的范围越小,被分配到同一台宿主机的概率就越大,如图5所示;尽管所有的服务器资源物理机和虚拟机都已集群化来增强性能及其可靠性,但某个应用的服务器资源都分配在同一个物理机中,集群技术不仅无效,也会存在单点故障;而且即使随机分配发生该概率问题比较小的话,那么也很有可能出现如图6,当某一应用的访问量突然增大时,由于各个被分配的宿主机中的虚拟资源不均衡,会导致某台宿主机的负载极高,而另一些宿主机负载极低,大大浪费了服务器资源,并且随着申请的资源越多,风险就会越大,由此,一旦发生这种情况,势必需要管理人员或开发人员人为干预和修改,极为不便。发明内容[0018]本发明通过一些算法及技术手段来增强随机分配资源的可靠性,来避免申请多台资源时所遇到的单点问题,从而解决了现有技术方案存在的技术问题。[0019]本发明采用的技术方案是:[0020]—种基于CMDB的自助资源分配调度的方法,其特征在于,步骤如下:[0021]步骤SI,收集服务器资源信息并存入CMDB数据库资源表中;[0022]步骤S2,用户在CMDB系统中填写申请资源信息并提交;[0023]步骤S3,客户端接收到用户填写的申请资源信息后,向CMDB系统的服务器端发送请求,服务器端接收到申请资源信息后,构建一个双向队列,并同时把用户的申请资源信息放入双向队列中;[0024]步骤S4,从CMDB数据库资源表中获取所有服务器资源信息,并生成动态资源池;[0025]步骤S5,计算分配调度申请资源信息;[0026]步骤S6,进行申请资源信息验证并实时输出。[0027]进一步地,所述服务器资源信息包括物理机和虚拟机。[0028]进一步地,所述步骤S4具体包括以下步骤:[0029]通过CMDB数据库资源表中的字段把闲置待用的所有服务器资源信息抽取出来,得到一个仅包括ID和物理机IP的无序数据集,所述ID是CMDB数据库中用作主键的唯一标识。[0030]进一步地,对闲置待用的服务器资源信息进行按顺序分配,包括以下步骤:[0031]将无序数据集IP转换成十进制,即为节点;[0032]在内存中创建一个带有索引的动态数组表;[0033]将无序数据集里每个服务器资源信息构建成线性表;[0034]在动态数组表中通过指针来引用每个无序数据集的线性表形成一种关联。[0035]进一步地,通过键来构建一个基于图的有序键值对邻接表,所述键为动态数据表中的节点。[0036]进一步地,所述图G=V,E,其中V为顶点,E为图中各个顶点的边;[0037]V={节点1,节点2,节点……节点N},N为节点数量;[0038]把经过排序并去重的节点作为所有顶点的集合,并作为邻接表的键;设η为每个节点的重复元素的个数,设:[0039]E={节点lni,),(节点2m,),(节点3μ,)......节点Νπν}。[0040]进一步地,把每个顶点作为键,把每个节点重复元素作为边,并压入一个栈;每个顶点对应栈元素个数,作为每个顶点的边长。[0041]进一步地,构建一组动态资源池,包括以下步骤:[0042]穷举每个顶点的同时,获取所述顶点的边,每一次的遍历顶点的同时,依次把各个顶点所对应的栈弹出栈顶元素,并通过内存地址作为节点引入进一个空的单向链表中,所述单向链表为动态资源池。[0043]进一步地,所述步骤S5具体包括以下步骤:[0044]用户申请的资源数量作为索引范围进行分片访问动态资源池,取出相应的结果作为申请资源ί目息。[0045]进一步地,所述步骤S6中通过一个验证器来验证动态资源池中所获取的结果中所有的节点元素是否全都重复,若是,标记错误结果;若否,则向CMDB数据库进行相应变更,并实时将结果输出给浏览器。[0046]本发明有益效果如下:[0047]1、通过CMDB系统进行资源分配后无需再次人为的干预。[0048]2、解决了分配给业务应用的资源存在的单点隐患。[0049]3、申请后的资源均匀分布在各个物理节点中,而不至于当该应用达到高峰访问量时出现性能瓶颈。附图说明[0050]图1是现有技术方案一原理图。[0051]图2是现有技术方案一资源表E-R图。[0052]图3是现有技术方案二原理图。[0053]图4是现有技术方案二资源表E-R图。[0054]图5是现有技术方案二资源分配调度实施方式一效果图。[0055]图6是现有技术方案二资源分配调度实施方式二效果图。[0056]图7是本发明资源分配调度效果图。[0057]图8是本发明自主资源分配调度原理图。[0058]图9是本发明双向队列构建示意图。[0059]图10是本发明数据库资源表的数据结构图。[0060]图11是通过索引访问元素成员信息示意图。[0061]图12是邻接图。[0062]图13是动态资源池示意图。[0063]图14是资源验证与实时输出示意图。具体实施方式[0064]本发明的目的在于为开发人员在使用CMDB系统进行应用资源申请后,来避免某一应用下的服务器会面临的单点故障隐患,并可均匀分布在各个物理节点中,提高高可用性,从而降低事后人为干预的问题。下文中,结合附图和实施例对本发明作进一步阐述。[0065]图7是本发明最终效果图,通过一些算法及技术手段来增强随机分配资源的可靠性。[0066]图8是本发明基于CMDB的自助资源分配调度方法流程图,包括以下步骤:[0067]步骤SI,把所有的服务器资源信息包括物理机和虚拟机收集并存入CMDB数据库的资源表中。[0068]步骤S2,用户在CMDB系统中的“自助申请资源”页面里,填写相应的申请资源信息,如“应用名”、“资源申请数量”、“责任人”等信息,并点击“提交申请”按钮。[0069]步骤S3,客户端接收到用户填写的申请资源信息后,向CMDB系统的服务器端发送请求,服务器端接收到数据后,此时会事先构建一个双向队列,并同时把每个申请人的申请资源信息放入双向队列里,并准备在双向队列中进行CMDB数据库变更读写操作,从而解决克争问题,如图9所不。[0070]步骤S4,从CMDB数据库中获取所有服务器资源信息,并生成动态资源池,具体步骤如下:[0071]图10为CMDB数据库资源表的数据结构以及当中涉及的假设数据,其中字段“status”代表“待用”和“在用”的资源状态、以及当字段“host_ip”有值代表“物理机”、当字段“host_ip”和“private」p”都有值代表“虚拟机”、若多个虚拟机信息中拥有相同值的字段“host_ip”代表是这些虚拟机都隶属于同一台物理机中。如下表1所示。[0072]表1本发明CMDB数据库资源表[0073][0074]为了把“待用资源”均匀的分布在各个物理机中,以及尽可能的方便资源管理、月艮务器资源信息能够被顺序分配。因此首先通过CMDB数据库资源表中的字段“status”、“privatejp”和“host_ip”把闲置待用的所有服务器资源信息抽取出来,得到一个仅包含“ID”(这里的ID是指CMDB数据库中用作主键的唯一标识ID和“host_ip”溉物理机IP的无序数据集,假设如下所示:[0075]“(4,’10.1.1.1’),(3,’10.1.1.3’),(1,’10.1.1.1’),(2,‘10.1.1.2’)......’’[0076]之所以出现重复的物理机IP,是由于存在多个虚拟机都在同一个物理机中。为了先满足闲置资源能被顺序的分配,先需要把无序数据集的IP转换成十进制有利于排序做准备,在此为了方便描述,记为“节点”,然后在内存中创建一个带有索引的动态数组特指在声明时没有确定数组大小的数组。使用动态数组的优点是可以根据用户需要,有效利用存储空间表,再把无序数据集里每个服务器资源信息都构建成线性表一种具有线性结构特点的计算机中常用数据结构,它是一个含有11多0个节点的有限序列),接着在动态数组表中通过指针来引用每个无序数据集的线性表形成一种关联,这样就可以通过索引来方便访问每个元素的成员信息,如图11所示。[0077]之后,通过动态数组中的节点(即十进制数作为“键”来构建一个基于图(图是一种抽象的数学结构,研究抽象对象之间的一类二元关系及其拓扑性质。数学领域里有一个称为“图论”的研究分支,专门研究这种拓扑结构。它也看作计算机中一种复杂的数据结构)的有序键值对邻接表,由于节点可能存在重复值,而“键”本身是不可重复的,那么处理该问题的机制如下:[0078]令图G=V,E,其中V为顶点,E为图中各个顶点的边,设:[0079]V={节点1,节点2,节点3……节点N},N为节点数量,[0080]把经过排序并去重的节点作为所有顶点的集合,并作为邻接表的键;设η为每个节点的重复元素的个数,设:[0081]E={节点lni,),(节点2m,),(节点3μ,)节点Νπν}[0082]通过观察,由于图G中各个顶点都没有路径相连,每个顶点的边都各自独立,于是就形成了一种“非连通图”,图12为表示所述非连通图的有序键值对邻接表。[0083]把每个顶点V作为“键”,而把各个节点重复元素作为边为E,并压入一个栈;每个顶点对应的堆栈元素个数,作为每个顶点的边长,即:[0084]TOP-BOTTOM+1,其中BOTTOM彡1,如果栈当中TOP=BOTTOM=0,说明栈是空的。[0085]接着需要在此基础之上构建一组动态资源池,首先每个顶点的边都是由一个栈所构成,那么在穷举每个顶点的同时,获取所述顶点的边,每一次的遍历顶点的同时,依次把各个顶点所对应的栈弹出其栈顶元素,并通过内存地址作为节点引入进一个空的单向链表中,而所述单向链表即作为动态资源池,如图13所示。[0086]单向链表单链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为节点列表,因为链表是由一个个节点组装起来的。[0087]步骤S5,计算分配调度申请资源信息,具体步骤如下:[0088]由于在步骤S2时,系统已经从用户的输入中获取到需要申请的资源数量,而所述资源数量假设为X台,把X台作为索引范围进行分片访问单项链表动态资源池),取出相应的结果作为待申请的资源信息。[0089]步骤S6,进行申请资源信息验证并实时输出。[0090]尽管通过步骤S5已经得到了结果,但还需考虑一种情况,假设最终的动态资源池中所获取的结果里待用节点元素都为重复,那么说明动态资源池中的待用节点都在仅一台物理机中,由于会存在单点隐患,因此还需要一个验证器来验证其结果中所有的节点元素是否全都重复,若是,标记错误结果;若否,则向CMDB数据库进行相应变更,由步骤S3可知,整个CMDB数据库资源分配的过程都在双向队列中进行,因此,在这里离开双向队列后,并实时把结果传给浏览器。图14为步骤S6的完整示例流程。[0091]本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

权利要求:1.一种基于CMDB的自助资源分配调度的方法,其特征在于,步骤如下:步骤SI,收集服务器资源信息并存入CMDB数据库资源表中;步骤S2,用户在CMDB系统中填写申请资源信息并提交;步骤S3,客户端接收到用户填写的申请资源信息后,向CMDB系统的服务器端发送请求,服务器端接收到申请资源信息后,构建一个双向队列,并同时把用户的申请资源信息放入双向队列中;步骤S4,从CMDB数据库中获取所有服务器资源信息,并生成动态资源池;步骤S5,计算分配调度申请资源信息;步骤S6,进行申请资源信息验证并实时输出。2.如权利要求1所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,所述服务器资源信息包括物理机和虚拟机。3.如权利要求2所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,所述步骤S4具体包括以下步骤:通过CMDB数据库资源表中的字段把闲置待用的所有服务器资源信息抽取出来,得到一个仅包括ID和物理机IP的无序数据集,所述ID是CMDB数据库中用作主键的唯一标识。4.如权利要求3所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,对闲置待用的服务器资源信息进行按顺序分配,包括以下步骤:将无序数据集IP转换成十进制,即为节点;在内存中创建一个带有索引的动态数组表;将无序数据集里每个服务器资源信息构建成线性表;在动态数组表中通过指针来引用每个无序数据集的线性表形成一种关联。5.如权利要求4所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,通过键来构建一个基于图的有序键值对邻接表,所述键为动态数据表中的节点。6.如权利要求5所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,所述图G=V,E,其中V为顶点,E为图中各个顶点的边;V={节点1,节点2,节点……节点N},N为节点数量;把经过排序并去重的节点作为所有顶点的集合,并作为邻接表的键;设η为每个节点的重复元素的个数,设:E={节点lm,),(节点2m,),(节点3μ,)......节点Νπν}。7.如权利要求6所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,把每个顶点作为键,把每个节点重复元素作为边,并压入一个栈;每个顶点对应栈元素个数,作为每个顶点的边长。8.如权利要求7所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,构建一组动态资源池,包括以下步骤:穷举每个顶点的同时,获取所述顶点的边,每一次的遍历顶点的同时,依次把各个顶点所对应的栈弹出栈顶元素,并通过内存地址作为节点引入进一个空的单向链表中,所述单向链表为动态资源池。9.如权利要求1所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,所述步骤S5具体包括以下步骤:用户申请的资源数量作为索引范围进行分片访问动态资源池,取出相应的结果作为申请资源信息。10.如权利要求1所述的一种基于CMDB的自助资源分配调度的方法,其特征在于,所述步骤S6中通过一个验证器来验证动态资源池中所获取的结果中所有的节点元素是否全都重复,若是,标记错误结果;若否,则向CMDB数据库资源表进行相应变更,并实时将结果输出给浏览器。

百度查询: 千寻位置网络有限公司 基于CMDB的自助资源分配调度的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术