首页> 中国专利> 分布式系统中批任务的调度方法和系统

分布式系统中批任务的调度方法和系统

摘要

本发明公开了一种分布式系统中批任务的调度方法和系统,所述方法包括:任务调度器根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M;所述任务调度器为在线的应用服务器分配任务的分片编号;所述应用服务器根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,并以流处理的方式处理获取的任务。应用本发明可以解决分布式应用系统下的批任务调度问题,避免任务冲突与并发风险,且结合批任务与流处理的特点,以提高任务处理效率。

著录项

  • 公开/公告号CN112506632A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利权人 中国人寿保险股份有限公司;

    申请/专利号CN202011411131.0

  • 申请日2020-12-03

  • 分类号G06F9/48(20060101);

  • 代理机构11403 北京风雅颂专利代理有限公司;

  • 代理人李翔

  • 地址 100033 北京市西城区金融大街16号

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本发明涉及计算机信息处理技术领域,特别是指一种分布式系统中批任务的调度方法和系统。

背景技术

传统计算机应用业务系统的中的任务调度是主要采用Linux下的crontab模块进行,或者是基于特定语言框架的下的任务调度模块完成,例如JAVA项目中常见的Spring框架中定时任务调度Quartz模块。Quartz模块主要是对一个或一组任务预设一个定时时间,在预定时间以预定的任务配置方式,完成批任务处理。

然而,Linux下的crontab任务调度方式是一种服务器端通用的任务调度方式,缺乏分布式任务配置能力,没有流任务的配置方式。

而Spring框架下常用的Quarz模块,虽然能够在分布式环境下配置与部署。但是本身没有多任务下的协同处理能力,存在多进程同时处理一个任务时的并发风险,导致效率低。

发明内容

有鉴于此,本发明的目的在于提出一种分布式系统中批任务的调度方法和系统,可以解决分布式应用系统下的批任务调度问题,避免任务冲突与并发风险,且结合批任务与流处理的特点,以提高任务处理效率。

基于上述目的,本发明提供一种分布式系统中批任务的调度方法,包括:

任务调度器根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M;

所述任务调度器为在线的应用服务器分配任务的分片编号;

所述应用服务器根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,并以流处理的方式处理获取的任务。

其中,所述任务调度器根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M,具体包括:

所述分布式应用系统中的各应用服务器向所述任务调度器发送任务处理请求;

所述任务调度器针对每个接收到的任务处理请求,将发送该任务处理请求的应用服务器视为在线的应用服务器;

所述任务调度器根据在线的应用服务器总的硬件资源情况,确定任务的分片总数M。

其中,所述任务调度器为在线的应用服务器分配任务的分片编号,具体包括:

任务调度器针对每个接收到的任务处理请求,按接收的顺序为该任务处理请求分配一个顺序号,并将该顺序号分配给发送该任务处理请求的应用服务器,作为该应用服务器的编号;

所述任务调度器针对每个在线的应用服务器,将分片编号为d的任务分配给该应用服务器;其中,d≤M,且d=(m-1)×Y+ID;其中,ID为该应用服务器的编号,Y为在线的应用服务器的总数,m为自然数。

其中,所述应用服务器根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,具体包括:

所述应用服务器多次以批量拉取的方式从所述任务数据库中,按任务的编号从小到大的次序,获取编号满足式1的任务;

mod(TID,M)=分配给所述应用服务器的分片编号 (式1)

其中,TID表示任务的编号。

本发明还提供一种分布式系统中批任务的调度系统,包括:任务数据库、任务调度器和分布式应用系统;其中,

所述任务调度器用于根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M;并为在线的应用服务器分配任务的分片编号;

所述应用服务器用于根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,并以流处理的方式处理获取的任务。

本发明的技术方案中,任务调度器根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M;所述任务调度器为在线的应用服务器分配任务的分片编号;所述应用服务器根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,并以流处理的方式处理获取的任务。由于任务调度器将任务先在各应用服务器中进行分片编号的分配,各应用服务器可以根据分配结果拉取相应的任务进行处理,避免了任务执行的冲突与并发风险;同时每个应用服务器可以对拉取的任务进行流处理,结合了批任务与流处理的特点,从而提高了任务处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式系统中批任务的调度系统的架构示意图;

图2为本发明实施例提供的一种分布式系统中批任务的调度方法流程图;

图3为本发明实施例提供的一种子任务的分片总数确定方法流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

下面结合附图详细说明本发明实施例的技术方案。

本发明实施例提供的一种分布式系统中批任务的调度系统,架构如图1所示,包括:任务调度器101、任务数据库102和分布式应用系统103。

其中,任务调度器101用于根据分布式应用系统103中应用服务器113的在线情况,确定任务的分片总数M;并为在线的应用服务器113分配任务的分片编号。

分布式应用系统103中的应用服务器113用于根据分配结果以批量拉取的方式从任务数据库102中获取相应编号的任务,并以流处理的方式处理获取的任务。

