一种任务处理方法、装置及系统与流程

文档序号:12664859阅读:177来源:国知局
一种任务处理方法、装置及系统与流程

本申请涉及数据处理技术领域,具体涉及一种任务处理方法、装置及电子设备。本申请同时涉及一种任务分割方法、装置及电子设备,以及一种任务处理系统。



背景技术:

仓库管理系统是通过入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能,综合批次管理、物料对应、库存盘点、质检管理、虚仓管理和即时库存管理等功能综合运用的管理系统,有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理。该系统可以独立执行库存操作,与其他系统的单据和凭证等结合使用,可提供更为完整全面的企业业务流程和财务管理信息。

仓库管理系统在接收到上游ERP(Enterprise Resource Planning,企业资源计划)系统下发的订单以后,首先将订单保存到数据库中,然后需要经过的处理环节包括:预处理、波次汇总、单据打印、拣选及出库等环节。其中,预处理环节是指,通过异步方式定时扫描处于初始化状态的订单,批量对处于初始化状态的订单执行预处理任务。订单预处理任务主要包括以下操作:校验订单基础数据、订单拣选类型分类、订单占用库存及订单拆分包裹等大量业务操作。对于一个大型的仓库管理系统,每天处理的订单数目可能在几十万到几百万、甚至千万级别。订单预处理任务作为仓库管理系统订单履行流程中的第一环,如果处理速度跟不上仓库后续流程的作业速度,就会阻塞现场作业。

普通的仓库管理系统采用C/S(客户端/服务器)架构,一般都是单仓库部署,每个仓库的数据和代码都是分开的,一般一台机器只用处理一个仓库的预处理任务。新型的仓库管理系统采用B/S架构,通过分布式技术实现了多个仓库使用一份代码,数据统一存储,这样就会面临多个仓库大量订单的预处理任务落到一台机器上的可能。在系统订单量比较大的时候,如果多个仓库的大量订单预处理任务同时落到一台机器上,会导致这台机器的内存持续飙高、响应时间变慢,最后可能宕机。更进一步地,会对后续环节产生连锁反应,导致服 务器集群响应时间升高,影响仓库现场作业效率。

目前,当单台机器上的待预处理订单数量超出该机器的处理能力时,常用的解决方法是:首先对待预处理订单进行排序,然后从排序后的订单中截取前若干条订单开多线程进行处理,或者优化业务。然而,单台机器的处理能力有限,上述处理方式并不能高效率的完成大量订单的预处理任务,而且也不容易通过扩展机器的方式来解决这样的问题。

综上所述,现有技术存在无法避免单台任务执行服务器所处理的任务包括过多待处理对象的问题。



技术实现要素:

本申请提供一种任务处理方法、装置及电子设备,以解决现有技术存在无法避免单台任务执行服务器所处理的任务包括过多待处理对象的问题。本申请另外提供一种任务分割方法、装置及电子设备,以及一种任务处理系统。

本申请提供一种任务处理方法,用于分布式任务调度系统,在启动待执行任务之后,包括:

将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;

接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

可选的,所述待执行任务包括定时任务,所述方法还包括:

当系统时间达到所述定时任务的执行时间时,触发所述定时任务。

可选的,在启动待执行任务之前,还包括:

将所述待执行任务集中到任务调度服务器集群。

可选的,所述分布式任务调度系统是特定应用系统的组成部分;所述将所述待执行任务集中到任务调度服务器集群,采用如下方式:

向所述特定应用系统增加所述待执行任务时,通过分布式任务调度框架提供的任务映射方法,将所述特定应用系统中的所述待执行任务映射到所述任务调度服务器集群。

可选的,在所述获取所述第一任务执行服务器回送的、对所述待执行任务 进行分割后生成的至少一个待执行子任务之后,还包括:

存储所述至少一个待执行子任务。

可选的,所述存储所述至少一个待执行子任务,采用如下方式:

将所述至少一个待执行子任务存储到预设的子任务存储队列中。

