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

一种任务调度方法、装置和电子设备与流程

2021-10-27 21:58:00 来源:中国专利 TAG:
1.本发明涉及分布式系统任务处理
技术领域
:,具体涉及一种任务调度方法、装置和电子设备。
背景技术
::2.银行核心系统在银行整个it架构体系中处于核心位置,担负着最为核心的记账功能,为银行存、贷、支付、客户等业务提供基础支撑。随着银行业务不断的发展,对银行核心系统的高并发处理及响应能力、海量数据批处理能力、扩展能力都提出了更高的要求。在“自主可控”及“降本增效”的大背景下,随着java语言等开源技术的不断成熟,基于开源技术的分布式架构成为越来越多银行核心系统、互联网金融系统的选择。目前批处理及异步任务调度机制的实现多基于开源框架,如quartz、airflow或者基于底层数据库,如oracle,提供基础调度能力。调度系统主要承担请求受理、直接分发的功能。任务的分发一般基于消息队列机制发送至本机不同线程或者不同机器进行执行。部署上采用与应用合并集中式部署,或者采用调度系统、批处理系统独立部署。但是目前的批处理任务异步调度框架,存在着以下至少一种问题:3.1、在现有的异步任务调度解决方案中,调度节点更多的承担任务提取与简单分发功能,对于任务本身执行的结果无法感知,无法应对更加复杂的实时异步批量请求场景,如联机批量请求,每次请求都包括多个处理步骤,每个步骤本质都是一个异步处理任务,并且上一步骤的处理结果决定后续步骤的执行策略。4.2、分布式数据库环境下,批处理数据多采用分库分节点存储。为提升处理性能,调度系统需要将一个批处理任务,基于数据分片将任务拆分为多个子任务并发处理,并汇总处理结果,此过程对外需要透明。目前尚无成熟的异步调度任务继续拆分子任务的解决方案。5.3、分布式架构下,异常场景更加复杂频繁,已受理的异步请求在节点宕机等场景下会出现任务丢失的情况,从而导致原任务无法继续处理。技术实现要素:6.本技术的目的旨在至少能解决上述的技术缺陷之一。本技术所采用的技术方案如下:7.第一方面,本技术实施例公开了一种任务调度方法,所述任务为异步任务,所述方法包括:8.将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索;9.次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点;其中所述应用节点用于执行其分配到的任务块。10.进一步地,所述次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点包括:11.驱动第n‑1个线程将第n‑1个线索对应的第n‑1个任务块分配至对应的应用节点后,释放所述第n‑1个线程资源;12.在时间t内,驱动第n个线程将第n个线索对应的第n个任务块分配至对应的应用节点。13.进一步地,当所述时间t小于预设阈值时,所述方法还包括:14.在释放所述第n‑1个线程资源之后登记第n个子任务块到缓存中;15.在时间t内,驱动第n个线程将登记在缓存中的第n个任务块分配至对应的应用节点。16.进一步地,在所述时间t大于预设阈值时,所述方法还包括:17.在释放所述第n‑1个线程资源之后登记第n个子任务块的标识信息到缓存中;18.在时间t内,驱动第n个线程根据登记在缓存中的第n个任务块的标识信息读取第n个任务块;19.所述第n个线程将读取的第n个任务块分配至对应的应用节点。20.进一步地,所述方法还包括:21.在驱动第n个线程分配第n个任务块之前,判断所述任务已经被执行完毕的逻辑语句;22.驱动第n个线程将第n个任务块分配至对应的应用节点时不再执行已经被执行完毕的逻辑语句。23.进一步地,所述方法还包括:24.设置记忆保障模型记录不能被第n个线程执行的任务逻辑语句;25.当第n个线程确定未被执行的任务逻辑语句为不能被执行的任务逻辑语句时,所述第n个线程重新执行所述任务的所有逻辑语句。26.进一步地,所述方法还包括:27.根据所述应用节点的数量分配线索。28.第二方面,本技术实施例提供了一种任务调度装置,所述装置包括:拆分模块和调度模块,其中,29.所述拆分模块,用于将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索;30.所述调度模块,用于次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点;其中所述应用节点用于执行其分配到的任务块。31.第三方面,本技术实施例提供了一种电子设备,包括处理器和存储器;32.所述存储器,用于存储操作指令;33.所述处理器,用于通过调用所述操作指令,执行上述任一实施例中所述的方法。34.第四方面,本技术实施例提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。35.本技术实施例提供任务调度方案将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索;次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点。在调度分配任务块的过程中还设计了中断/重入机制,以避免由于异步任务应用长时间阻塞操作消耗大量线程资源。本技术的采用分布式架构,扩展更加灵活,处理性能更优,能够应对银行核心系统高并发实时异步处理请求。并且设计了中断重入及记忆机制,实现了异步任务拆分子任务,同时本技术的可选实例支持异步任务持久化机制,能帮助银行核心业务系统实现基于分布式应用节点对批处理异步任务类的业务进行全面可靠的支持。附图说明36.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。37.图1为本技术实施例提供的一种任务调度方法的流程示意图;38.图2为本技术实施例提供的一种任务调度装置的示意图;39.图3为本技术实施例提供的一种电子设备的结构示意图。具体实施方式40.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本发明的限制。41.本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式,其中的“第一”“第二”等只是为了介绍清楚方案而进行的对象区分定义,并不对对象本身进行限制,当然“第一”和“第二”限定的对象可能是同一个终端、设备和用户等,也可能是同一种终端、设备和用户。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。此外应理解,本技术实施例中“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一(项)个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a、b、c可以是单个,也可以是多个。42.下面介绍一些下面实施例可能用到或用于辅助解释实施例技术方案的概念、术语或装置:43.图1示出了本技术实施例提供的一种任务调度的流程示意图,所述任务为异步任务,如图1所示,该方法主要可以包括:44.s101、将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索,根据所述应用节点的数量分配线索。45.线索是一个异步任务运行时的最小单位。一个异步任务对象中包含一个或多个异步任务线索对象,每个线索对象中都会有自己的上下文记忆,任何时刻,异步任务对象都只会以其中一个异步任务线索对象为基础运行,这就是当前线索。一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索。每一个任务的执行是由具体的执行逻辑构成的,语句就用来定义或标识执行逻辑46.s102、次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点;其中所述应用节点用于执行其分配到的任务块。47.本技术实施例的任务调度方案可以利用多线索机制将一个异步任务拆分多个任务块从调度系统并发提交到分布式应用集群处理,这里的并发提交其实是一种假多线程并发,实际是单线程,这是由于一个任务的所有任务块提交至分布式应用集群(应用集群是由多个应用节点构成,应用节点是应用集群中具体用于处理任务块的最小单元),如果应用集群处理的速度比较快,在某一时间段内就会有多个任务块的批量应答回来,也就是会有多个重入动作,而同一时刻,同一个异步任务只能基于一个线索执行。48.在本技术进一步的实施例中,所述次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点包括:49.步骤1、驱动第n‑1个线程将第n‑1个线索对应的第n‑1个任务块分配至对应的应用节点后,释放所述第n‑1个线程资源;50.步骤2、在时间t内,驱动第n个线程将第n个线索对应的第n个任务块分配至对应的应用节点。51.该申请实施例的步骤1和2的设计是基于由于异步任务应用长时间阻塞操作(通信io、文件io等)消耗大量线程资源而设计的中断/重入机制的中断环节。中断/重入是指应用在运行过程中可以中断(在java中,可以用抛出异常来实现中断)释放出线程资源,在此后某个时刻,用一个新的线程重新调用该应用先前的入口方法,该应用就能够让线程恢复中断时的上下文,并从中断处继续向下运行。52.在本技术实施例中,在驱动第n个线程分配第n个任务块之前,需要判断所述任务已经被执行完毕的逻辑语句;驱动第n个线程将第n个任务块分配至对应的应用节点时不再执行已经被执行完毕的逻辑语句。以由语句1、语句2(长时间阻塞的通信io操作,支持中断/重入)、语句3构成的异步任务应用为例,首先应用第一次在线程1执行时,它会在语句2执行时抛出中断异常,并被框架层捕获,框架层继而执行中断后处理逻辑(通常是异步发起会导致线程长时间阻塞、或者起到任务控制的操作的请求),执行结束后,释放线程1资源。其次在此后某个时刻,语句2相应的动作执行结束并返回应答,框架将使用一个新的线程2重新调度起该应用,从先前的入口进入执行(同时恢复应用中断时的上下文),在执行到语句1时,发现语句1已执行过就跳过不执行,继续执行到语句2,发现语句2也执行过并且应答回来了,将不再执行语句2的动作(长时间阻塞的通信io操作)并直接处理操作返回的应答,继续执行到语句3,发现语句3未执行过,将执行语句3直至结束,释放线程2资源。53.在具体应用场景中,除长时间阻塞操作需要能够以中断/重入的方式实现外,一些起到任务控制的操作也可能需要以中断/重入方式实现,比如说异步任务应用的执行需要满足某个条件时才能往下执行(如有些联机批交易需要拿到令牌后才能执行,其对应的是获取令牌的操作),或者执行时机需要控制在某个时间段内(如联机批时间段截留,其对应的是设置闹钟到时提醒的操作)。当然,实际运行过程中,异步任务应用是否需要中断/重入依具体应用场景而定。在本技术具体实施例中,异步任务应用运行时的中断/重入机制因中断是否持久化而具有两种实现模式:54.(1)当所述时间t小于预设阈值时,即中断非持久化时重入的实现方式包括:55.步骤1、在释放所述第n‑1个线程资源之后登记第n个子任务块到缓存中;56.步骤2、在时间t内,驱动第n个线程将登记在缓存中的第n个任务块分配至对应的应用节点。57.中断非持久化适用场景为任务块分配调度可能会中断,任务处理对处理性能要求高但无需保证可靠性,例如:日终批调度任务。此模式下,异步任务在运行开始和结束时会对atr表(异步任务登记表)状态作登记和更新;运行过程中异步任务对象的状态维护在一个登记异步任务对象的hashtable缓存中,运行结束后从缓存中删除。为保证异步任务系统运行的稳定性,可以会对hashtable缓存中能够处理的异步任务数量上限作限制(上限默认值2000)。58.(2)当在所述时间t大于预设阈值时即中断持久化时重入的实现方式包括:59.步骤1、在释放所述第n‑1个线程资源之后登记第n个子任务块的标识信息到缓存中;60.步骤2、在时间t内,驱动第n个线程根据登记在缓存中的第n个任务块的标识信息读取第n个任务块;61.步骤3、所述第n个线程将读取的第n个任务块分配至对应的应用节点。62.中断持久化适用于任务块调度分配可能会中断,异步任务对处理性能可作适当牺牲但需保证一定的可靠性,例如联机批调度任务。此模式下,异步任务除在运行开始和结束时会操作atr表,每当中断时也会将异步任务对象的状态序列化成xml报文格式更新到atr表中。框架支持直接更新xml报文到atr表,如果报文比较大,也支持对xml报文进行压缩后再更新到atr表(compressible,压缩开关,是个系统级别的参数,以属性‑值的方式配置在文件中的异步任务处理器的标签内。如果开关打开,框架在异步任务中断后持久化时会对异步任务对象的xml报文进行压缩后再更新到atr表,重入时支持从数据库中先解压缩报文然后反序列化报文得到异步任务对象)。63.在本技术实施例中,所述方法还设置记忆保障模型记录不能被第n个线程执行的任务逻辑语句;当第n个线程确定未被执行的任务逻辑语句为不能被执行的任务逻辑语句时,所述第n个线程重新执行所述任务的所有逻辑语句。即在同一个异步任务应用请求的处理过程中,发生中断和重入后应用的接口中的逻辑会被反复调用,对于不可被重复执行的逻辑,我们需要作记忆。记忆保障使得重入时不能再次执行的步骤不再执行,包括但不限于:不同时刻执行该步骤时无法保证都能获得同样的处理结果(比如获取系统时间,不同时刻执行值也将不一样),或者再次执行该步骤时会让相关数据状态发生不能接受的改变(比如第一次执行该步骤时将某一作业日志表的日志状态更新为处理中状态,后续处理逻辑又将其更新为完成状态,再次执行该步骤时又将其更新为处理中状态),或者执行该步骤时会消耗大量资源(比如压缩这种cpu资源密集型的步骤)等等。上述记忆保障的实现是通过设置记忆类模型设计完成的,记忆类模型主要包括:64.(1)记忆类(memory),这是所有具体记忆类的基类。记忆对象被用来对应一个已执行的需要记忆的步骤,记录该步骤的处理结果,如果处理结果标识文件返回的结果为false时意味着步骤已执行过不可再次执行,返回结果为true时则表示将第一次执行该步骤。65.记忆登记类(memoryregister),用来登记一组记忆对象,记忆登记对象自身则登记在线索上。记忆登记对象被用来保存、恢复所有与一个具体异步任务请求(线索)处理过程中已执行的需要记忆的步骤对应的记忆对象中。66.本技术的上述实施例任务的所有分块交由分布式应用集群处理,如果处理的速度比较快,在某一时间段内就会有多个批量应答回来,也就是会有多个重入动作,而同一时刻同一个异步任务只能基于一个线索执行,所以需要对同一异步任务的并发执行动作作同步控制。框架层从2个层面来对同一异步任务的并发执行动作作同步控制(假设将一次resume重入调用理解为异步任务的一个事件触发):67.第一层是在同一异步任务的事件交由工作线程池后,工作线程池真正执行事件前(未调起beginprocess或resume接口)对事件进行排队处理。68.第二层是在同一异步任务事件交由工作线程池后,工作线程池真正执行事件时(调起beginprocess或resume)作并发同步控制(主要应对第一层控制失效状况)。69.在上述申请实施例的基础上,可设置任务超时时间利用clock时钟服务到点执行重入以实现超时机制,采用任务超时检查和重试操作可以提高任务调度方案的高可用性。70.在可选实施例中,还可以在上述实施例的基础对应用集群进行心跳检测,即定时检测应用节点网络和服务状态以判断是否对异常的应用节点进行任务块分配。71.基于图1所示的任务调度方法,另一方面本技术实施例提供了一种任务调度装置,所述装置如图2所示,所述装置可以包括:所述装置包括:201拆分模块和202调度模块,其中,72.所述201拆分模块,用于将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索;73.所述202调度模块,用于次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点;其中所述应用节点用于执行其分配到的任务块。74.可以理解的是,本实施例中的任务调度装置的上述各组成设备具有实现图1中所示的实施例中的方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或系统。上述模块和系统可以是软件和/或硬件,上述各模块和系统可以单独实现,也可以多个模块和系统集成实现。对于上述各模块和系统的功能描述具体可以参见图1中所示实施例中的方法的对应描述,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。75.可以理解的是,本发明实施例示意的结构并不构成对任务调度装置的具体结构的具体限定。在本技术另一些实施例中,任务调度装置可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。76.本技术实施例提供了一种电子设备,包括处理器和存储器;77.存储器,用于存储操作指令;78.处理器,用于通过调用操作指令,执行本技术任一实施方式中所提供的任务调度方法。79.作为一个示例,图3示出了本技术实施例所适用的一种电子设备的结构示意图,如图3所示,该电子设备300包括:处理器301和存储器303。其中,处理器301和存储器303相连,programmablereadonlymemory,电可擦可编程只读存储器)、cd‑rom(compactdiscreadonlymemory,只读光盘),也可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs),或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。86.可选的,存储器303用于存储执行本技术方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的应用程序代码,以实现本技术任一实施方式中所提供的任务调度方法。87.存储器303可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器301通过运行存储在存储器303的指令,从而执行电子设备300的各种功能应用以及数据处理。存储器303可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,应用程序的代码等。存储数据区可存储电子设备300使用过程中所创建的数据(比如相机应用采集的图像、视频等)等。88.存储器303还可以存储本技术实施例提供的任务调度方法对应的一个或多个计算机程序。该一个或多个计算机程序被存储在上述存储器303中并被配置为被该一个或多个处理器301执行,该一个或多个计算机程序包括指令,上述指令可以用于执行上述相应实施例中的各个步骤。89.当然,本技术实施例提供的任务调度方法的代码还可以存储在外部存储器中。这种情况下,处理器301可以通过外部存储器接口运行存储在外部存储器中的任务调度方法的代码,处理器301可以控制运行任务调度流程。90.显示屏305包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight‑emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrixorganiclightemittingdiode的,amoled),柔性发光二极管(flexlight‑emittingdiode,fled),miniled,microled,micro‑oled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,电子设备300可以包括1个或n个显示屏305,n为大于1的正整数。显示屏305可用于显示由用户输入的信息或提供给用户的信息以及各种图形用户界面(graphicaluserinterface,gui)。例如,显示屏305可以显示照片、视频、网页、或者文件等。91.本技术实施例提供的电子设备,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。92.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的任务调度方法。93.本技术实施例提供的计算机可读存储介质,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。94.本技术实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的方法。本技术实施例提供的计算机程序产品,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。95.本技术上述实施例公开的任务调度方案通过将任务拆分为一个任务块集合n={1,2,3…n};其中n为大于等于2的正整数;其中一个任务块对应一个线索;次序驱动n个线程将与n个线索对应的任务块次序分配至n个应用节点;其中所述应用节点用于执行其分配到的任务块。96.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,还可以做出若干改进和润饰,这些变化、替换、改进和润饰也应视为都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