分布式管理方法、分布式管理系统及装置与流程

文档序号:19878636发布日期:2020-02-08 06:43阅读:250来源:国知局
分布式管理方法、分布式管理系统及装置与流程

本发明属于计算机技术技术领域,更具体地,涉及一种分布式管理方法、分布式管理系统及装置。



背景技术:

分布式管理系统通常通过管理节点将一项业务流程分成多个任务部署在工作节点上并分别执行,并且通过管理节点收集任务返回的数据。

以图1所示的基于kubernetes的任务管理系统为例,所述任务管理系统包括管理节点110和多个工作节点120。kubernetes是开源的容器集群管理系统,提供应用部署、维护、扩展等功能,能够方便地管理大规模跨主机的容器应用。

管理节点110上部署有scheduler、controller-manager、kube-dns、apiserver、etcd、kubelet和kube-proxy等多个模块。其中,apiserver负责对外提供kubernetesapi服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给apiserver处理后再提交给etcd。scheduler负责调度,将pod到合适的工作节点上。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个工作节点组成的列表,输出是pod和一个工作节点的绑定,即将这个pod部署到这个工作节点上。controller-manager负责管理资源,例如对于已经创建的pod,controller-manager保证pod的状态始终和预期的一样。kubelet用来处理节点下发到本节点的任务,管理pod和其中的容器。etcd是一个高可用的键值存储系统,kubernetes使用它来存储各个资源的状态。kube-proxy实现了kubernetes中的服务发现和反向代理功能。kubectl以及driver实现和apiserver的交互,driver还与pod进行交互。工作节点120上部署有多个pod、kubelet和kube-proxy等模块。所述多个pod用于执行规定的功能。其中,pod是kubernetes的基本操作单元,也是应用运行的载体。而一个业务流程可以分为多个pod运行。

结合图1可以发现,当driver出现异常时,大量的任务执行单元(对应在工作节点上执行的pod)由于任务执行结束或者与driver通信异常而处于非运行状态,例如,在图1中,etcd中存储有大量处于非运行状态的pod,会占用kubernetes的大量资源。然而,发明人发现,一些情况下,用户需要定期去查询etcd中是否存在处于非运行状态的应用,自动删除处于非运行状态的应用,而上述的任务管理系统不能给予很好的支持。

因此,有必要提供一种通用的处理方案,能够自动清理处于非运行状态的应用。



技术实现要素:

有鉴于此,本发明实施例提供分布式管理系统和方法,在任务请求中包含其归属的应用id,在任务执行单元中同样包含应用id,通过应用id和任务执行单元的对应关系,获得任务执行单元和其所归属的应用的运行信息,并根据应用的运行信息删除处于非运行状态的应用。

根据本发明实施例的第一方面,提供一种分布式管理系统,包括:

应用服务模块,用于根据多个任务请求操作多个任务执行单元,所述多个任务执行单元各自包含其归属的应用id;

监控模块,用于从所述应用服务模块获取所述多个任务执行单元的操作信息,并根据所述多个任务执行单元的操作信息获得所述多个任务执行单元的运行信息;

处理模块,用于根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求;

其中,所述应用服务模块还用于根据多个删除请求删除多个任务执行单元。

优选地,所述处理模块包括:

检索判断单元,用于获得多个应用的运行信息,并据此获得待删除的应用;

数据通道,用于存储所述待删除的应用;

请求生成单元,用于根据所述待删除的应用生成删除请求。

优选地,所述待删除的应用的所有任务执行单元都处于非运行状态且非运行状态的持续时间都大于预设时间。

优选地,所述处理模块在定时器里执行。

优选地,所述分布式管理系统还包括:

驱动模块,发送多个任务请求,所述多个任务请求各自包含其归属的应用id。

优选地,所述分布式管理系统还包括:

连接池模块,用于生成多个连接对象;

所述处理模块还用于获取多个连接对象中的一个,并基于所述连接对象将所述删除请求发送至应用服务模块。

优选地,所述连接对象包括验证请求,所述处理模块还将所述验证请求发送至应用服务模块;

所述应用服务模块验证所述删除请求中的应用的运行信息。

优选地,所述监控模块还包括:

存储单元,用于存储多个任务执行单元的运行信息。

优选地,所述监控模块和所述应用服务模块之间建立长连接,基于所述长连接侦听所述应用服务模块以获得所述多个任务执行单元的操作信息。