可选的,还包括:

根据所述任务执行服务器集群中第二任务执行服务器发送的获取子任务请求,向所述任务执行服务器第二任务执行服务器发送所述待执行子任务,由所述第二任务执行服务器执行所述待执行子任务。

可选的,所述任务执行服务器集群中的各个任务执行服务器通过定时轮询方式发送所述获取子任务请求。

可选的,所述待执行任务包括订单预处理任务;所述订单预处理任务包括的待处理对象为订单。

可选的,所述订单预处理任务与特定仓库相对应;所述订单是指所述特定仓库中的订单。

相应的,本申请还提供一种任务处理装置,用于分布式任务调度系统,包括:

分配单元,用于将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;

接收单元,用于接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

可选的,所述待执行任务包括定时任务,所述装置还包括:

触发单元,用于当系统时间达到所述定时任务的执行时间时,触发所述定时任务。

可选的,还包括:

生成任务单元,用于将所述待执行任务集中到任务调度服务器集群。

可选的,还包括:

存储单元,用于存储所述至少一个待执行子任务。

可选的,还包括:

发送单元,用于根据所述任务执行服务器集群中第二任务执行服务器发送的获取子任务请求,向所述任务执行服务器第二任务执行服务器发送所述待执行子任务,由所述第二任务执行服务器执行所述待执行子任务。

相应的,本申请还提供一种电子设备,包括:

显示器;

处理器;以及

存储器,所述存储器被配置成存储任务处理装置,所述任务处理装置被所述处理器执行时,包括如下步骤:将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

此外,本申请还提供一种任务分割方法,用于分布式任务调度系统,包括:

接收任务调度服务器分配的待执行任务;

根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务;

将所述至少一个待执行子任务回送至所述任务调度服务器。

可选的,所述预设的分割规则包括:所述待执行子任务包括的待处理对象数量小于等于预设的对象量阈值。

可选的,在所述将所述待执行任务分割为至少一个待执行子任务之前,还包括:

根据预设的筛选条件,从所述待执行任务包括的多个待处理对象中选取符合所述筛选条件的待处理对象。

可选的,在所述将所述至少一个待执行子任务回送至所述任务调度服务器之前,还包括:

对所述待执行子任务包括的待处理对象做序列化处理,生成序列化的待处理对象;

相应的,所述将所述至少一个待执行子任务回送至所述任务调度服务器,采用如下方式:

将包括所述序列化的待处理对象的所述至少一个待执行子任务回送至所述任务调度服务器。

可选的,还包括:

获取所述待执行子任务;

执行所述待执行子任务。

可选的,所述获取所述待执行子任务,采用如下方式:

通过定时轮询方式,从所述任务调度服务器所属的任务调度服务器集群中请求获取所述待执行子任务。

可选的,不同的所述待执行子任务包括同一待处理对象;所述执行所述待执行子任务,包括:

对所述待处理对象进行处理时,获取所述待处理对象的同步锁。

可选的,所述待执行任务包括订单预处理任务;所述订单预处理任务包括的待处理对象包括订单。

可选的,所述订单预处理任务与特定仓库相对应;所述订单是指所述特定仓库中的订单。

可选的,在将所述订单预处理任务分割为至少一个子任务之前,还包括:

根据预设的筛选条件,从所述订单预处理任务包括的多个订单中选取符合所述筛选条件的订单;

所述预设的筛选条件包括:所述订单的状态为初始化状态;所述从所述订单预处理任务包括的多个订单中选取符合所述筛选条件的订单,包括:

根据预先存储的任务属性表,获取所述订单预处理任务对应的所述特定仓库;

根据预先存储的所述特定仓库的订单表,获取所述特定仓库包括的订单集合;

根据所述订单的状态属性,从所述订单集合中选取处于所述初始化状态的订单,作为符合所述筛选条件的订单。

相应的,本申请还提供一种任务分割装置,用于分布式任务调度系统,包括:

接收单元,用于接收任务调度服务器分配的待执行任务;

分割单元,用于根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务;

回送单元,用于将所述至少一个待执行子任务回送至所述任务调度服务器。

可选的,还包括:

筛选单元,用于根据预设的筛选条件,从所述待执行任务包括的多个待处理对象中选取符合所述筛选条件的待处理对象。

可选的,还包括:

序列化单元,用于对所述待执行子任务包括的待处理对象做序列化处理,生成序列化的待处理对象;

相应的,所述将所述至少一个待执行子任务回送至所述任务调度服务器,采用如下方式:

将包括所述序列化的待处理对象的所述至少一个待执行子任务回送至所述任务调度服务器。

可选的,还包括:

获取单元,用于获取所述待执行子任务;

执行单元,用于执行所述待执行子任务。

可选的,不同的所述待执行子任务包括同一待处理对象;所述执行单元还包括:

获取子单元,用于对所述待处理对象进行处理时,获取所述待处理对象的同步锁。

相应的,本申请还提供一种电子设备,包括:

显示器;

处理器;以及

存储器,所述存储器被配置成存储任务分割装置,所述任务分割装置被所述处理器执行时,包括如下步骤:接收任务调度服务器分配的待执行任务;根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务;将所述至少一个待执行子任务回送至所述任务调度服务器。

此外,本申请还提供一种任务处理系统,包括:任务调度服务器集群和任务执行服务器集群;其中,所述任务调度服务器包括根据上述任一项所述的任 务处理装置;所述任务执行服务器包括根据上述任一项所述的任务分割装置。

与现有技术相比,本申请具有以下优点:

本申请提供的任务处理方法、装置及系统,用于分布式任务调度系统,当分布式任务调度系统启动待执行任务之后,通过将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务,即:在处理待执行任务时首先将其分割为多个子任务,然后由任务执行服务器集群直接处理各个子任务,因而能够避免单台任务执行服务器所处理的任务包括过多待处理对象的问题,从而达到提高任务执行效率和成功率的效果。

附图说明

图1是本申请的任务处理方法实施例的流程图;

图2是本申请的任务处理装置实施例的示意图;

图3是本申请的电子设备实施例的示意图;

图4是本申请的任务分割方法实施例的流程图;

图5是本申请的任务分割方法实施例的具体流程图;

图6是本申请的任务分割装置实施例的示意图;

图7是本申请的任务分割装置实施例的具体示意图;

图8是本申请的又一电子设备实施例的示意图;

图9是本申请的任务处理系统实施例的示意图;

图10是本申请的任务处理系统实施例的具体示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请中,提供了一种任务处理方法、装置及电子设备,一种任务分割方法、装置及电子设备,以及一种任务处理系统。在下面的实施例中逐一进行详细说明。

本申请实施例提供的任务处理方法,其核心的基本思想是:在处理待执行任务时首先将其分割为多个子任务,然后由任务执行服务器集群直接处理各个子任务。由于采用了任务拆分策略,因而能够避免单台任务执行服务器所处理的任务包括过多待处理对象的问题,从而达到提高任务执行效率的效果。

请参考图1,其为本申请的任务处理方法实施例的流程图。所述任务处理方法用于分布式任务调度系统,当分布式任务调度系统启动待执行任务之后,包括如下步骤:

步骤S101:将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理。

本申请实施例所述的待执行任务是指,对多个待处理对象进行批处理的特定任务,待执行任务对应多个待处理对象。在本实施例中,待执行任务为定时任务,即:在特定时间执行并能在可预期时间内完成的程序或脚本。当系统时间达到定时任务的执行时间时,触发该定时任务,然后执行本申请实施例提供的任务处理方法。定时任务通常包括如下信息:任务名称、执行频率、开始执行时间、结束执行时间等。例如,定时任务为对特定仓库的订单进行订单预处理操作,该任务包括的待处理对象为特定仓库的订单;或者,定时任务为日志下载任务,待处理对象为日志文件等。

