CN115421891A - 一种任务分发方法、装置、设备及介质 - Google Patents
一种任务分发方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115421891A CN115421891A CN202211114651.4A CN202211114651A CN115421891A CN 115421891 A CN115421891 A CN 115421891A CN 202211114651 A CN202211114651 A CN 202211114651A CN 115421891 A CN115421891 A CN 115421891A
- Authority
- CN
- China
- Prior art keywords
- task
- list
- node
- temporary
- nodes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及计算机软件及数字医疗技术领域,公开了一种任务分发方法、装置、设备及介质,本发明通过将根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得仅带有需要待分发任务的待配置清单,再通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担部分任务的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡。
Description
技术领域
本发明涉及计算机应用及数字医疗技术领域,尤其涉及一种任务分发方法、装置、设备及介质。
背景技术
医疗云(Medical cloud),是指在云计算、移动技术、多媒体、4G通信、大数据、以及物联网等新技术基础上,结合医疗技术,使用“云计算”来创建医疗健康服务云平台,实现了医疗资源的共享和医疗范围的扩大。
目前,随着互联网公司的业务发展等,多任务、高并发场景已经在医疗云技术中变得非常普遍,而在医疗云技术中执行的任务清单更新时,需要将更新后的任务清单上的任务进行同步的分发,由于,不同节点对应的机器的负载情况不同,会导致在新的任务分发后,个别节点对应的机器出现负载过高而出现宕机的情况。
发明内容
本发明提供一种任务分发方法、装置、计算机设备及介质,以解决现有的任务分发过程中因个别节点负载量过高而异常宕机的问题。
第一方面,提供了一种任务分发方法,包括:
在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于读取原始任务清单和最新配置的任务清单;所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务;
调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务;
调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务;
在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
第二方面,提供了一种任务分发装置,包括:
节点创建模块,用于在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于从数据库中读取原始任务清单和最新配置的任务清单;所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务;
采集模块,用于调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务;
判断模块,用于调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
待配置清单获取模块,用于若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务;
任务分发模块,用于在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任务分发方法的步骤。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任务分发方法的步骤。
上述的一种任务分发方法、装置、计算机设备及存储介质所实现的方案中,通过在zookeeper集群中创建多个临时节点,并在多个临时节点中确定一个主节点;调用主节点采集各个临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;调用主节点对当前运行的任务清单和最新配置的任务清单分别与原始任务清单进行对比,判断原始任务清单是否发生变化;若发生变化,则根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得待配置清单;在k8s中创建新增节点,并将待配置清单中的任务分发给正常运行的临时节点和新增节点。本申请通过将根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得仅带有需要待分发任务的待配置清单,再通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担部分任务的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡,进而解决现有的任务分发过程中因个别节点负载量过高而异常宕机的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中任务分发方法的一应用环境示意图;
图2是本发明一实施例中任务分发方法的一流程示意图;
图3是图1中步骤S50的一具体实施方式流程示意图;
图4是图3中步骤S51的一具体实施方式流程示意图;
图5是图4中步骤S50的一具体实施方式流程示意图;
图6是本发明一实施例中任务分发装置的一结构示意图;
图7是本发明一实施例中计算机设备的一结构示意图;
图8是本发明一实施例中计算机设备的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的任务分发方法,应用于任务分发网络中,所述任务分发网络可以包括:调度节点100、临时节点200及新增节点300,其中,调度节点100、临时节点200及新增节点300均可以用独立的服务器或者是多个服务器组成的服务器集群来实现。下面通过具体的实施例对本发明进行详细的描述。
请参阅图2所示,图2为本发明实施例提供的任务分发方法的一个流程示意图,包括如下步骤:
S10:在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于从数据库中读取原始任务清单和最新配置的任务清单。
其中,所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务。这里,原始任务清单通过服务端向数据库人工下发获得的;最新配置的任务清单可以通过服务端向数据库人工更改获得的,也可以通过更新指令向数据库下发的更新后的任务清单获得的。
zookepper是一种开源的分布式应用程序的协调服务,其为分布式应用提供一致性功能服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等,在本实施方式中,zookeeper集群在服务端上创建多个临时节点。在实际应用中,应用都是以集群模式部署的,此时需要对应用集群进行任务分发,并为了保证任何时候都有且只有一个主节点对各个临时节点分发任务,本申请通过在zookeeper集群中所创建出的多个临时节点中确定一个主节点,并通过使主节点从数据库中读取原始任务清单和最新配置的任务清单,获取各个临时节点所要执行的任务,例如,当最新配置的任务清单为人工更改后的最新的mysql的数据时,原始任务清单为从数据库中最开始获得的mysql的数据,主节点从数据库中每分钟读取mysql的数据,若所读取的mysql的数据相比之前的mysql的数据发生变化,则此变化的mysql的数据为最新更新的mysql的数据,即为最新配置的任务清单;并在最新更新的mysql的数据确定后,根据最新更新的mysql的数据确定需要同步roma消息的任务清单,获取所有需要执行的任务,这里,roma消息的任务清单用于将mysql数据库表的增删改变化数据产生的binlog日志进行处理,然后变成json格式的rocket mq消息队列。
需要说明的是,各个临时节点将其各自对应的任务id和任务名称以及负载量,实时更新到zookepper上。
S20:调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点。
这里,临时节点各自对应的任务信息包括临时节点的任务id和任务名称,节点状态信息包括负载量信息,主节点根据zookepper能够获得各个临时节点将其各自对应的任务id和任务名称以及负载量信息,可根据在各个临时节点运行的任务名称,确定当前运行的任务清单;同时,根据各个临时节点的负载量,确定负载量小于预设阈值的临时节点为正常运行的临时节点,确定负载量不小于预设阈值的临时节点为异常运行的临时节点。
其中,所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务。由于,原始任务清单上的任务在下方给临时节点后,部分原始任务清单上的任务会被人为暂停,因此,会出现当前运行的任务清单与原始任务清单不一致的情况,因此,这里通过确定当前运行的任务清单,即可判断出在原始任务清单中被停止的任务。
S30:调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化。
这里,原始任务清单发生变化包括是在最新配置的任务清单上有新的任务要同步或者在原始任务清单上有停止的任务。
在一实施方式中,所述调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化,可以包括:根据所述原始任务清单与所述最新配置的任务清单进行对比,判断所述最新配置的任务清单上是否有新的任务、以及所述原始任务清单上是否有需要被停止的第一停止任务;根据所述当前运行的任务清单与所述原始任务清单进行对比,判断所述原始任务清单上是否有被停止的第二停止任务;若判断结果为有所述新的任务需要被配置、和/或所述原始任务清单上有第一停止任务和/或第二停止任务被停止,则确定所述原始任务清单发生变化。通过原始任务清单与最新配置的任务清单之间的对比、以及当前运行的任务清单与原始任务清单之间的对比,即为有所述新的任务需要被配置、原始任务清单上有第一停止任务被停止、以及原始任务清单上有第二停止任务被停止的三者情况中至少发生一种时,能够确定原始任务清单是否发生变化,以便准确获得步骤S40中的待配置清单。
S40:若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单。
其中,所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务。
进一步的,为了快速且准确的对原始清单进行修改,在一些实施方式中,所述根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,可以包括:在所述原始任务清单中加入所述新的任务,和/或将所述原始任务清单上被停止的第一停止任务和/或第二停止任务从所述原始任务清单中去除,完成对所述原始任务清单的修改;将修改后的所述原始任务清单作为所述待配置清单,即可快速且完成对原始任务清单的修改。
例如,当根据原始任务清单与最新配置的任务清单之间的对比,确定最新配置的任务清单上有新的任务时,将新的任务加入原始任务清单中,生成任务清单1,再确定原始任务清单上有已经被停止的任务,则将已经被停止的任务通任务清单1中去除,生成任务清单2,此时,生成的任务清单2即为待配置清单。
S50:在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
需要说明的是,k8s是Kubernetes的简称,是一种用于容器集群的自动化部署、扩容以及运维的开源平台,并且能够为容器编排管理提供了完整的开源方案。在创建新增节点前,遍历所有的临时节点,确定出负载量最低的节点,并将待配置清单中的新的任务分发至负载量最低的节点中,再将新的任务分发结果,更新到zookepper的任务中。同时,各个临时节点在监听到该zookepper任务发生变化后,则认领各自对应的任务清单,然后开始相关的任务同步。
这里,这里,各个临时节点和新增节点可为位于客户端上的执行设备,以实现位于待配置清单上的任务向客户端上的执行设备的同步分发。通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担部分任务的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在有新的任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡。
参见图3,为了避免将过多的任务分发到创建的新增节点后,造成新增节点负载量过高的问题,所述在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点,包括:
S51:将所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点。
例如,异常运行的临时节点为节点1和节点2,在k8s中创建出新增节点1和新增节点2后,将节点1上运行的待配置清单上的任务分发给新增节点1,将节点2上运行的待配置清单上的任务分发给新增节点2。
在一些实施方式中,参见图4,所述将所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点,包括:
S511:在所述k8s中创建预设数量的新增节点。
通过在k8s中创建预设数量的新增节点,可使待配置清单中的任务分发给该新创建的新增节点,例如,预设数量为2,在k8s中创建出新增节点1和新增节点2后,将待配置清单中的部分任务可分发至新增节点1和新增节点2中。这里,预设数量可以不小于异常运行的临时节点的数量。
S512:将与所述预设数量相同的所述异常运行的临时节点回收至所述zookeeper集群中。
由于,在k8s中创建预设数量的新增节点,能够分担异常运行的临时节点上的任务,因此,为了使新创建的新增节点的负载量过高,因此,通过将与预设数量相同的异常运行的临时节点回收至zookeeper集群中,可使被回收的异常运行的临时节点上的任务分别对应的分发给各个步骤S511中创建的新增节点,以避免将过多的任务分发到创建的新增节点后,造成新增节点负载量过高的问题。
S513:将被回收的所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点。
这里,在将被回收的异常运行的临时节点上运行的任务分发给预设数量的新增节点时,确定与各个被回收的异常运行的临时节点分别对应的新增节点,并对各个新增节点根据各自对应的异常运行的临时节点的任务id进行标记,再根据各个新增节点的标记,将被回收的异常运行的临时节点上运行的任务分发给各个新增节点。
例如,被回收的异常运行的两个临时节点的任务id为001和002,根据两个临时节点的任务id,对新增节点1和新增节点2分别进行标记,则新增节点1的标记为001,新增节点2为标记为002,任务id为001的临时节点上运行的任务分发给标记为001的新增节点1上,任务id为002的临时节点上运行的任务分发给标记为002的新增节点2上,以完成对预设数量的新增节点上的任务分配。
S514:调用所述主节点根据各个未被收回的所述临时节点各自对应的节点状态信息,判断是否有异常运行的临时节点。
这里,各个临时节点各自对应的节点状态信息发送至zookepper中,获取各个临时节点的任务id、任务名称和负载量,并将负载量超过预设阈值的临时节点作为异常运行的临时节点,此外,还可以在zookepper中指定异常运行的临时节点,例如,任务id为01的临时节点所执行的任务名称为“查询任务”,而此临时节点所对应的机器由于老旧,需要被替换,因此,可将其在zookepper中指定为异常运行的临时节点。
S515:若有,则重复在所述k8s中创建预设数量的新增节点至将被回收的所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点的步骤,直至判断出没有异常运行的临时节点为止。
在完成步骤S514后,可在调用主节点根据各个未被收回的临时节点各自对应的节点状态信息,确定是否还有异常运行的临时节点,若没有异常运行的临时节点,则结束在k8s中创建预设数量的新增节点;若有异常运行的临时节点,则重复步骤S511至S514,直至判断出没有异常运行的临时节点为止,以实现对异常运行的临时节点的完全替换。
S52:将所述正常运行的临时节点上的非所述待配置清单上的任务收回,并使在所述正常运行的临时节点运行的所述待配置清单上的任务在各自对应的所述正常运行的临时节点上继续运行。
由于,各个正常运行的临时节点上运行的任务为待配置清单上的任务,为了减少对待配置清单上的任务的分发步骤,通过使在正常运行的临时节点运行的待配置清单上的任务在各自对应的正常运行的临时节点上继续运行,即可直接完成对在正常运行的临时节点运行的待配置清单上的任务的分配。
S53:判断所述待配置清单上是否还有未分发的任务,若有,则根据所述正常运行的临时节点和所述新增节点的负载量,确定所述未分发的任务对应的待分发节点,并将所述未分发的任务分发给所述待分发节点。
需要说明的是,若待配置清单上包括未在各个临时节点上运行的新任务,步骤S51和S52未对该新任务进行分发,因此,该新任务为未分发的任务,为了保证各个正常运行的临时节点和新增节点的负载均衡,这里,通过根据正常运行的临时节点和所述新增节点的负载量,确定未分发的任务对应的待分发节点,例如,未分发的任务1和未分发的任务2需要被分发,临时节点1和临时节点2相对其他节点的负载量较低,因此,将未分发的任务1和未分发的任务2分别分发给临时节点1和临时节点2。
为了快速完成新增节点对异常运行的节点的替换,参见图5,所述在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点,包括:
S54:将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述正常运行的临时节点。
为了避免将异常运行的临时节点上运行的任务分配至负载量相对较高的正常运行的临时节点上,造成该临时节点运行异常,这里,所述将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述正常运行的临时节点,可以包括:根据各个所述正常运行的临时节点各自对应的负载量进行从小到大的排序,并将排序中的前N个所述正常运行的临时节点作为目标节点;其中,N为所述异常运行的临时节点的个数;将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述目标节点。
例如,根据临时节点01、临时节点02、临时节点03和临时节点04各自对应的负载量从小到大的排序后,排列的顺序是临时节点01、临时节点03、临时节点04和临时节点02,如果异常运行的临时节点的个数为2,则将临时节点01和临时节点03作为目标节点,并将该两个异常运行的临时节点上执行的任务分发给临时节点01和临时节点03,以保证各个正常运行的临时节点的负载量均衡。
S55:在所述k8s中创建与所述异常运行的临时节点数量相同的新增节点。
S56:将与所述异常运行的临时节点回收至所述zookeeper集群。
S57:将所述待配置清单中的全部任务均分给所述正常运行的临时节点和所述新增节点。
再通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担异常运行的临时节点的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡。
为了使各个正常运行的临时节点和新增节点的负载一致,所述将所述待配置清单的任务分发给所述正常运行的临时节点和所述新增节点,可以包括:将所述待配置清单的任务向所述正常运行的临时节点和所述新增节点进行周期性配置,直至将所述待配置清单的全部任务重新分配至各个所述正常运行的临时节点和所述新增节点为止。通过将待配置清单的任务向正常运行的临时节点和新增节点进行周期性配置,实现对待配置清单的任务重新分配的同时,还能够使各个正常运行的临时节点和新增节点的负载一致。
例如,正常运行的临时节点包括节点1、节点2、节点3和节点4,新增节点包括节点5、节点6,待配置清单的任务包括任务1至任务12,首先,将任务1至6分别分配至节点1至节点6中,使每一节点中均配置一个任务,再将任务7至12分别分配至节点1至节点6中,使每一节点中均配置两个任务,以使各个节点的负载一致。
可见,在上述方案中,通过在zookeeper集群中创建多个临时节点,并在多个临时节点中确定一个主节点;调用主节点采集各个临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、以及正常运行的临时节点;调用主节点对当前运行的任务清单和最新配置的任务清单分别与原始任务清单进行对比,判断原始任务清单是否发生变化;若发生变化,则根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得待配置清单;在k8s中创建新增节点,并将待配置清单中的任务分发给正常运行的临时节点和新增节点。本申请通过将根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得仅带有需要待分发任务的待配置清单,再通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担部分任务的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡,以解决现有的任务分发过程中因个别节点负载量过高而异常宕机的问题。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种任务分发装置,该任务分发装置与上述实施例中任务分发方法一一对应。如图6所示,该任务分发装置包括节点创建模块101、采集模块102、判断模块103、待配置清单获取模块104和任务分发模块105。各功能模块详细说明如下:
节点创建模块101,用于在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于从数据库中读取原始任务清单和最新配置的任务清单;所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务;
采集模块102,用于调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务;
判断模块103,用于调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
待配置清单获取模块104,用于若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务;
任务分发模块105,用于在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
在一实施例中,所述任务分发模块105包括:
第一分发单元,用于将所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点;
第二分发单元,用于将所述正常运行的临时节点上的非所述待配置清单上的任务收回,并使在所述正常运行的临时节点运行的所述待配置清单上的任务在各自对应的所述正常运行的临时节点上继续运行;
第三分发单元,用于判断所述待配置清单上是否还有未分发的任务,若有,则根据所述正常运行的临时节点和所述新增节点的负载量,确定所述未分发的任务对应的待分发节点,并将所述未分发的任务分发给所述待分发节点。
在一实施例中,所述第一分发单元包括:
新增节点创建子单元,用于在所述k8s中创建预设数量的新增节点;
回收子单元,用于将与所述预设数量相同的所述异常运行的临时节点回收至所述zookeeper集群中;
分配子单元,用于将被回收的所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点;
判断子单元,用于调用所述主节点根据各个未被收回的所述临时节点各自对应的节点状态信息,判断是否有异常运行的临时节点;
重复子单元,用于若有,则重复在所述k8s中创建预设数量的新增节点至将被回收的所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点的步骤,直至判断出没有异常运行的临时节点为止。
在一实施例中,所述任务分发模块105包括:
第一分配单元,用于将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述正常运行的临时节点;
新增节点创建单元,用于在所述k8s中创建与所述异常运行的临时节点数量相同的新增节点;
收回单元,用于将与所述异常运行的临时节点回收至所述zookeeper集群;
第二分配单元,用于将所述待配置清单中的全部任务均分给所述正常运行的临时节点和所述新增节点。
在一实施例中,所述第一分配单元包括:
目标节点确定子单元,用于根据各个所述正常运行的临时节点各自对应的负载量进行从小到大的排序,并将排序中的前N个所述正常运行的临时节点作为目标节点;其中,N为所述异常运行的临时节点的个数;
分配子单元,用于将所述异常运行的临时节点上的全部任务均分给所述目标节点。
在一实施例中,所述第二分配单元包括:
任务分发子单元,用于将所述待配置清单的任务向所述正常运行的临时节点和所述新增节点进行周期性配置,直至将所述待配置清单的全部任务重新分配至各个所述正常运行的临时节点和所述新增节点为止。
在一实施例中,所述判断模块103包括:
第一对比单元,用于根据所述原始任务清单与所述最新配置的任务清单进行对比,判断所述最新配置的任务清单上是否有新的任务、以及所述原始任务清单上是否有需要被停止的第一停止任务;
第二对比单元,用于根据所述当前运行的任务清单与所述原始任务清单进行对比,判断所述原始任务清单上是否有被停止的第二停止任务;
判断单元,用于若判断结果为有所述新的任务需要被配置、和/或所述原始任务清单上有第一停止任务和/或第二停止任务被停止,则确定所述原始任务清单发生变化;
所述待配置清单获取模块104包括:
修改单元,用于在所述原始任务清单中加入所述新的任务,和/或将所述原始任务清单上被停止的第一停止任务和/或第二停止任务从所述原始任务清单中去除,完成对所述原始任务清单的修改;
更新单元,用于将修改后的所述原始任务清单作为所述待配置清单。
本发明提供了一种任务分发装置,先通过在zookeeper集群中创建多个临时节点,并在多个临时节点中确定一个主节点;调用主节点采集各个临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、以及正常运行的临时节点;调用主节点对当前运行的任务清单和最新配置的任务清单分别与原始任务清单进行对比,判断原始任务清单是否发生变化;若发生变化,则根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得待配置清单;在k8s中创建新增节点,并将待配置清单中的任务分发给正常运行的临时节点和新增节点。本申请通过将根据最新配置的任务清单和当前运行的任务清单对原始任务清单进行修改,获得仅带有需要待分发任务的待配置清单,再通过将待配置清单中的任务分发给正常运行的临时节点和新增节点,不但能够使新增节点分担部分任务的执行,使待配置清单中的任务在临时节点和新增节点上合理运行,而且能够避免在任务需要分发时增加临时节点的负载量的问题,使各个临时节点和新增节点负载效果均衡,以解决现有的任务分发过程中因个别节点负载量过高而异常宕机的问题。
关于任务分发装置的具体限定可以参见上文中对于智能问答处方法的限定,在此不再赘述。上述任务分发装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性和/或易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的客户端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务分发方法服务端侧的功能或步骤。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是客户端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种任务分发方法客户端侧的功能或步骤。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于从数据库中读取原始任务清单和最新配置的任务清单;
调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;
调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;
在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于从数据库中读取原始任务清单和最新配置的任务清单;
调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;
调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;
在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
需要说明的是,上述关于计算机可读存储介质或计算机设备所能实现的功能或步骤,可对应参阅前述方法实施例中,服务端侧以及客户端侧的相关描述,为避免重复,这里不再一一描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种任务分发方法,其特征在于,包括:
在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于读取原始任务清单和最新配置的任务清单;所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务;
调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务;
调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务;
在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
2.如权利要求1所述的任务分发方法,其特征在于,所述在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点,包括:
将所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点;
将所述正常运行的临时节点上的非所述待配置清单上的任务收回,并使在所述正常运行的临时节点运行的所述待配置清单上的任务在各自对应的所述正常运行的临时节点上继续运行;
判断所述待配置清单上是否还有未分发的任务,若有,则根据所述正常运行的临时节点和所述新增节点的负载量,确定所述未分发的任务对应的待分发节点,并将所述未分发的任务分发给所述待分发节点。
3.如权利要求2所述的任务分发方法,其特征在于,所述将所述异常运行的临时节点上运行的待配置清单上的任务分发给各个所述新增节点,包括:
在所述k8s中创建预设数量的新增节点;
将与所述预设数量相同的所述异常运行的临时节点回收至所述zookeeper集群中;
将被回收的所述异常运行的临时节点上运行的所述待配置清单上的任务分发给各个所述新增节点;
调用所述主节点根据各个未被收回的所述临时节点各自对应的节点状态信息,判断是否有所述异常运行的临时节点;
若有,则重复在所述k8s中创建预设数量的新增节点至将被回收的所述异常运行的临时节点上运行的所述待配置清单上的任务分发给各个所述新增节点的步骤,直至判断出没有所述异常运行的临时节点为止。
4.如权利要求1所述的任务分发方法,其特征在于,所述在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点,包括:
将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述正常运行的临时节点;
在所述k8s中创建与所述异常运行的临时节点数量相同的新增节点;
将与所述异常运行的临时节点回收至所述zookeeper集群;
将所述待配置清单中的全部任务均分给所述正常运行的临时节点和所述新增节点。
5.如权利要求4所述的任务分发方法,其特征在于,所述将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述正常运行的临时节点,包括:
根据各个所述正常运行的临时节点各自对应的负载量进行从小到大的排序,并将排序中的前N个所述正常运行的临时节点作为目标节点;其中,N为所述异常运行的临时节点的个数;
将所述异常运行的临时节点上运行的待配置清单上的任务分发给所述目标节点。
6.如权利要求4所述的任务分发方法,其特征在于,所述将所述待配置清单的全部任务均分给所述正常运行的临时节点和所述新增节点,包括:
将所述待配置清单的全部任务向所述正常运行的临时节点和所述新增节点进行周期性配置,直至将所述待配置清单的任务重新分配至各个所述正常运行的临时节点和所述新增节点为止。
7.如权利要求1所述的任务分发方法,其特征在于,所述调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化,包括:
根据所述原始任务清单与所述最新配置的任务清单进行对比,判断所述最新配置的任务清单上是否有新的任务、以及所述原始任务清单上是否有需要被停止的第一停止任务;
根据所述当前运行的任务清单与所述原始任务清单进行对比,判断所述原始任务清单上是否有被停止的第二停止任务;
若判断结果为有所述新的任务需要被配置、和/或所述原始任务清单上有第一停止任务和/或第二停止任务被停止,则确定所述原始任务清单发生变化;
所述根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,包括:
在所述原始任务清单中加入所述新的任务,和/或将所述原始任务清单上被停止的第一停止任务和/或第二停止任务从所述原始任务清单中去除,完成对所述原始任务清单的修改;
将修改后的所述原始任务清单作为所述待配置清单。
8.一种任务分发装置,其特征在于,包括:
节点创建模块,用于在zookeeper集群中创建多个临时节点,并在多个所述临时节点中确定一个主节点,所述主节点用于读取原始任务清单和最新配置的任务清单;所述读取原始任务清单包括已向各个所述临时节点配置的任务,所述最新配置的任务清单包括待向各个所述临时节点最新配置的任务;
采集模块,用于调用所述主节点采集各个所述临时节点各自对应的任务信息、以及节点状态信息,并确定当前运行的任务清单、正常运行的临时节点和异常运行的临时节点;所述当前运行的任务清单包括所有所述临时节点上当前运行的全部任务;
判断模块,用于调用所述主节点对所述当前运行的任务清单和所述最新配置的任务清单分别与所述原始任务清单进行对比,判断所述原始任务清单是否发生变化;
待配置清单获取模块,用于若发生变化,则根据所述最新配置的任务清单和当前运行的任务清单对所述原始任务清单进行修改,获得待配置清单;所述待配置清单包括所述当前运行的任务清单上且位于所述最新配置的任务清单上的任务、以及所述最新配置的任务清单相对所述原始任务清单新增的任务;
任务分发模块,用于在k8s中创建新增节点,并将所述待配置清单中的任务分发给所述正常运行的临时节点和所述新增节点。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述任务分发方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述任务分发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211114651.4A CN115421891A (zh) | 2022-09-14 | 2022-09-14 | 一种任务分发方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211114651.4A CN115421891A (zh) | 2022-09-14 | 2022-09-14 | 一种任务分发方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115421891A true CN115421891A (zh) | 2022-12-02 |
Family
ID=84201904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211114651.4A Pending CN115421891A (zh) | 2022-09-14 | 2022-09-14 | 一种任务分发方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115421891A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933565A (zh) * | 2022-12-23 | 2023-04-07 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
-
2022
- 2022-09-14 CN CN202211114651.4A patent/CN115421891A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115933565A (zh) * | 2022-12-23 | 2023-04-07 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
CN115933565B (zh) * | 2022-12-23 | 2023-10-20 | 广东职业技术学院 | 一种agv任务交换方法、装置、系统和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881495B (zh) | 资源分配方法、装置、计算机设备及存储介质 | |
JP5721750B2 (ja) | 構成ドリフトの効果的管理 | |
CN107844343B (zh) | 一种复杂服务端应用系统的升级系统及方法 | |
CN110389843B (zh) | 一种业务调度方法、装置、设备及可读存储介质 | |
US20170322826A1 (en) | Setting support program, setting support method, and setting support device | |
CN104866378A (zh) | 一种协调执行任务的系统及方法 | |
CN111274033B (zh) | 一种资源部署方法、装置、服务器以及存储介质 | |
CN111897558A (zh) | 容器集群管理系统Kubernetes升级方法和装置 | |
CN113032102B (zh) | 资源重调度方法、装置、设备和介质 | |
CN107741876A (zh) | 一种虚拟机进程监控系统及方法 | |
CN112865992B (zh) | 分布式主从系统中主节点的切换方法、装置和计算机设备 | |
CN115297124B (zh) | 一种系统运维管理方法、装置及电子设备 | |
CN109697078B (zh) | 非高可用性组件的修复方法、大数据集群和容器服务平台 | |
CN110399152A (zh) | 一种设备系统双备份升级方法及装置 | |
CN115421891A (zh) | 一种任务分发方法、装置、设备及介质 | |
CN116340005B (zh) | 容器集群的调度方法、装置、设备及存储介质 | |
CN112199192A (zh) | 基于服务器部署Kubernetes集群精细化管理配额的方法及系统 | |
US9832137B1 (en) | Provisioning system and method for a distributed computing environment using a map reduce process | |
CN111767145A (zh) | 容器调度系统、方法、装置和设备 | |
CN106874047A (zh) | 分布式系统调度方法、装置及分布式系统 | |
CN104410511A (zh) | 一种服务器管理方法及系统 | |
CN112395052B (zh) | 一种面向混合负载基于容器的集群资源管理方法及系统 | |
CN109859038B (zh) | 一种区块链智能合约的生效方法及装置 | |
CN111158956A (zh) | 一种集群系统的数据备份方法及相关装置 | |
CN112612604B (zh) | 基于Actor模型的任务调度方法、装置 |
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 |