一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种微服务架构下的分布式调度方法、设备及介质与流程

2022-03-05 04:18:58 来源:中国专利 TAG:


1.本技术涉及架构设计领域,具体涉及一种微服务架构下的分布式调度方法、设备及介质。


背景技术:

2.随着企业管理云端化、自动化地深入发展,多种异步执行的计划任务(例如付款、推送和调用等任务)的需求越来越多地提上日程,多租户、微服务架构和分布式部署又对系统的高并发、高可用提出了急切的需求。
3.但是,现有的系统中,多租户环境中的任务分发和指定微服务单元进行调度执行的架构完善度及可用性并不理想。因此,亟需一种微服务架构下的分布式调度方法。


技术实现要素:

4.为了解决上述问题,本技术提出了一种微服务架构下的分布式调度方法、设备及介质,其中,方法包括:
5.确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
6.在一个示例中,确定待分发的计划任务之前,所述方法还包括:接收租户发送的微服务请求,并将所述微服务请求转化为所述计划任务;将所述计划任务存储至所述租户数据库,并在所述租户数据库中将所述计划任务的任务状态更新为待分发;向所述租户发送响应成功信息。
7.在一个示例中,确定所述调度执行微服务单元分别对应的租户数据库,具体包括:确定所述租户数据库中的计划任务,记录首次访问所述租户数据库的所述调度执行微服务单元;将所述调度执行微服务单元作为所述租户数据库对应的调度执行微服务单元。
8.在一个示例中,确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息,具体包括:根据所述线程的工作状态,确定所述服务器内线程中处于空闲状态的线程数量;确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;若是,则通过远程过程调用,将所述计划任务分发至所述指定业务微服务单元;若否,则将所述计划任务分发至所述处于空闲状态的线程数量最多的所述调度执行微服务单元。
9.在一个示例中,确定所述调度执行微服务单元分别对应的线程数量及所述线程的
工作状态,并确定所述计划任务信息,具体包括:确定所述计划任务是否要求指定业务微服务单元执行,以确定所述计划任务信息;根据所述线程的工作状态,确定所述服务器内线程中处于占用状态的线程的计划任务负载量;确定所述服务器内所有线程都处于占用状态,选取所述计划任务负载量最小的线程分发所述待分发的计划任务。
10.在一个示例中,所述方法还包括:确定所述计划任务的工作量;若所述工作量大于预设阈值,则将所述计划任务执行时的中间数据持久化存储至主库或非所述租户数据库的任务调度库中。
11.在一个示例中,将所述租户数据库内的所述计划任务分发至所述服务器之后,所述任务还包括:确定所述服务器内所有线程都处于占用状态,且所述计划任务的执行权限为优先执行;判断所述执行权限为优先执行的计划任务是否要求所述业务微服务单元执行;若是,则停止所述指定业务微服务单元执行的当前计划任务,并将所述执行权限为优先执行的计划任务分发给所述指定业务微服务单元;若否,则挑选随机服务器停止执行所述当前的计划任务,并将所述执行权限为优先执行的计划任务分发给所述随机服务器。
12.在一个示例中,所述计划任务的定时调度底层基于quartz实现。
13.本技术还提供了一种微服务架构下的分布式调度设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
14.本技术还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
15.通过本技术提出的方法能够在多租户环境下,使得系统可统一管理环境中所有租户或部分租户的计划任务;且在微服务架构下,系统可指定业务相关的微服务单元节点分配运算资源执行计划任务。这种架构方式能够同时满足多种异步执行的计划任务,且对多租户、微服务架构和分布式部署有着良好的高并发及可用性。
附图说明
16.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1为本技术实施例中一种微服务架构下的分布式调度方法流程示意图;
18.图2为本技术实施例汇总一种微服务架构示意图;
19.图3为本技术实施例中一种微服务架构下的分布式调度设备示意图。
具体实施方式
20.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.本技术实施例涉及的分析方法的实现可以为终端设备,也可以为服务器,本技术对此不作特殊限制。为了方便理解和描述,以下实施例均以终端设备为例进行详细描述。
22.以下结合附图,详细说明本技术各实施例提供的技术方案。
23.如图1及图2所示,本技术实施例提供一种微服务架构下的分布式调度方法,包括:
24.s101:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑。
25.终端设备在进行调度前,首先需要确定等待分发的计划任务,这里的计划任务指的是按照定时器规则执行的业务逻辑,例如,在每天早上七点钟发出提醒,或者是每隔一小时备份自己的各种资料。也就是说,在一个有规律的时间点做一些事情,并且这个规律可以非常复杂。
26.s102:根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述调度执行微服务单元及所述业务微服务单元进行分布式部署。
27.单一架构模式在项目初期很小的时候开发方便,测试方便,部署方便,运行良好。可是当应用随着时间的推进,加入的功能越来越多,最终会变得巨大,一个项目中很有可能数百万行的代码。为了防止出现因为一类服务在执行时出现错误,导致整个系统都不能正常运转的情况,可以将一个系统拆分为若干个模块和服务。于是,终端设备需要根据业务类型将服务器分为调度执行微服务单元以及业务微服务单元。其中,调度执行微服务单元用于访问租户数据库中的表,给各个服务器分发计划任务,调度执行微服务单元也可以用来执行计划任务,业务微服务单元则专门用来处理根据功能需求被分解的特定业务。其中,调度执行微服务单元与业务微服务单元都支持分布式部署。
28.例如系统中有财务和人力两个模块,财务负责报销,人力负责招聘,这样就可以拆出两个微服务,这样当其中一个模块节点宕机的时候,另一个模块的业务依旧可以正常开展。需要说明的是,服务单元所对应的服务器可以是单独的一台设备,可以是有多台设备组成的系统,即,分布式服务器,本技术对此不做具体限定。
29.s103:确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问。
30.终端设备在根据系统的功能需求将整体系统拆分出若干个微服务之后,需要确定
负责分发计划任务的调度执行微服务单元以及业务微服务单元各自的数量。同时,为防止多个调度执行微服务单元同时访问同一个租户数据库中的同一个单任务,可以在单任务的分发阶段对租户数据库进行加锁。
31.s104:确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息。
32.为了合理利用计算资源,在分发任务时,终端设备需要统计服务器内的线程数量以及各个线程的工作状态,即统计各个服务器的空闲计算资源。还需要确定计划任务的各类信息,例如该计划任务可能会调用的服务功能,可能需要的计算资源量,以及是否需要特定的业务微服务单元来执行该计划任务等。
33.s105:根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
34.终端设备在统计了各个服务器中线程的数量以及线程的工作状态以及计划任务的信息之后,调度执行微服务单元会通过以上各项信息,将待分发的计划任务分发至服务器。
35.在一个实施例中,在对任务进行分发之前,如果租户长时间收不到微服务请求的响应通知,无疑会降低租户的软件使用体验。基于此,可以在进行任务分发之前,终端设备先确定接收到的租户发出的微服务请求,并将微服务请求转化为计划任务,然后再将计划任务存储到租户的数据库中,并将计划任务的任务状态更新为待分发。确定计划任务存储成功之后,向租户发送响应成功的信息,提高了租户的用户体验。
36.在一个实施例中,在确定调度执行微服务单元分别对应的租户数据库时,终端设备首先需要确定租户数据库中存储有的计划任务,并记录首次访问该租户数据库的调度执行微服务单元,建立该调度执行微服务单元与该租户库之间的对应关系,使得只允许该调度执行微服务单元访问该租户库之中的单任务。例如,租户为t1,还有两个调度执行微服务单元,分别为su1和su2。去分发租户t1租户数据库中的单任务时,如果是su1先访问了t1数据库中中的数据,那么此时调度执行微服务单元su1会给租户t1的租户数据库中加锁,此后su2访问到t1时,会忽略掉t1中的单任务数据,即t1中的单任务只由su1负责分发。
37.在一个实施例中,确定调度执行微服务单元与租户数据库之间的对应关系之后,终端设备需要确定服务器内部线程的数量以及线程的工作状态,其中,线程的工作状态包括空闲状态以及占用状态。确定各个服务器内部对应的线程池内部的空闲线程数量,即确定各个服务器对应的空闲计算资源。还需要确定该计划任务是否需要指定的业务微服务单元来执行。例如财务类工作人员提出的财务相关微服务请求,将会由拆分出的专门负责财务模块工作的业务微服务单元进行执行。
38.确定服务器对应的空闲计算资源之后,如果该计划任务无需通过指定业务微服务单元进行执行,则由调度执行微服务单元分配给空闲计算资源最多的调度执行微服务单元。即若被调度的计划任务没有指定业务微服务单元,该计划任务会默认在调度执行微服务单元中执行。如果该计划任务需要通过指定业务微服务单元进行执行的话,则通过远程过程调用的方式,将该计划任务分发至指定的业务微服务单元。
39.进一步地,如果经过统计发现,所有调度执行微服务单元中的线程都处于占用状
态,此时为了提高计划任务调度的紧密性,终端设备可以统计各个调度执行微服务单元的任务负载量,这里可以预约估计调度执行微服务单元完成当前负载的所有计划任务的大致时间,然后选择任务负载量最小,也就是最先完成当前所有负载计划任务最早的调度执行微服务单元进行分发。
40.在一个实施例中,本架构提供两种基本作业存储类型,其中一种是内存存储,即在磨人情况在将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,因为内存中数据访问最快。不足之处是缺乏数据的持久性,当程序中途停止或系统崩溃时,所有运行的信息都会丢失。另一种是通过jdbc作业存储,将调度的运行信息保存至主库或者非租户数据库的scheduler库的表中进行持久化处理,虽然运作速度稍慢,但是即使程序中途停止,中间数据也还会留存在主库和非租户数据库中。因此,可以按照计划任务的需求灵活选取两种作业存储类型,如果计划任务的工作量较大时,为了防止数据丢失,可以选取jdbc的作业存储方式,将中间数据持久化存储至主库或者非租户数据库的任务调度库中。
41.在一个实施例中,有的计划任务比较重要,执行权限为优先执行,如果此时所有的服务器内所有线程都处于占用状态的话,则首先需要判断该执行权项为优先执行的计划任务是否要求指定的业务微服务单元进行执行,如果需要,则将该优先执行的计划任务分发给该业务微服务单元,并停止业务微服务单元当前正在进行的计划任务。如果不需要,则随机挑选一个调度执行微服务单元进行分发,同时停止该调度服务器当前进行的计划任务。
42.在一个示例中,计划任务的定时调度底层可以基于quartz实现。
43.如图3所示,本技术实施例还提供了一种微服务架构下的分布式调度设备,包括:
44.至少一个处理器;以及,
45.与所述至少一个处理器通信连接的存储器;其中,
46.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
47.本技术实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定待分发的计划任务,所述计划任务是指按照设定的定时器规则执行的业务逻辑;根据不同的业务类型,将服务器分为调度执行微服务单元以及业务微服务单元,并将所述业务微服务单元进行分布式部署;确定所述调度执行微服务单元分别对应的租户数据库,所述租户数据库只允许对应的所述调度执行微服务单元访问;确定所述调度执行微服务单元分别对应的线程数量及所述线程的工作状态,并确定所述计划任务信息;根据所述线程数量及所述线程的工作状态及所述计划任务信息,通过所述调度执行微服务单元,将所述租户数据库内的所述计划任务分发至其他调度执行微服务单元以及所述业务微服务单元。
48.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
49.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
50.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
51.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
52.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
53.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
54.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
55.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(f l ash ram)。内存是计算机可读介质的示例。
56.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(trans itory med ia),如调制的数据信号和载波。
57.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
58.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献