需要说明的是,本申请实施例提供的任务处理方法,待执行任务不仅仅局限于定时任务,还可以是实时任务。实时任务同样存在一个任务包括的待处理对象可能过多的问题,为避免实时任务包括的待处理对象过多,也可以采用本申请实施例提供的任务处理方法,将实时任务拆分为多个子任务。上述不同的任务类型,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。

本申请实施例提供的任务处理方法用于分布式任务调度系统。分布式任务调度系统涉及三种角色:任务提交方、任务调度方及任务执行方。其中,任务提交方主要负责提交任务和接收任务执行反馈结果;任务调度方负责接收和分配任务;任务执行方负责执行任务,并在执行完后反馈给任务调度方。分布式任务调度系统中的各种角色均可部署多个节点,部署在任务调度方的各个节点组成任务调度服务器集群,部署在任务执行方的各个节点组成任务执行服务器集群。一个集群内的各个节点都是无状态的,通过分布式任务调度系统能够将 各个任务分配到不同的任务执行服务器进行处理,实现自动负载均衡,从而达到提高负载量及容错能力的效果。

在本实施例中,采用Zookeeper分布式应用程序协调服务进行各个集群的master节点的选取,如果master节点发生宕机现象,Zookeeper会自动选举出新的master节点。任务调度服务器集群的调度器(即:master节点)实时收集任务及各个任务执行服务器的信息,获取到的任务(事件)会在任务队列中排队,等待与任务调度服务器集群之间具有心跳连接关系的任务执行服务器处理。任务执行服务器集群负责将分配获取的任务分割为多个子任务,然后再执行各个子任务。

本申请实施例提供的任务处理方法,任务调度服务器和任务执行服务器之间存在四种通信连接:1)待执行任务的连接,任务调度服务器通过此连接把任务发送到任务执行服务器进行任务分割;2)待执行子任务的连接,任务调度服务器通过此连接把子任务发送到任务执行服务器进行子任务的执行处理;3)心跳连接,任务调度服务器和任务执行服务器之间保持心跳连接,根据心跳连接的情况判断对方的健康状况;4)消息上报,任务执行服务器把相关任务执行情况汇给任务调度服务器,任务调度服务器接收任务执行服务器上报的任务执行情况,并作处理,必要时生成通告。

本申请实施例提供的任务处理方法的执行者为分布式任务调度系统的任务调度方。各个定时任务被部署在任务调度服务器集群中,当系统时间达到定时任务的触发执行时间时,定时任务被触发执行。通过任务调度方,将定时任务按特定规则(负载均衡,地域原则等)分配到某一台任务执行服务器执行。

在实际应用中,任务的创建者可能并非直接将任务提交给任务调度方,而是在应用系统中创建任务。为了使得任务调度方能够获取任务,在启动待执行任务之前,还包括:将所述待执行任务集中到任务调度服务器集群,以供任务调度方分配任务用。

在本实施例中,分布式任务调度系统是特定应用系统的组成部分,负责特定应用系统中全部任务的分配与调度工作。将所述待执行任务集中到任务调度服务器集群,采用如下方式:向所述特定应用系统增加所述待执行任务时,通过分布式任务调度框架提供的任务映射方法,将所述特定应用系统中的所述待执行任务映射到所述任务调度服务器集群。

分布式任务调度框架能够提供客户端SDK软件包,该软件包提供对定时任务进行增加、修改、删除及查询的功能。开发人员通过对该软件包提供的方法进行封装,并构建任务管理页面,客户端通过任务管理页面能够对定时任务进行管理。在本实施例中,任务的创建者通过特定应用系统提供的任务管理页面构建定时任务,将任务添加到特定应用系统中。从分布式任务调度系统的角度,运行特定应用系统的应用服务器也称为任务执行服务器。