优选地,所述分布式管理系统基于kubernetes架构构建,所述任务请求和所述应用请求为spark应用的pod请求,所述任务执行单元执行相应的spark应用的pod。

根据本发明实施例的第二方面,提供一种分布式管理方法,包括:

获取所述多个任务执行单元的操作信息,并据此获得所述多个任务执行单元的运行信息;

根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求;以及

根据删除请求删除多个任务执行单元。

优选地,所述分布式管理方法还包括:

根据多个任务请求操作多个任务执行单元,所述多个任务执行单元各自包含其归属的应用id。

优选地,根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求包括:

获得多个应用的运行信息,并据此获得待删除的应用;

根据所述待删除的应用生成删除请求。

优选地,所述待删除的应用的所有任务执行单元都处于非运行状态且非运行状态的持续时间都大于预设时间。

优选地,获得多个应用的运行信息在定时器里执行。

优选地,所述分布式管理方法,还包括:

发送多个任务请求,所述多个任务请求各自包含其归属的应用id。

优选地,所述分布式管理方法还包括:

生成多个连接对象;

获取多个连接对象中的一个,并基于所述连接对象发送所述删除请求。

优选地,所述连接对象包括验证请求,

所述分布式管理方法还包括:

验证所述删除请求中的应用的运行信息。

优选地,所述分布式管理方法还包括:

采用存储单元存储多个任务执行单元的运行信息。

根据本发明实施例的第三方面,提供一种分布式管理系统,包括:管理节点和工作节点;

其中,管理节点包括:

应用服务模块,用于根据多个任务请求操作多个任务执行单元,所述多个任务执行单元各自包含其归属的应用id;

监控模块,用于从所述应用服务模块获取所述多个任务执行单元的操作信息,并据此获得所述多个任务执行单元的运行信息;

处理模块,用于根据多个任务执行单元的运行信息生成多个删除请求;

所述应用服务模块还用于根据多个删除请求删除多个任务执行单元;

所述多个工作节点分别包括在其上执行的多个任务执行单元。

优选地,所述管理节点还包括:

连接池模块,用于生成多个连接对象;

所述处理模块还用于获取多个连接对象中的一个,并基于所述连接对象将所述删除请求发送至应用服务模块。

优选地,所述分布式管理系统基于kubernetes架构构建,所述任务请求为spark应用的pod请求,所述任务执行单元执行相应的spark应用的pod。

根据本发明实施例提供的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述所述的分布式管理方法。

根据本发明实施例提供的第五方面,提供一种分布式管理装置,包括:

存储器,用于存储计算机指令;

处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现上述所述的分布式管理方法。

本发明的实施例具有以下优点或有益效果:在任务请求中包含归属的应用id,在任务执行单元中包含了应用id,保持了应用和任务执行单元之间的对应关系,从而能够根据任务执行单元的运行信息获得应用的运行信息,并根据应用的运行信息删除处于非运行状态的应用,减少非运行状态的应用对kubernetes资源的占用;自动清理非运行状态的任务执行单元可以降低人为操作失误的风险。

本发明的优选实施例具有以下优点或有益效果:基于连接池模块的连接对象将删除请求发送至应用服务模块,减少了处理模块与应用服务模块之间建立连接的时间,节省内存,从而提高了系统效率。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1是基于kubernetes的集群管理系统的部署图;

图2是根据本发明实施例的分布式管理系统的结构示意图;

图3是根据本发明实施例的分布式管理系统中的监控模块230的结构示意图;

图4是根据本发明实施例的分布式管理方法的流程图;

图5是根据本发明实施例的分布式管理装置的结构图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

图2是根据本发明实施例的分布式管理系统的结构示意图。

如图2所示,分布式管理系统200包括驱动模块210、应用服务模块220、监控模块230、多个任务执行单元240和处理模块250。

驱动模块210发送多个任务请求,所述多个任务请求各自包含其归属的应用id。

应用服务模块220根据多个任务请求操作多个任务执行单元240。每个任务执行单元240包含其归属的应用id。每个任务执行单元执行对应的任务请求中规定的操作。

监控模块230从应用服务模块获得多个任务执行单元的操作信息,并根据所述多个任务执行单元的操作信息获得多个任务执行单元的运行信息。

处理模块250用于根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求,所述删除请求各自包含其归属的应用id。

