CN114138435A - 一种微服务架构下的分布式调度方法、设备及介质 - Google Patents
一种微服务架构下的分布式调度方法、设备及介质 Download PDFInfo
- Publication number
- CN114138435A CN114138435A CN202111408109.5A CN202111408109A CN114138435A CN 114138435 A CN114138435 A CN 114138435A CN 202111408109 A CN202111408109 A CN 202111408109A CN 114138435 A CN114138435 A CN 114138435A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- determining
- threads
- task
- 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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种微服务架构下的分布式调度方法、设备及介质,方法包括:确定待分发的计划任务,计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将业务微服务单元进行分布式部署;确定调度执行微服务单元分别对应的租户数据库,租户数据库只允许对应的调度执行微服务单元访问;确定调度执行微服务单元分别对应的线程数量及线程的工作状态,并确定计划任务信息;根据线程数量及线程的工作状态及计划任务信息,通过调度执行微服务单元,将租户数据库内的计划任务分发至其他调度执行微服务单元以及业务微服务单元。
Description
技术领域
本申请涉及架构设计领域,具体涉及一种微服务架构下的分布式调度方法、设备及介质。
背景技术
随着企业管理云端化、自动化地深入发展,多种异步执行的计划任务(例如付款、推送和调用等任务)的需求越来越多地提上日程,多租户、微服务架构和分布式部署又对***的高并发、高可用提出了急切的需求。
但是,现有的***中,多租户环境中的任务分发和指定微服务单元进行调度执行的架构完善度及可用性并不理想。因此,亟需一种微服务架构下的分布式调度方法。
发明内容
为了解决上述问题,本申请提出了一种微服务架构下的分布式调度方法、设备及介质,其中,方法包括:
确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
在一个示例中,确定待分发的计划任务之前,所述方法还包括:接收租户发送的微服务请求,并将所述微服务请求转化为所述计划任务;将所述计划任务存储至所述租户数据库,并在所述租户数据库中将所述计划任务的任务状态更新为待分发;向所述租户发送响应成功信息。
在一个示例中,确定所述调度执行微服务单元分别对应的租户数据库,具体包括:确定所述租户数据库中的计划任务,记录首次访问所述租户数据库的所述调度执行微服务单元;将所述调度执行微服务单元作为所述租户数据库对应的调度执行微服务单元。
在一个示例中,确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息,具体包括:根据所述线程的工作状态,确定所述服务器内线程中处于空闲状态的线程数量;确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;若是,则通过远程过程调用,将所述计划任务分发至所述指定业务微服务单元;若否,则将所述计划任务分发至所述处于空闲状态的线程数量最多的所述调度执行微服务单元。
在一个示例中,确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息,具体包括:确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;根据所述线程的工作状态,确定所述服务器内线程中处于占用状态的线程的计划任务负载量;确定所述服务器内所有线程都处于占用状态,选取所述计划任务负载量最小的线程分发所述待分发的计划任务。
在一个示例中,所述方法还包括:确定所述计划任务的工作量;若所述工作量大于预设阈值,则将所述计划任务执行时的中间数据持久化存储至主库或非所述租户数据库的任务调度库中。
在一个示例中,将所述租户数据库内的所述计划任务分发至所述服务器之后,所述任务还包括:确定所述服务器内所有线程都处于占用状态,且所述计划任务的执行权限为优先执行;判断所述执行权限为优先执行的计划任务是否要求所述业务微服务单元执行;若是,则停止所述指定业务微服务单元执行的当前计划任务,并将所述执行权限为优先执行的计划任务分发给所述指定业务微服务单元;若否,则挑选随机服务器停止执行所述当前的计划任务,并将所述执行权限为优先执行的计划任务分发给所述随机服务器。
在一个示例中,所述计划任务的定时调度底层基于Quartz实现。
本申请还提供了一种微服务架构下的分布式调度设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
本申请还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
通过本申请提出的方法能够在多租户环境下,使得***可统一管理环境中所有租户或部分租户的计划任务;且在微服务架构下,***可指定业务相关的微服务单元节点分配运算资源执行计划任务。这种架构方式能够同时满足多种异步执行的计划任务,且对多租户、微服务架构和分布式部署有着良好的高并发及可用性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中一种微服务架构下的分布式调度方法流程示意图;
图2为本申请实施例汇总一种微服务架构示意图;
图3为本申请实施例中一种微服务架构下的分布式调度设备示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及的分析方法的实现可以为终端设备,也可以为服务器,本申请对此不作特殊限制。为了方便理解和描述,以下实施例均以终端设备为例进行详细描述。
以下结合附图,详细说明本申请各实施例提供的技术方案。
如图1及图2所示,本申请实施例提供一种微服务架构下的分布式调度方法,包括:
S101:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑。
终端设备在进行调度前,首先需要确定等待分发的计划任务,这里的计划任务指的是按照定时器规则执行的业务逻辑,例如,在每天早上七点钟发出提醒,或者是每隔一小时备份自己的各种资料。也就是说,在一个有规律的时间点做一些事情,并且这个规律可以非常复杂。
S102:根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部署。
单一架构模式在项目初期很小的时候开发方便,测试方便,部署方便,运行良好。可是当应用随着时间的推进,加入的功能越来越多,最终会变得巨大,一个项目中很有可能数百万行的代码。为了防止出现因为一类服务在执行时出现错误,导致整个***都不能正常运转的情况,可以将一个***拆分为若干个模块和服务。于是,终端设备需要根据业务类型将服务器分为调度执行微服务单元以及业务微服务单元。其中,调度执行微服务单元用于访问租户数据库中的表,给各个服务器分发计划任务,调度执行微服务单元也可以用来执行计划任务,业务微服务单元则专门用来处理根据功能需求被分解的特定业务。其中,调度执行微服务单元与业务微服务单元都支持分布式部署。
例如***中有财务和人力两个模块,财务负责报销,人力负责招聘,这样就可以拆出两个微服务,这样当其中一个模块节点宕机的时候,另一个模块的业务依旧可以正常开展。需要说明的是,服务单元所对应的服务器可以是单独的一台设备,可以是有多台设备组成的***,即,分布式服务器,本申请对此不做具体限定。
S103:确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问。
终端设备在根据***的功能需求将整体***拆分出若干个微服务之后,需要确定负责分发计划任务的调度执行微服务单元以及业务微服务单元各自的数量。同时,为防止多个调度执行微服务单元同时访问同一个租户数据库中的同一个单任务,可以在单任务的分发阶段对租户数据库进行加锁。
S104:确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息。
为了合理利用计算资源,在分发任务时,终端设备需要统计服务器内的线程数量以及各个线程的工作状态,即统计各个服务器的空闲计算资源。还需要确定计划任务的各类信息,例如该计划任务可能会调用的服务功能,可能需要的计算资源量,以及是否需要特定的业务微服务单元来执行该计划任务等。
S105:根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
终端设备在统计了各个服务器中线程的数量以及线程的工作状态以及计划任务的信息之后,调度执行微服务单元会通过以上各项信息,将待分发的计划任务分发至服务器。
在一个实施例中,在对任务进行分发之前,如果租户长时间收不到微服务请求的响应通知,无疑会降低租户的软件使用体验。基于此,可以在进行任务分发之前,终端设备先确定接收到的租户发出的微服务请求,并将微服务请求转化为计划任务,然后再将计划任务存储到租户的数据库中,并将计划任务的任务状态更新为待分发。确定计划任务存储成功之后,向租户发送响应成功的信息,提高了租户的用户体验。
在一个实施例中,在确定调度执行微服务单元分别对应的租户数据库时,终端设备首先需要确定租户数据库中存储有的计划任务,并记录首次访问该租户数据库的调度执行微服务单元,建立该调度执行微服务单元与该租户库之间的对应关系,使得只允许该调度执行微服务单元访问该租户库之中的单任务。例如,租户为T1,还有两个调度执行微服务单元,分别为SU1和SU2。去分发租户T1租户数据库中的单任务时,如果是SU1先访问了T1数据库中中的数据,那么此时调度执行微服务单元SU1会给租户T1的租户数据库中加锁,此后SU2访问到T1时,会忽略掉T1中的单任务数据,即T1中的单任务只由SU1负责分发。
在一个实施例中,确定调度执行微服务单元与租户数据库之间的对应关系之后,终端设备需要确定服务器内部线程的数量以及线程的工作状态,其中,线程的工作状态包括空闲状态以及占用状态。确定各个服务器内部对应的线程池内部的空闲线程数量,即确定各个服务器对应的空闲计算资源。还需要确定该计划任务是否需要指定的业务微服务单元来执行。例如财务类工作人员提出的财务相关微服务请求,将会由拆分出的专门负责财务模块工作的业务微服务单元进行执行。
确定服务器对应的空闲计算资源之后,如果该计划任务无需通过指定业务微服务单元进行执行,则由调度执行微服务单元分配给空闲计算资源最多的调度执行微服务单元。即若被调度的计划任务没有指定业务微服务单元,该计划任务会默认在调度执行微服务单元中执行。如果该计划任务需要通过指定业务微服务单元进行执行的话,则通过远程过程调用的方式,将该计划任务分发至指定的业务微服务单元。
进一步地,如果经过统计发现,所有调度执行微服务单元中的线程都处于占用状态,此时为了提高计划任务调度的紧密性,终端设备可以统计各个调度执行微服务单元的任务负载量,这里可以预约估计调度执行微服务单元完成当前负载的所有计划任务的大致时间,然后选择任务负载量最小,也就是最先完成当前所有负载计划任务最早的调度执行微服务单元进行分发。
在一个实施例中,本架构提供两种基本作业存储类型,其中一种是内存存储,即在磨人情况在将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,因为内存中数据访问最快。不足之处是缺乏数据的持久性,当程序中途停止或***崩溃时,所有运行的信息都会丢失。另一种是通过JDBC作业存储,将调度的运行信息保存至主库或者非租户数据库的Scheduler库的表中进行持久化处理,虽然运作速度稍慢,但是即使程序中途停止,中间数据也还会留存在主库和非租户数据库中。因此,可以按照计划任务的需求灵活选取两种作业存储类型,如果计划任务的工作量较大时,为了防止数据丢失,可以选取JDBC的作业存储方式,将中间数据持久化存储至主库或者非租户数据库的任务调度库中。
在一个实施例中,有的计划任务比较重要,执行权限为优先执行,如果此时所有的服务器内所有线程都处于占用状态的话,则首先需要判断该执行权项为优先执行的计划任务是否要求指定的业务微服务单元进行执行,如果需要,则将该优先执行的计划任务分发给该业务微服务单元,并停止业务微服务单元当前正在进行的计划任务。如果不需要,则随机挑选一个调度执行微服务单元进行分发,同时停止该调度服务器当前进行的计划任务。
在一个示例中,计划任务的定时调度底层可以基于Quartz实现。
如图3所示,本申请实施例还提供了一种微服务架构下的分布式调度设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
本申请实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(f l ash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(trans itory med ia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种微服务架构下的分布式调度方法,其特征在于,包括:
确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;
根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部署;
确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;
确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;
根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
2.根据权利要求1所述的方法,其特征在于,确定待分发的计划任务之前,所述方法还包括:
接收租户发送的微服务请求,并将所述微服务请求转化为所述计划任务;
将所述计划任务存储至所述租户数据库,并在所述租户数据库中将所述计划任务的任务状态更新为待分发;
向所述租户发送响应成功信息。
3.根据权利要求1所述的方法,其特征在于,确定所述调度执行微服务单元分别对应的租户数据库,具体包括:
确定所述租户数据库中的计划任务,记录首次访问所述租户数据库的所述调度执行微服务单元;
将所述调度执行微服务单元作为所述租户数据库对应的调度执行微服务单元。
4.根据权利要求1所述的方法,其特征在于,确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息,具体包括:
根据所述线程的工作状态,确定所述服务器内线程中处于空闲状态的线程数量;
确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;
若是,则通过远程过程调用,将所述计划任务分发至所述指定业务微服务单元;
若否,则将所述计划任务分发至所述处于空闲状态的线程数量最多的所述调度执行微服务单元。
5.根据权利要求1所述的方法,其特征在于,确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息,具体包括:
确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;
根据所述线程的工作状态,确定所述服务器内线程中处于占用状态的线程的计划任务负载量;
确定所述服务器内所有线程都处于占用状态,选取所述计划任务负载量最小的线程分发所述待分发的计划任务。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述计划任务的工作量;
若所述工作量大于预设阈值,则将所述计划任务执行时的中间数据持久化存储至主库或非所述租户数据库的任务调度库中。
7.根据权利要求1所述的方法,其特征在于,将所述租户数据库内的所述计划任务分发至所述服务器之后,所述任务还包括:
确定所述服务器内所有线程都处于占用状态,且所述计划任务的执行权限为优先执行;
判断所述执行权限为优先执行的计划任务是否要求所述业务微服务单元执行;
若是,则停止所述指定业务微服务单元执行的当前计划任务,并将所述执行权限为优先执行的计划任务分发给所述指定业务微服务单元;
若否,则挑选随机服务器停止执行所述当前的计划任务,并将所述执行权限为优先执行的计划任务分发给所述随机服务器。
8.根据权利要求1所述的方法,其特征在于,所述计划任务的定时调度底层基于Quartz实现。
9.一种微服务架构下的分布式调度设备,其特征在于,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;
根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;
确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;
确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;
根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
10.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:
确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;
根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;
确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;
确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;
根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111408109.5A CN114138435A (zh) | 2021-11-19 | 2021-11-19 | 一种微服务架构下的分布式调度方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111408109.5A CN114138435A (zh) | 2021-11-19 | 2021-11-19 | 一种微服务架构下的分布式调度方法、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138435A true CN114138435A (zh) | 2022-03-04 |
Family
ID=80391461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111408109.5A Pending CN114138435A (zh) | 2021-11-19 | 2021-11-19 | 一种微服务架构下的分布式调度方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138435A (zh) |
-
2021
- 2021-11-19 CN CN202111408109.5A patent/CN114138435A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036553B2 (en) | Preempting or traversing allocated resource applications based on job priority and resource demand information | |
CN107291545B (zh) | 计算集群中多用户的任务调度方法及设备 | |
CN106897206B (zh) | 一种业务测试方法及装置 | |
US8893118B2 (en) | Migratable unit based application migration | |
Han et al. | A fault-tolerant scheduling algorithm for real-time periodic tasks with possible software faults | |
CN106406983B (zh) | 一种集群中的任务调度方法及装置 | |
CN106293893B (zh) | 作业调度方法、装置及分布式*** | |
CN110008018A (zh) | 一种批量任务处理方法、装置及设备 | |
CN107783842B (zh) | 一种分布式锁实现方法、设备及存储装置 | |
CN110471754B (zh) | 作业调度中的数据展示方法、装置、设备及存储介质 | |
US8959518B2 (en) | Window-based scheduling using a key-value data store | |
CN111784318B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110597614A (zh) | 一种资源调整方法及装置 | |
US20060090162A1 (en) | Method, system, and apparatus for establishing a software configurable computing environment | |
CN104182295A (zh) | 一种数据备份方法及装置 | |
CN106649000B (zh) | 实时处理引擎的故障恢复方法及相应的服务器 | |
CN105260297A (zh) | 一种测试数据管理***及方法 | |
CN114138435A (zh) | 一种微服务架构下的分布式调度方法、设备及介质 | |
CN107122892B (zh) | 一种车辆排班的方法及设备 | |
CN116594734A (zh) | 容器迁移方法、装置、存储介质及电子设备 | |
CN115098252A (zh) | 资源调度方法、设备及计算机可读介质 | |
US20230168940A1 (en) | Time-bound task management in parallel processing environment | |
CN115220887A (zh) | 调度信息的处理方法、任务处理***、处理器和电子设备 | |
CN114840347A (zh) | 一种mpc平台、算力池分配方法及电子设备 | |
CN115328608A (zh) | 一种Kubernetes容器垂直伸缩调节方法和装置 |
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 |