在本实施例中,开发人员在应用服务器本地预先建立一张定时任务表,定时任务的基本信息包括:任务类型、开始执行时间、结束执行时间、执行频率、有效期时间段、创建人等属性。客户端通过任务管理页面向位于应用服务器本地的定时任务表添加定时任务,例如,有关商品订单方面的定时任务可以为:JOB[任务类型=订单预处理后台任务,仓库ID=上海仓、开始执行时间=6:00,结束执行时间=21:00,执行频率=20分钟,有效时间段=(2015-10-10TO2025-10-10),创建人=小红]。然后,通过分布式任务调度框架提供的SDK软件包的接口,将应用服务器本地的任务映射为分布式任务调度平台端(任务调度方)的定时任务。在本实施例中,映射到分布式任务调度平台端的任务属性包括:应用程序执行任务的接口名、触发器执行时间和频率等。

要实施本申请提供的任务处理方法,在启动待执行任务之后,任务调度方首先需要为该任务分配一台任务执行服务器,并指示该任务执行服务器对该任务进行任务分割处理。任务调用方会优先分配给比较空闲的任务执行服务器,以达到负载均衡。任务执行服务器接收到待执行任务后,会根据指示将该任务拆分为多个子任务,并将这些子任务返回给任务调度服务器。

步骤S103:接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

本申请实施例所述的待执行子任务是指,根据预设的分割规则对待执行任务进行拆分后形成的子任务。任务执行服务器生成待执行子任务后,将待执行子任务回流到任务调度服务器。当任务调度服务器接收到任务执行服务器返回的分割后的至少一个待执行子任务之后,将所述至少一个待执行子任务存储在任务调度方的待执行子任务队列中,以供任务执行服务器集群执行处理。

在实际应用中,待执行任务一般都是业务信息很少的定时任务,可以用数 据库等各种不同的存储方式实现。待执行任务的核心字段包括:应用系统执行任务的接口名、触发器执行时间和频率等。待执行子任务会包含一定量的业务信息,可以用数据库或hbase等文件存储系统实现。待执行子任务的核心字段包括:应用系统执行任务的接口名、消息内容体、消费次数和是否需要重试等。本申请实施例所述的消息内容体包括待执行子任务的处理对象,例如,在订单预处理任务的子任务的消息内容体中包括该子任务需要处理的订单号。为了能够达到先进先出的处理效果,本申请实施例将待执行子任务存储在预设的子任务存储队列中。

在实际应用中,任务调度服务器获取到待执行子任务之后,还需要根据任务执行服务器发送的获取子任务请求,把一定量的待执行子任务发送到任务执行服务器,通过任务执行服务器对待执行子任务进行执行处理。

任务调度服务器可以通过任务调度服务器和任务执行服务器之间的所述待执行子任务的连接,将所述待执行子任务发送给任务执行服务器,由任务执行服务器执行处理待执行子任务。在本实施例中,各个任务执行服务器通过定时轮询方式发送所述获取子任务请求。

需要说明的是,本申请实施例所述的待执行任务作为一级定时任务主要是通过设置的定时任务触发器触发执行的;而分割后形成的子任务的处理方式主要为:任务执行服务器集群的每台机器在后台启动一个线程定时轮询一定量的子任务到本地消费。待执行任务拆分为多个子任务后,表示待执行任务本次执行完毕,当该任务的下一次触发时间到达时再执行。

在上述的实施例中,提供了一种任务处理方法,与之相对应的,本申请还提供一种任务处理装置。该装置是与上述方法的实施例相对应。

请参看图2,其为本申请的任务处理装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种任务处理装置,包括:

分配单元101,用于将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;

接收单元103,用于接收所述第一任务执行服务器回送的、对所述待执行任 务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

可选的,所述待执行任务包括定时任务,所述装置还包括:

触发单元,用于当系统时间达到所述定时任务的执行时间时,触发所述定时任务。

可选的,还包括:

生成任务单元,用于将所述待执行任务集中到任务调度服务器集群。

可选的,还包括:

存储单元,用于存储所述至少一个待执行子任务。