应用服务模块220根据删除请求删除多个任务执行单元。

具体而言,当一个应用被分成多个任务请求时,通过任务请求中包含的应用id确定每个pod归属的应用。当应用服务模块220从驱动模块210接收到一个任务请求时,根据任务请求的内容操作任务执行单元。一种可选的实施例为:任务请求为对一个类对象的操作请求,则任务执行单元根据该操作请求,操作实体的类对象。

监控模块230和应用服务模块220建立连接,获得任务执行单元的操作信息,并根据所述多个任务执行单元的操作信息获得所述多个任务执行单元的运行信息。

任务请求可为任务执行单元的创建请求、任务执行单元的删除请求、任务执行单元的修改请求或任务执行单元的查询请求。相应地,应用服务模块220对任务执行单元进行增加、删除、修改或查询。应该理解,对任务执行单元的创建、删除和修改会实时反映到信息表中,从而使得信息表中只保留当前正在执行的任务执行单元的信息。

在本实施例中,任务请求中包含其归属的应用id,任务执行单元中同样包含了其归属的应用id,保持了任务执行单元和应用之间的对应关系,从而处理模块250能够根据任务执行单元的运行信息得到应用的运行信息。在信息表中包含了应用和任务执行单元的对应关系,从而可以采用应用的名称查询其包含的任务执行单元,也可以查询单一任务执行单元所归属的应用。

在本实施例中,处理模块250获得应用的运行信息,并判断该应用为非运行状态时生成删除请求,即应用的所有任务执行单元均处于非运行状态,且非运行状态的持续时间超过预设时间时生成删除请求。

在一个可选的实施例中,任务请求的格式(未示出全部内容)包含以下注释内容:

application-type=spark;

application-ui=<ip>:<port>;

application-selector=<spark-appid>;

其中,application-type表示应用类型,application-ui包括ip地址和端口,表示执行详情的存储位置,同时是访问接口,其他应用或管理员可以基于该访问接口进行访问,application-selector表示任务执行单元归属的应用id。在此示例中,应用为一个spark应用,该请求为一个spark请求。spark是新一代分布式内存计算框架。

在一个可选的实施例中,应用服务模块220和监控模块230之间的连接是长连接,监控模块230一直处于侦听状态,当应用服务模块220生成任务操作事件时,监控模块230可以立即侦听到。

在一个可选的实施例中,分布式管理系统还包括:连接池模块260,用于生成多个连接对象。所述处理模块250还用于获取多个连接对象中的一个,并基于所述连接对象将所述删除请求发送至应用服务模块220。

可以理解,上述实施例的分布式管理系统可以基于图1的任务管理系统得以实现。例如,驱动模块210、应用服务模块220、监控模块230和处理模块240部署在管理节点110上,任务执行单元(对应pod)在工作节点120上执行。基于kubernetes现有的组件将使得上述模块的实现更加简单。

图3是根据本发明实施例的分布式管理系统中的监控模块230、处理模块250和连接池模块260的结构示意图。

如图3所示,监控模块230处于侦听状态,当侦听到一个操作信息2301时,对2301进行判断:

(1)当操作信息2301为创建任务执行单元的信息时,获取所属的应用id;判断在内存表2303中是否已存在该应用;如果不存在,则根据该应用id创建一个新的记录,并将相应的任务执行单元的信息保存在该记录的条目下,同时将该新的记录存储到数据通道2302中,通过数据通道2302异步的存储到mysql中进行永久保存;如果在内存表2303中已存在该应用,则直接将任务执行单元的信息追加到相应的记录的条目下,其中,数据通道2302例如消息队列,共享内存等临时存储数据的存储单元;

(2)当操作信息2301为更新任务执行单元的信息时,获取任务执行单元所属的应用id,找到相应的记录,再根据任务执行单元的名称定位到任务执行单元的条目,替换任务执行单元的信息;

(3)当操作信息2301为删除任务执行单元的信息时,获取任务执行单元所属的应用id,找到相应的记录,再根据任务执行单元的名称从记录中删除任务执行单元的信息;如果应用的记录下已经不包含任何任务执行单元,则删除应用记录。

在一个可选的实施例中,所述监控模块220还包括存储单元,用于存储多个任务执行单元的运行信息。该存储单元可以为内存表。