具体地,任务调度器101在接收到分布式应用系统103中各应用服务器113发送的任务处理请求后,针对每个接收到的任务处理请求,将发送该任务处理请求的应用服务器视为在线的应用服务器;并根据在线的应用服务器总的硬件资源情况,确定任务的分片总数M;进而针对每个在线的应用服务器,将分片编号为d的任务分配给该应用服务器;其中,d≤M,且d=(m-1)×Y+ID;其中,ID为该应用服务器的编号,Y为在线的应用服务器的总数,m为自然数。

应用服务器113具体用于多次以批量拉取的方式从任务数据库102中,按任务的编号从小到大的次序,获取编号满足式1的任务;

mod(TID,M)=分配给所述应用服务器的分片编号 (式1)

其中,TID表示任务的编号。

进一步,应用服务器113还可在从任务数据库102获取的任务的个数为0后,进入设定时间段的休眠;并在设定时间段后退出休眠再次从所述任务数据库102获取任务。

进一步,应用服务器113还可在设定时间段后退出休眠之后,将X递增,继而根据X计算下一次休眠的时长;其中,X的初始值为1。

具体地,上述分布式系统中批任务的调度系统中进行批任务的调度方法的流程,如图2所示,包括如下步骤:

步骤S200:前端录入系统在接收到客户端提交的待处理任务后,按任务的提交顺序为任务依次编号后,将任务存入任务数据库102。

步骤S201:任务调度器101根据分布式应用系统103中应用服务器113的在线情况,确定任务的分片总数M。

本步骤中,确定任务的分片总数M的方法的具体流程如图3所示,可以包括如下子步骤:

子步骤S301:分布式应用系统103中的各应用服务器113可以向任务调度器101发送任务处理请求。

子步骤S302:任务调度器101针对每个接收到的任务处理请求,将发送该任务处理请求的应用服务器视为在线的应用服务器。

子步骤S303:任务调度器101根据在线的应用服务器总的硬件资源情况,确定任务的分片总数M。

具体地,任务的分片总数M可以由应用服务器上的核心数与内存情况确定,同时还可以根据待处理的总任务数进行调整。例如,应用服务器总的核心数为C,初始计算的任务的分片总数M=kC,其中k为自然数,初始值k=2;此时,如果待处理的任务总数量T仍在处于增长中,可以适当调大k的取值,但是要保证核心与内存的使用率在正常范围之内。

步骤S202:任务调度器101为在线的应用服务器113分配任务的分片编号。

具体地,任务调度器针对每个接收到的任务处理请求,按接收的顺序为该任务处理请求分配一个顺序号,并将该顺序号分配给发送该任务处理请求的应用服务器,作为该应用服务器的编号;

所述任务调度器针对每个在线的应用服务器,将分片编号为d的任务分配给该应用服务器;其中,d≤M,且d=(m-1)×Y+ID;其中,ID为该应用服务器的编号,Y为在线的应用服务器的总数,m为自然数。例如,分配结果可以如下表1所示:

表1

步骤S203:应用服务器113根据分配结果以批量拉取的方式从所述任务数据库102中获取相应编号的任务,并以流处理的方式处理获取的任务。

具体地,应用服务器113多次以批量拉取的方式从所述任务数据库中,按任务的编号从小到大的次序,获取编号满足式1的任务;

mod(TID,M)=分配给所述应用服务器的分片编号 (式1)

其中,TID表示任务的编号。

例如,应用服务器113可以一次从任务数据库102中批量拉取n个任务,并在处理完毕这批拉取的子任务后,再拉取下一批,直至数据库中编号满足上式1的任务都处理完毕。

较佳地,应用服务器113若本次拉取从任务数据库获取的子任务的个数为0,则说明任务数据库忙,或有冲突,或任务数据库中的任务都处理完毕了,则进入设定时间段的休眠;并在设定时间段后退出休眠再次从所述任务数据库获取任务。

较佳地,应用服务器113在设定时间段后退出休眠之后,将X递增,继而根据X计算下一次休眠的时长;例如,计算的休眠的时长为5*X,其中,X的初始值为1。

本发明的技术方案中,任务调度器根据分布式应用系统中应用服务器的在线情况,确定任务的分片总数M;所述任务调度器为在线的应用服务器分配任务的分片编号;所述应用服务器根据分配结果以批量拉取的方式从任务数据库中获取相应编号的任务,并以流处理的方式处理获取的任务。由于任务调度器将任务先在各应用服务器中进行分片编号的分配,各应用服务器可以根据分配结果拉取相应的任务进行处理,避免了任务执行的冲突与并发风险;同时每个应用服务器可以对拉取的任务进行流处理,结合了批任务与流处理的特点,从而提高了任务处理效率。从而解决了分布式应用系统下的批任务调度问题,即在分布式系统中能够根据应用集群的数量合理分配任务的执行,避免任务冲突与并发风险;且结合了批任务与流处理的特点,以提高任务处理效率,在任务高峰期是能够提升反馈速度;在任务低估期是能够降低对硬件与数据库的压力。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号