可选的,还包括:

发送单元,用于根据所述任务执行服务器集群中第二任务执行服务器发送的获取子任务请求,向所述任务执行服务器第二任务执行服务器发送所述待执行子任务,由所述第二任务执行服务器执行所述待执行子任务。

请参考图3,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的一种电子设备,该电子设备包括:显示器301;处理器302;以及存储器303,所述存储器303被配置成存储任务处理装置,所述任务处理装置被所述处理器302执行时,包括如下步骤:将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所述待执行任务进行任务分割处理;接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务。

与上述的任务处理方法相对应,本申请还提供一种任务分割方法。请参考图4,其为本申请提供的一种任务分割方法的实施例的流程示意图,本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。本申请提供的一种任务分割方法用于分布式任务调度系统,包括如下步骤:

步骤S401:接收任务调度服务器分配的待执行任务。

本申请实施例提供的任务分割方法的执行者为任务执行服务器,所述的待 执行任务与上述实施例一所述的待执行任务为同一对象。本申请实施例所述的待执行任务通过任务调度服务器分配获取。任务执行服务器接收到待执行任务之后,就可以进入到步骤S403对该任务进行拆分处理。

步骤S403:根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务。

本申请实施例所述的预设的分割规则,包括但不限于:所述待执行子任务包括的待处理对象数量小于预设的对象量阈值。在实际应用中,可以根据具体应用需求设置一个或多个分割规则。在本实施例中,应用所述待执行子任务包括的待处理对象数量小于预设的对象量阈值这个分割规则,可以限制拆分后的待执行子任务所包括的待处理对象数量,以避免单台任务执行服务器所处理的任务包括过多待处理对象的问题。

例如,待执行任务为对特定仓库的订单进行订单预处理操作,该任务一次可能查询到该特定仓库处于初始状态的订单有二十万个,此时,可以先把这二十万个订单的订单标识放到内存中,在内存中按订单标识从小到大排序,20个为一个子任务,这样待执行任务就拆分出了一万个子任务,任务执行服务器集群可以直接消费的子任务。

请参考图5,其为本申请提供的一种任务分割方法的实施例的具体流程图。在本实施例中,在步骤S403之前,还包括:

步骤S501:根据预设的筛选条件,从所述待执行任务包括的多个待处理对象中选取符合所述筛选条件的待处理对象。

在实际应用中,待执行任务包括的部分待处理对象可能并不符合实际业务需求。为了提高任务的执行效率,可以预先设置一些对待处理对象的筛选条件,以筛选出符合实际业务需求的待处理对象。

例如,待执行任务为对某个仓库的订单进行订单预处理的定时任务,因此,该任务的待处理对象包括该仓库中的所有订单;然而,订单预处理操作的处理对象应该为处于初始化状态的订单,因此,将预设的筛选条件设置为订单状态为初始化状态,在将订单预处理任务分割为至少一个子任务之前,首先需要从该仓库中筛选出处于初始状态的订单。

在本实施例中,从所述订单预处理任务包括的多个订单中选取符合所述筛选条件的订单,包括以下步骤:1)根据预先存储的任务属性表,获取所述订单 预处理任务对应的所述特定仓库;2)根据预先存储的所述特定仓库的订单表,获取所述特定仓库包括的订单集合;3)根据所述订单的状态属性,从所述订单集合中选取处于所述初始化状态的订单,作为符合所述筛选条件的订单。

需要注意的是,在实际应用中,由于一个仓库中的订单量通常较大,因此,为了能够快速获取到该仓库的订单,本申请实施例将不同仓库的订单分别存储在不同的数据文件中。在实际应用中,具体的数据存储规则可以根据实际业务确定。

步骤S405:将所述至少一个待执行子任务回送至所述任务调度服务器。

通过步骤S403,将所述待执行任务分割为至少一个子任务之后,就可以将所述至少一个待执行子任务回流到任务调度方。然后,任务执行服务器集群就可以多个机器一起开启后台线程拉取子任务到本地消费。