如图3所示,处理模块250根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求。具体包括:检索判断单元2501,用于获得多个应用的运行信息,并据此获得待删除的应用;数据通道2502,用于存储所述待删除的应用;请求生成单元2503,用于根据所述待删除的应用生成删除请求。

在本实施例中,检索判断单元2501定时查询内存表2303中的任务执行单元的运行信息以获得应用的运行信息,并据此获得待删除的应用。例如,每隔10秒钟查询一次内存表2303,根据任务执行单元的运行信息获得应用的运行信息,判断该应用是否为待删除的应用,其中,待删除的应用的所有任务执行单元都处于非运行状态且非运行状态的持续时间都大于预设时间;如果该应用为待删除的应用,则将待删除的应用存储到数据通道2502中。请求生成单元2503监听数据通道2502中是否存在待删除的应用,如果存在则生成删除请求并发送至应用服务模块220。

如图3所示,连接池模块260用于生成多个连接对象(clientset)。处理模块250获取多个连接对象中的一个,并基于所述连接对象将所述删除请求发送至应用服务模块220。处理模块250在发送删除请求后释放该连接对象。

在本实施例中,连接池模块260包括连接对象生成单元2601和数据通道2602,其中,连接对象生成单元2601用于生成多个连接对象,数据通道2602用于存储多个连接对象。

处理模块250的请求生成单元2503生成删除请求后,从数据通道2602获取一个空闲的连接对象clientset,并基于该连接对象clientset将删除请求发送至应用服务模块220。

在一个可选的实施例中,连接对象clientset包括验证请求,应用服务模块220验证所述删除请求中的应用的运行信息。具体地,根据删除请求中的应用id,验证该应用的所有任务执行单元的运行信息,如果存在处于运行状态的任务执行单元,直接返回;如果不存在处于运行状态的任务执行单元,则删除该应用的所有任务执行单元的信息。

可以理解,虽然上述描述多结合kubernetes架构,但是即使不采用kubernetes架构,也可以构建上述监控模块。

图4是根据本发明实施例的分布式管理方法的流程图。具体包括以下步骤。

在步骤s101中,发送多个任务请求,所述多个任务请求各自包含其归属的应用id。

在步骤s102中,根据多个任务请求操作多个任务执行单元,所述多个任务执行单元各自包含其归属的应用id。

在步骤s103中,获取多个任务执行单元的操作信息,并据此获得多个任务执行单元的运行信息。

在步骤s104中,根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求。

在本实施例中,获得多个应用的运行信息,并据此获得待删除的应用;根据所述待删除的应用生成删除请求。所述待删除的应用的所有任务执行单元都处于非运行状态且非运行状态的持续时间都大于预设时间。

在步骤s105中,根据删除请求删除多个任务执行单元。

具体而言,当一个应用被分成多个任务请求时,任务请求中包含的应用id确定每个任务归属的应用。根据任务请求操作任务执行单元。任务执行单元是任务的执行载体,用于完成规定的操作。任务执行单元中也包含应用id。如此,保持了应用和任务执行单元的对应关系,可以通过侦听任务执行单元的操作信息,获得任务执行单元和其所归属的应用的运行信息,并根据应用的运行信息删除处于非运行状态的应用。

在一个可选的实施例中,上述分布式管理方法还包括:生成多个连接对象;获取多个连接对象中的一个,并基于所述连接对象发送所述删除请求。

在一个可选的实施例中,所述连接对象包括验证请求,上述分布式管理方法还包括:验证所述删除请求中的应用的运行信息。

图5是根据本发明实施例的分布式管理装置的结构图。图5示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。

参考图5,该分布式管理装置包括通过总线连接的处理器501、存储器502和输入输出设备503。存储器502包括只读存储器(rom)和随机访问存储器(ram),存储器502内存储有执行系统功能所需的各种计算机指令和数据,处理器501从存储器502中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分。存储器502还存储有以下的计算机指令以完成本发明实施例的分布式管理方法规定的操作:获取所述多个任务执行单元的操作信息,并据此获得所述多个任务执行单元的运行信息;根据多个任务执行单元的运行信息获得多个应用的运行信息,并据此生成删除请求;以及根据删除请求删除多个任务执行单元。

相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述分布式管理方法所规定的操作。

附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。

系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用java、c/c++/c#、sql等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。

根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过internet连接的多个pc机、pc服务器、刀片机、超级计算机等。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1