本申请实施例提供的任务分割方法,任务调度服务器和任务执行服务器之间采用RPC(Remote Procedure Call Protocol,远程过程调用协议)接口通信方式进行数据交互。因此,在步骤S405之前,还包括:

步骤S503:对所述待执行子任务包括的待处理对象做序列化处理,生成序列化的待处理对象。

RPC在TCP协议(Transmission Control Protocol,传输控制协议)的基础上传输数据,因此,首先需要将待传递数据序列化成字节码,然后再通过TCP协议传递给其它机器。当其它机器需要读取该序列化后的数据时,需要用反序列化的方式解析收到的字节码。在本实施例中,将所述至少一个待执行子任务回送至所述任务调度服务器,采用如下方式:将包括所述序列化的待处理对象的待执行子任务回送至所述任务调度服务器。任务调度服务器接收到至少一个待执行子任务后,将子任务包括的所述序列化的待处理对象作为子任务的一个属性存储在子任务队列中,例如,上述实施例一所述的消息内容体中即存储了序列化的待处理对象。

本申请实施例提供的任务分割方法,还包括:

步骤S505:获取所述待执行子任务。

在本实施例中,任务执行服务器通过预先开启的定时线程池,采用定时轮询方式,从任务调度服务器集群中请求获取一定量的待执行子任务。

步骤S507:执行所述待执行子任务。

本申请实施例提供的任务分割方法,当任务执行服务器获取到待执行子任务之后,将待执行子任务放到本地内存,并在本地内存中另外开启多线程进行消费,逐个处理子任务包括的待处理对象。在本实施例中,获取到的待执行子任务所包括的待处理对象是序列化的待处理对象,因此,在处理待处理对象之前,还需要对序列化的待处理对象进行反序列化的处理。

需要注意的是,在实际应用中,不同的待执行子任务可能包括同一待处理对象;因此,在处理待处理对象时,首先需要获取待处理对象的同步锁,以避免不同子任务同时对同一待处理对象进行处理。

在上述的实施例中,提供了一种任务分割方法,与之相对应的,本申请还提供一种任务分割装置。该装置是与上述方法的实施例相对应。

请参看图6,其为本申请的任务分割装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种任务分割装置,用于分布式任务调度系统,包括:

接收单元601,用于接收任务调度服务器分配的待执行任务;

分割单元603,用于根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务;

回送单元605,用于将所述至少一个待执行子任务回送至所述任务调度服务器。

请参看图7,其为本申请的任务分割装置实施例的具体示意图。可选的,还包括:

筛选单元701,用于根据预设的筛选条件,从所述待执行任务包括的多个待处理对象中选取符合所述筛选条件的待处理对象。

可选的,还包括:

序列化单元703,用于对所述待执行子任务包括的待处理对象做序列化处理,生成序列化的待处理对象;

相应的,所述将所述至少一个待执行子任务回送至所述任务调度服务器,采用如下方式:

将包括所述序列化的待处理对象的所述至少一个待执行子任务回送至所述 任务调度服务器。

可选的,还包括:

获取单元705,用于获取并执行所述待执行子任务;

执行单元707,用于执行所述待执行子任务。

可选的,不同的所述待执行子任务包括同一待处理对象;所述执行单元707还包括:

获取子单元,用于对所述待处理对象进行处理时,获取所述待处理对象的同步锁。

请参考图8,其为本申请的又一电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的又一种电子设备,该电子设备包括:显示器801;处理器802;以及存储器803,所述存储器803被配置成存储任务分割装置,所述任务分割装置被所述处理器802执行时,包括如下步骤:接收任务调度服务器分配的待执行任务;根据预设的分割规则,将所述待执行任务分割为至少一个待执行子任务;将所述至少一个待执行子任务回送至所述任务调度服务器。

本申请实施例还提供了一种任务处理系统,如图9所示,该系统包括任务调度服务器集群901和任务执行服务器集群902;其中,所述任务调度服务器包括上述实施例所述的任务处理装置;所述任务执行服务器包括上述实施例所述的任务分割装置。包括所述任务处理装置的任务调度服务器,能够在启动待执行任务之后,将待执行任务分配给任务执行服务器集群中的某一台任务执行服务器,指示该任务执行服务器对待执行任务进行任务分割处理;相应的,包括所述任务分割装置的任务执行服务器,在接收到任务调度服务器分配的待执行任务后,能够根据预设的分割规则,将待执行任务分割为至少一个待执行子任务,并将至少一个待执行子任务回送至任务调度服务器。任务调度服务器接收到任务执行服务器回流的至少一个待执行子任务后,将待执行子任务存储到待子任务队列中,等待任务执行服务器处理。任务执行服务器将至少一个待执行子任务回送至任务调度服务器后,通过定时轮询方式,从任务调度服务器集群中请求获取待执行子任务,并逐个处理待执行子任务包括的各个待处理对象。

请参考图10,其为本申请的任务处理系统实施例的具体示意图。本实施例 的应用场景为仓库管理系统,任务处理系统作为仓库管理系统的组成部分,负责对订单预处理任务进行分发处理,以防止应用服务器负载过高的现象发生。本实施例的任务处理系统实现了一种订单预处理任务的分发策略,把不同仓库的大批量订单预处理任务拆分成很多小的二级任务(即:子任务)分发到任务调度服务器集群(即:DTS服务器集群),任务调度服务器集群再把子任务平均分配给应用服务器集群(即:任务执行服务器集群)。图10种的DTS是一款实际可用的分布式任务调度产品,为用户提供分布式环境下的任务调度和任务分发功能,DTS服务器集群作为仓库管理系统的二级任务(即:子任务)存储的中心节点。该任务处理系统首先通过页面功能,将各个仓库的订单预处理定时任务维护到DTS集群中,当其中某一个订单预处理定时任务被触发时,对该任务的具体处理流程如下所述:

1)DTS服务端选择应用服务端的某一台机器来执行该任务;

2)被选择的应用服务端机器从相关订单表中筛选出该任务包括的大量订单;

3)应用服务器按照任务分割规则把这批订单拆分为多个小的二级任务(即:子任务),并把拆分好的二级任务回流到DTS服务端中;

4)DTS服务端实现了一个存储队列,用于保存回流回来的二级任务;

5)针对DTS服务端存储的二级任务,所有应用服务端机器都可以定时轮询消费DTS服务端的二级任务。

通过上述方式对订单预处理任务进行分发处理时,如果预处理任务对应的订单量过多,可以增加任务调度服务器集群的机器数量,以提升任务执行效率。

需要注意的是,由于二级任务的分发依赖于扫描数据表计算出来的数据,因此,不同二级任务的订单列表可能包含相同的订单。为避免同一订单被不同任务并发处理,需要对单个订单的预处理任务做一个同步锁,伪SQL如下:Update order set version=1 where version=0;如果该SQL语句的返回结果为1,则表示获取到这条订单预处理的同步锁,返回结果为0,则代表该订单被其它任务占用,本任务将放弃该订单。

本申请提供的任务处理方法、装置及系统,用于分布式任务调度系统,当分布式任务调度系统启动待执行任务之后,通过将所述待执行任务分配给任务执行服务器集群中的第一任务执行服务器,指示所述第一任务执行服务器对所 述待执行任务进行任务分割处理;接收所述第一任务执行服务器回送的、对所述待执行任务进行分割后生成的至少一个待执行子任务,将所述至少一个待执行子任务作为所述任务执行服务器集群需要执行的任务,即:在处理待执行任务时首先将其分割为多个子任务,然后由任务执行服务器集群直接处理各个子任务,因而能够避免单台任务执行服务器所处理的任务包括过多待处理对象的问题,从而达到提高任务执行效率和成功率的效果。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

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

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

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