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

任务运行方法、装置、计算机设备和存储介质与流程

2022-03-26 12:35:03 来源:中国专利 TAG:


1.本技术涉及人工智能识别分类技术领域,特别是涉及一种任务运行方法、装置、计算机设备和存储介质。


背景技术:

2.随着金融机构的在线金融服务业务越来越多,银行与客户之间的传统交互方式已经发生了改变,客户关系更多地体现在各种电子合同中,基于电子数据以及相关电子证据的认定是银行系统进行在线业务的关键基础。因此,银行系统需要在非业务高峰期,通过司法区块链定时将银行系统生成的电子证据进行存证,以便于法院校验原文数据,完整回溯事件发生过程并采信证据。
3.相关技术中,根据业务逻辑,会由不同的业务服务器来定时处理银行系统产生的业务数据。为了便于监督和管理业务数据的批量处理过程,通常将处理业务数据的设置成多个定时任务,由对应的业务服务器在相应的时间点访问数据库,以获取业务数据。
4.然而,相关技术中业务服务器在执行定时任务时,存在资源利用率低,处理效率低的问题。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种能够均衡各业务服务器的处理负荷,提高数据处理效率的任务运行方法、装置、计算机设备和存储介质。
6.第一方面,提供了一种任务运行方法,该方法包括:
7.目标业务服务器获取待运行任务的执行状态;目标业务服务器为多个业务服务器中任一个业务服务器,多个业务服务器为预先配置的能够满足待运行任务所需运行资源的服务器,且各业务服务器均包括多个运行线程;
8.若待运行任务的执行状态为未执行状态,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据;
9.其中,线程启动策略包括待运行任务对应的业务数据量和目标业务服务器需要启动的运行线程数之间的对应关系。
10.在其中一个实施例中,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据,包括:
11.目标业务服务器获取待运行任务对应的业务数据量;
12.目标业务服务器根据业务数据量和线程启动策略,将待运行任务拆分为多个子任务,多个子任务与目标业务服务器启动的多个运行线程一一对应;
13.目标业务服务器通过多个运行线程执行多个子任务,得到各子任务的子任务数据,并将各子任务的子任务数据确定为待运行任务对应的目标任务数据。
14.在其中一个实施例中,目标业务服务器通过多个运行线程执行多个子任务,得到各子任务的子任务数据,包括:
15.在待运行任务中各子任务被触发时,目标业务服务器的多个运行线程中的各运行线程,从各子任务中抢占对应的目标子任务,并运行对应的目标子任务,得到各子任务的子任务数据。
16.在其中一个实施例中,目标业务服务器的多个运行线程中的各运行线程,从各子任务中抢占对应的目标子任务,包括:
17.各运行线程获取预先为各子任务配置的运行线程编号;
18.各运行线程根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务;任务锁用于锁定目标子任务的执行状态。
19.在其中一个实施例中,目标业务服务器获取待运行任务的执行状态,包括:
20.目标业务服务器在预设的任务配置表中查询待运行任务的执行状态;任务配置表至少包括多个任务的任务名称和执行状态。
21.在其中一个实施例中,任务配置表还包括多个任务的结束时刻、目标业务服务器执行各任务的处理数据量,则方法还包括:
22.目标业务服务器在得到待运行任务对应的目标任务数据后,根据运行待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
23.在其中一个实施例中,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据,包括:
24.目标业务服务器获取待运行任务的业务逻辑,业务逻辑表示待运行任务对应的业务和关联业务之间的依赖关系;
25.目标业务服务器根据业务逻辑,调用关联业务的业务数据;
26.目标业务服务器采用至少一个运行线程对待运行任务的业务数据和关联业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。
27.第二方面,提供了一种任务运行装置,该装置包括:
28.获取模块,用于获取待运行任务的执行状态;其中,获取模块配置于目标任务运行装置中,目标任务运行装置为多个任务运行装置中任一个任务运行装置,多个任务运行装置为预先配置的能够满足待运行任务所需运行资源的装置,且各业务服务器均包括多个运行线程;
29.运行模块,用于若待运行任务的执行状态为未执行状态,目标任务运行装置基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据;
30.其中,线程启动策略包括待运行任务对应的业务数据量和目标任务运行装置需要启动的运行线程数之间的对应关系。
31.在其中一个实施例中,运行模块,包括:
32.第一获取单元,用于获取待运行任务对应的业务数据量;
33.任务划分单元,用于根据业务数据量和线程启动策略,将待运行任务拆分为多个子任务,多个子任务与目标任务运行装置启动的多个运行线程一一对应;
34.运行单元,用于通过多个运行线程执行多个子任务,得到各子任务的子任务数据,并将各子任务的子任务数据确定为待运行任务对应的目标任务数据。
35.在其中一个实施例中,运行单元,还包括:
36.运行子单元,用于在待运行任务中各子任务被触发时,从各子任务中抢占对应的目标子任务,并运行对应的目标子任务,得到各子任务的子任务数据。
37.在其中一个实施例中,运行单元,还包括:
38.线程获取子单元,用于获取预先为各子任务配置的运行线程编号;
39.任务锁抢占子单元,用于根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务;任务锁用于锁定目标子任务的执行状态。
40.在其中一个实施例中,获取模块,还包括:
41.查询单元,用于在预设的任务配置表中查询待运行任务的执行状态;任务配置表至少包括多个任务的任务名称和执行状态。
42.在其中一个实施例中,任务配置表还包括多个任务的结束时刻、目标业务服务器执行各任务的处理数据量,则该装置还包括:
43.更新模块,用于在得到待运行任务对应的目标任务数据后,根据运行待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
44.在其中一个实施例中,运行模块,还包括:
45.第二获取单元,用于获取待运行任务的业务逻辑,业务逻辑表示待运行任务对应的业务和关联业务之间的依赖关系;
46.数据调用单元,用于根据业务逻辑,调用关联业务的业务数据;
47.数据处理单元,用于采用至少一个运行线程对待运行任务的业务数据和关联业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。
48.第三方面,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行该计算机程序时实现上述第一方面中任一实施例提供的方法的步骤。
49.第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一实施例提供的方法的步骤。
50.本技术实施例提供的一种任务运行方法、装置、计算机设备和存储介质,通过目标业务服务器获取待运行任务的执行状态,若待运行任务的执行状态为未执行状态,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据。其中,目标业务服务器为多个业务服务器中任一个业务服务器,多个业务服务器为预先配置的能够满足待运行任务所需运行资源的服务器,且各业务服务器均包括多个运行线程,线程启动策略包括待运行任务对应的业务数据量和目标业务服务器需要启动的运行线程数之间的对应关系。在本技术中,待运行任务部署在多个业务服务器上,且多个业务服务器均能够满足待运行任务所需运行资源,这样,多个业务服务器中至少存在一个业务服务器是可以执行该待运行任务的,避免出现因业务服务器被占用导致任务未被执行的情况。同时,因对待运行任务配置了多个业务服务器,无论是哪一个业务服务器作为目标业务服务器来运行待运行任务,均可保证待运行任务第一时间被运行,以得到对应的目标任务数据,如此,可提高每个待运行任务的任务处理效率。进一步地,基于各业务服务器的运行资源来配置待运行任务的业务服务器,使得各业务服务器的资源可以得到有效利用,避免出现资源利用率低或者资源消耗过度的情况。另外,目标业务服务器在执行待运行任务时,基于待运行任务对应的业务数据量,确定执行待运行任务时需要启动的运行线程数目。如此,在待运行任务的业务数据量较大时,目标业务服务器可以采用多线程的
方式来执行待运行任务,以提高运行待运行任务时的数据处理效率。
附图说明
51.图1为第一个实施例中提供的任务运行方法的应用环境图;
52.图2为第二个实施例中提供的任务运行方法的流程示意图;
53.图3为第三个实施例中提供的任务运行方法的流程示意图;
54.图4为第四个实施例中提供的任务运行方法的流程示意图;
55.图5为第五个实施例中提供的单机单线程运行任务示意图;
56.图6为第六个实施例中提供的多机多线程运行任务示意图;
57.图7为第七个实施例中提供的任务运行方法的流程示意图;
58.图8为第八个实施例中提供的任务运行方法的流程示意图;
59.图9为第九个实施例中提供的任务运行方法的流程示意图;
60.图10为第十个实施例中提供的任务运行装置的结构框图;
61.图11为第十一个实施例中提供的计算机设备的内部结构图。
具体实施方式
62.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
63.在银行机构系统的在线业务的电子证据存证场景中,银行系统需要在非业务高峰期,通过司法区块链定时将银行系统生成的电子证据进行存证,以便于法院校验原文数据,完整回溯事件发生过程并采信证据。
64.作为一个示例,电子证据存证是在贷款发放初期,将产生的交易登录、签约日志、人脸识别和电子合同等每一笔业务中所有需要存证的数据进行哈希运算,得出协议文件的数据指纹(即hash值),通过银行节点写入司法区块链。若出现纠纷,则能够实现一键将证据数据原文与哈希值通过司法区块链自动推送至法院平台,法院校验原文数据未经篡改,完整回溯事件发生过程并采信证据。
65.通常,根据业务逻辑,由不同的业务服务器来定时处理银行系统产生的业务数据。为了便于监督和管理业务数据的批量处理过程,通常将待处理的业务数据设置成多个定时任务,由对应的业务服务器在相应的时间点访问数据库,以获取业务数据,并对业务数据进行处理。然而,当定时任务启动,各业务服务器在批量处理业务数据时,有些业务的待处理数据量较大,则会导致处理该业务数据的业务服务器负荷过重,即业务服务器的资源消耗过大,且数据处理效率低。有些业务的待处理数据量较小,则会导致处理该业务的业务服务器的资源得不到有效利用,存在空闲资源。
66.基于上述应用场景,本技术提供了一种任务运行方法、装置、计算机设备和存储介质,以将银行系统每天产生的电子证据,在非业务高峰期将存证数据转换成哈希值后上送至司法区块链保存,待发生纠纷时供法院采用。
67.本技术提供的任务运行方法,可以应用于如图1所示的应用环境中,该应用环境包括:任务调度器110、多个业务服务器120、数据库130。任务调度器110与多个业务服务器120
通过网络或者有线接口建立通信连接,多个业务服务器120与数据库130通过网络或者有线接口建立通信连接。
68.其中,任务调度器可以是但不限于是quartz、control-m等任务调度工具。quartz为java开源工具,使用时引入相应jar包即可,是较为广泛使用的任务调度工具,其原理在于通过两个线程管理,一个线程负责任务调度通过定时查询是否有需执行任务启动任务,另一个负责管理线程池供任务分线程运行。具体使用时需设定任务执行java类、任务时间,当任务到达时间表指定时点时就会启动java类。control-m为基板管理控制器(baseboard manager controller,bmc)开发的商用软件,包括三层应用架构,分为调度管理器、调度应用服务器、调度执行代理。通过三层架构,实现了任务管理、任务调度和任务执行三部分功能的分离。
69.另外,业务服务器可以是但不限于是部署银行相关业务的一个独立服务器,或者是多个服务器组成的服务器。数据库可以是但不限于是关系型数据库、非关系型数据库等。其中,关系型数据库包括mysql、sqlserver等;非关系型数据库包括mongodb、redis、memcache等。
70.基于上述应用环境,在一个实施例中,任务调度器110用于对多个数据处理任务进行管理,将多个数据处理任务配置给多个业务服务器120,并监督各个业务服务器120的数据处理情况。业务服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现,业务服务器120用于运行数据处理任务,从数据库130中调用数据处理任务对应的业务数据,得到数据处理任务对应的目标任务数据。数据库130用于存储银行系统中各个业务产生的业务数据,以供多个业务服务器调用相应的业务数据做进一步地计算处理。
71.在一个实施例中,如图2所示,提供了一种任务运行方法,以该方法应用于图1中的任一业务服务器为例进行说明,该方法包括以下步骤:
72.步骤210:目标业务服务器获取待运行任务的执行状态;目标业务服务器为多个业务服务器中任一个业务服务器,多个业务服务器为预先配置的能够满足待运行任务所需运行资源的服务器,且各业务服务器均包括多个运行线程。
73.基于上述任务管理系统,银行系统提供的在线业务部署在多个业务服务器上,在银行系统正常运行中,每天会为客户办理相应的联机业务,从而产生大量的业务数据。在一些非业务高峰阶段,可以启动各个业务服务器,对联机交易产生的业务数据进行批量处理。也即是,在非业务高峰阶段,通过一个或多个业务服务器执行数据处理任务。
74.作为一个示例,联机交易为取款交易,余额的查询及更新、交易流水的生成、账户使用记录的生成、会计凭证的生成、存款及现金科目总账的登记等。
75.可选地,数据处理任务可以为任务调度器预先设置好的定时任务,在相应的时间点自行启动,由一个或多个具有执行权限的业务服务器来运行。本技术对于数据处理任务的触发方式不做限制,可以是定时触发,也可以采用其他触发方式触发。
76.业务服务器在运行银行系统的数据处理任务时,为使得各个业务服务器的运行资源可以得到有效利用,避免出现运行资源利用率低,或者运行资源消耗过度的问题,本技术可以将各个数据处理任务分配给不同的业务服务器去执行。
77.需要说明的是,本技术中,根据各数据处理任务的对应的业务和各业务服务器的可用运行资源,预先为各个数据处理任务确定多个业务服务器。也即是,对于一个数据处理
任务,预先配置有多个可以运行该数据处理任务的业务服务器,多个业务服务器均可执行上述步骤210。
78.其中,步骤210中的待运行任务可以是一项完整的数据处理任务,也可以是对一项数据处理任务进行切片后得到的任一子任务,本技术对此不做限制。
79.另外,不同的业务服务器,其对待运行任务的响应速度可能不同。因此,在待运行任务在预设的运行时间被触发后,各个业务服务器获取待运行任务的执行状态的速率不同,获取到待运行任务执行状态的业务服务器即为目标业务服务器。
80.在一种可能的实现方式中,多个业务服务器获取待运行任务的执行状态的实现过程可以为:预先为多个数据处理任务设置任务锁,任务锁互不相关。待运行任务为多个数据处理任务中的任一个任务。当待运行任务被触发时,多个业务服务器根据自身的服务器编号和待运行任务的任务锁,抢占待运行任务,抢到待运行任务的任务锁的业务服务器即为目标业务服务器。进一步地,目标业务服务器获取待运行任务的执行状态,以确定待运行任务是否已经被运行。
81.其中,待运行任务的执行状态包括:已执行状态和未执行状态。
82.步骤220:若待运行任务的执行状态为未执行状态,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据。
83.其中,预设的线程启动策略包括待运行任务对应的业务数据量和目标业务服务器需要启动的运行线程数之间的对应关系。
84.在一种可能的实现方式中,步骤220的实现过程可以为:若待运行任务的执行状态为未执行状态,则目标业务服务器根据待运行任务对应的业务,从数据库中调用该业务下产生的业务数据,并根据业务数据量和预设的线程启动策略,确定执行待运行任务时需要启动的线程数。进一步地,通过确定的至少一个运行线程对业务数据进行计算处理,并将处理后的数据转换成哈希值后上送至司法区块链保存。
85.可选地,目标业务服务器确定待运行任务的执行状态为未执行状态后,可以通知待运行任务对应的其他业务服务器,待运行任务即将被目标业务服务器执行,其他业务服务器无需再对待运行任务发起抢占任务锁的操作。
86.本技术实施例提供的任务运行方法中,通过目标业务服务器获取待运行任务的执行状态,若待运行任务的执行状态为未执行状态,目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据。其中,目标业务服务器为多个业务服务器中任一个业务服务器,多个业务服务器为预先配置的能够满足待运行任务所需运行资源的服务器,且各业务服务器均包括多个运行线程,线程启动策略包括待运行任务对应的业务数据量和目标业务服务器需要启动的运行线程数之间的对应关系。在该方法中,待运行任务部署在多个业务服务器上,且多个业务服务器均能够满足待运行任务所需运行资源,这样,多个业务服务器中至少存在一个业务服务器是可以执行该待运行任务的,避免出现因业务服务器被占用导致任务未被执行的情况。同时,因对待运行任务配置了多个业务服务器,无论是哪一个业务服务器作为目标业务服务器来运行待运行任务,均可保证待运行任务第一时间被运行,以得到对应的目标任务数据,如此,可提高每个待运行任务的任务处理效率。进一步地,基于各业务服务器的运行资源来配置待
运行任务的业务服务器,使得各业务服务器的资源可以得到有效利用,避免出现资源利用率低或者资源消耗过度的情况。另外,目标业务服务器在执行待运行任务时,基于待运行任务对应的业务数据量,确定执行待运行任务时需要启动的运行线程数目。如此,在待运行任务的业务数据量较大时,目标业务服务器可以采用多线程的方式来执行待运行任务,以提高运行待运行任务时的数据处理效率。
87.基于上述方法实施例,本技术中目标业务服务器在执行待运行任务时,可以采用多机单线程的方式实现,即一个业务服务器启动一个运行线程执行待运行任务,也可以采用多机多线程的方式实现,即一个业务服务器启动多个运行线程执行待运行任务。当待运行任务的业务数据量较大时,使用单线程运行待运行任务,会使得目标业务服务器资源消耗过大,且任务运行时间长,处理效率低。
88.基于此,目标业务服务器可以基于待运行任务对应的业务数据量,按照预设的线程启动策略,确定执行待运行任务时需要启动的运行线程数。
89.在一个实施例中,如图3所示,上述步骤220中目标业务服务器基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据的实现过程,包括以下步骤:
90.步骤310:目标业务服务器获取待运行任务对应的业务数据量。
91.其中,不同的数据处理任务,其对应的银行业务可能不同。在实际中,不同业务每天的产生的业务数据量也不尽相同。应该理解的是,对于一些业务,办理业务的用户人数多,则产生的业务数据多。对于另一些业务,办理业务的用户人数少,则产生的业务数据少。
92.因此,目标业务服务器可以按照预设的线程启动策略,通过待运行任务对应的业务数据量,确定是否需要启动多个运行线程,以及具体启动几个运行线程来运行待运行任务,以提高运行待运行任务时的数据处理效率。
93.在一种可能的实现方式中,线程启动策略包括业务数据量和启动的运行线程数之间的对应关系。则目标业务服务器获取待运行任务对应的业务数据量后,可以根据待运行任务对应的业务数据量,确定是否需要启动多个运行线程来运执行待运行任务,以缩短待运行任务的运行时间。
94.步骤320:目标业务服务器根据业务数据量和线程启动策略,将待运行任务拆分为多个子任务,多个子任务与目标业务服务器启动的多个运行线程一一对应。
95.在一种可能的实现方式中,步骤320的实现过程可以为:目标业务服务器根据待运行任务对应的业务数据量和线程启动策略,确定目标业务服务器在执行待运行任务时需要启动的运行线程数。进一步地,基于需要启动的运行线程数,将待运行任务按照预设的任务拆分原则拆分为多个子任务。
96.其中,子任务数量和需要启动的运行线程数量相同,一个子任务对应一个运行线程,子任务对应的运行线程具备执行子任务的资格。也即是,在子任务被触发时,可以与具有执行子任务资格的其他业务服务器的运行线程抢占子任务。
97.另外,基于待运行任务的业务数据量和线程启动策略,确定拆分的子任务的数量之后,可以基于以下任一种任务拆分原则,对待运行任务进行拆分:
98.(1)将业务数据量按照目标业务服务器执行待运行任务时需要启动的运行线程数进行等量拆分,以将待运行任务拆分为多个子任务。其中,每个子任务对应的业务数据量相
同。
99.(2)按业务数据对应的分行,对待运行任务对应的业务数据进行划分,以将待运行任务拆分为多个子任务。其中,每个子任务对应的业务数据为银行系统中同一个分行的业务数据。
100.(3)按业务数据的产生时间,对待运行任务对应的业务数据进行划分,以将待运行任务拆分为多个子任务。其中,每个子任务对应的业务数据为同一时间段产生的业务数据。
101.进一步地,为了保证每个子任务都能被顺利执行,将待运行任务拆分为多个子任务后,还需为各子任务,确定执行各子任务的至少两个运行线程。如此,保证每个子任务都可以被顺利运行,避免发生任务落空的情况。
102.步骤330:目标业务服务器通过多个运行线程执行多个子任务,得到各子任务的子任务数据,并将各子任务的子任务数据确定为待运行任务对应的目标任务数据。
103.在一种可能的实现方式中,步骤330的实现过程可以为:各个运行线程获取自身需要运行的子任务,进而在子任务被触发时,从数据库中获取该子任务对应的业务数据。进一步地,对获取的业务数据进行计算处理,得到子任务对应的子任务数据。然后,将执行各子任务后得到的子任务数据进行汇总,即可得到待运行任务对应的目标任务数据。
104.其中,对业务数据的计算处理包括但不限于:数学运算、排序、汇总、筛选、分组、计算哈希值、将计算处理后的数据进行上链等。
105.在本实施例中,目标业务服务器根据待运行任务对应的业务数据量和线程启动策略,确定拆分的子任务的数量;然后,基于确定的子任务数量,按照预设的任务拆分原则将待运行任务拆分为多个子任务,目标业务服务器启动多个运行线程来执行多个子任务。如此,采用多个运行线程并行处理待运行任务,可以缩短待运行任务的运行时间,提高了待运行任务的数据处理效率。
106.基于上述启动多运行线程处理待运行任务的技术方案,为各子任务配置至少两个运行线程。如此,当一个运行线程发生异常时,该子任务还可以由另一个运行线程来执行,避免出现子任务落空的情况。但需要说明的是,在保证每个子任务均被执行的同时,也应该避免一个子任务被多个运行线程执行,导致目标业务服务器的运行资源得不到有效利用。
107.因此,在一个实施例中,上述步骤330中目标业务服务器通过多个运行线程执行多个子任务,得到各子任务的子任务数据的实现过程包括:在待运行任务中各子任务被触发时,目标业务服务器的多个运行线程中的各运行线程,从各子任务中抢占对应的目标子任务,并运行对应的目标子任务,得到各子任务的子任务数据。
108.作为一个示例,对运行线程而言,一个运行线程可能需要在不同的时间点运行不同的子任务。也即是,一个运行线程需要运行多个子任务,各运行线程从子任务中抢占自身需要执行的目标子任务,抢占到目标子任务后,即运行对应的目标子任务。
109.作为一个示例,对于目标子任务,其对应的运行线程可以为运行线程1、运行线程2和运行线程3。也即是,运行线程1、运行线程2和运行线程3的运行资源均可以满足目标子任务的运行需求,但在实际运行时,具体由哪个运行线程执行目标子任务,是通过运行线程1、运行线程2和运行线程3对目标子任务发起的抢占请求确定的,抢到目标子任务的运行线程运行该目标子任务。
110.在一种可能的实现方式中,如图4所示,目标业务服务器的多个运行线程中的各运
行线程,从各子任务中抢占对应的目标子任务的实现过程,包括以下步骤:
111.步骤410:各运行线程获取预先为各子任务配置的运行线程编号。
112.其中,目标业务服务器预先为多个运行线程创建多个运行线程编号,一个运行线程对应一个运行线程编号,运行线程编号可以看作运行线程的标识。本技术在将待运行任务拆分多个子任务后,为各子任务配置至少两个可以运行各子任务的运行线程。
113.步骤420:各运行线程根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务;任务锁用于锁定目标子任务的执行状态。
114.在该步骤中,各运行线程根据自身可以执行的多个子任务的运行线程编号和多个子任务的任务锁,在各子任务被触发时,抢占相应的子任务,抢到子任务的运行线程运行该子任务。
115.在本实施例中,当待运行任务的业务数据量较大,将待运行任务拆分为多个子任务,目标业务服务器启动多个运行线程来执行多个子任务,多个线程运行待运行任务,可以缩短待运行任务的运行时间。并且,各运行线程根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务,可以保证单个线程执行单个子任务,提高了待运行任务的数据处理效率。
116.基于上述各实施例中所示的任务运行方法,对于待运行任务而言,本技术实施例中提供两种可能的运行方式:单机单线程运行和多机多线程运行。
117.如图5所示,在单机单线程运行待运行任务时,业务服务器1、业务服务器2和业务服务器3为预先配置的能够满足待运行任务所需运行资源的服务器,每个业务服务器采用单个运行线程来运行待运行任务。
118.在一种可能的实现方式中,基于待运行任务的任务锁,各业务服务器抢占待运行任务,抢到待运行任务的目标业务服务器获取待运行任务的执行状态,若待运行任务的执行状态为未执行状态,则目标业务服务器运行待运行任务。
119.如图6所示,在多机多线程运行待运行任务时,业务服务器1和业务服务器2为预先配置的能够满足待运行任务所需运行资源的服务器,且业务服务器1和业务服务器2均采用两个运行线程来运行待运行任务。
120.在一种可能的实现方式中,业务服务器可以采用单机多线程的方式来运行待运行任务。各业务服务器在抢占到对应的待运行任务后,可以将待运行任务拆分为多个子任务,通过自身配置的多个运行线程来运行多个子任务。
121.进一步地,对于每一项子任务,预先配置有至少两个运行线程。因此,在任一项子任务被触发时,执行该子任务的至少两个运行线程根据该子任务的任务锁和运行线程编号,抢占子任务,抢到的子任务的运行线程运行该子任务。
122.作为一个示例,如图6所示,业务服务器1包括运行线程1和运行线程2,业务服务器1将自身抢占到的待运行任务拆分为多个子任务。当子任务被触发时,运行线程1和运行线程2通过各自的运行线程编号和该子任务的任务锁,抢占子任务,抢到的运行线程运行该子任务。业务服务器2在运行自身抢占到的待运行任务时,其实现方式与业务服务器1类似,在此不再赘述。
123.在另一种可能的实现方式中,对于每一项待运行任务,可以采用多机多线程的方式来运行待运行任务。即预先将待运行任务拆分为多个子任务,并对多个业务服务器进行
并发任务配置。其中,并发任务配置包括多个子任务和多个业务服务器的对应关系。各业务服务器采用多线程来运行自身对应的子任务。
124.作为一个示例,如图6所示,将待运行任务拆分为两个子任务,这两个子任务分别由业务服务器1和业务服务器2来运行。当业务服务器1运行子任务时,运行线程1和运行线程2通过该子任务的任务锁,抢占子任务,抢到的运行线程运行该子任务。业务服务器2启动两个线程运行子任务时,其实现方式与业务服务器1类似,在此不再赘述。
125.基于上述任一实施例所示的任务运行方法,在一个实施例中,上述步骤210中目标业务服务器获取待运行任务的执行状态的实现过程包括:目标业务服务器在预设的任务配置表中查询待运行任务的执行状态,任务配置表至少包括多个数据处理任务的任务名称和执行状态。
126.一实施例中,任务配置表存储于数据库中,是基于银行系统的所有数据处理任务建立的一个总表,用于记录各个数据处理任务的配置信息和任务执行流水。
127.其中,配置信息包括预先为各项数据处理任务配置的多个业务服务器、各项数据处理任务对应的启动时间,以及各项数据处理任务对应的任务锁;任务执行流水包括任务的任务名称、执行状态和目标业务服务器标识。
128.另外,目标业务服务器在预设的任务配置表中查询待运行任务的执行状态后,若任务配置表中待运行任务的执行状态为未执行状态,则目标业务服务器在任务配置表中创建一条任务执行流水。即在任务配置表中写入待运行任务的任务名称、执行状态和目标业务服务器标识,此时写入的执行状态为已执行。同时,任务锁锁定待运行任务的执行状态,其他业务服务器不可读取和篡改。若任务配置表中待运行任务的执行状态为已执行状态,则目标业务服务器确定待运行任务已经被其他业务服务器执行,无需再重复运行。
129.进一步地,上述任务配置表还包括多个数据处理任务的结束时刻、目标业务服务器执行各数据处理任务的处理数据量,则上述任务运行方法还包括:目标业务服务器在得到待运行任务对应的目标任务数据后,根据运行待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
130.也即是,目标业务服务器在运行待运行任务后,根据待运行任务的运行结果,更新任务配置表中的任务执行流水,更新待运行任务的结束时刻和处理数据量。
131.在本实施例中,通过在数据库中建立任务配置表,记录各个数据处理任务执行情况。同时,各业务服务器在抢占数据处理任务时,可以通过查询任务配置表的方式快速获取各数据处理任务的执行状态,避免重复执行已经执行过的数据处理任务,造成业务服务器的资源浪费。
132.基于上述任一实施例所示的任务运行方法,如图7所示,目标业务服务器运行待运行任务的实现过程,包括以下步骤:
133.步骤710:目标业务服务器获取待运行任务的业务逻辑,业务逻辑表示待运行任务对应的业务和关联业务之间的依赖关系。
134.需要说明的是,在银行系统中各个业务之间会存在关联,比如,当一个账户的资金发生变化时,可能该账户对应的用户将资金转出,也可能是其他用户向该账户转入的。因此,目标业务服务器在运行待运行任务时,需要先获取待运行任务的业务逻辑,进而根据业务逻辑确定要从数据库中获取的业务数据。
135.步骤720:目标业务服务器根据业务逻辑,调用关联业务的业务数据。
136.其中,关联业务表示的是与待运行任务的业务相关联的业务,对待运行任务的业务数据进行处理时,必须用到的关联业务的业务数据。
137.作为一个示例,目标业务服务器根据业务逻辑,从数据库中调用其他业务的业务数据。
138.可选地,业务逻辑还包括其他业务数据的键值,使得目标业务服务器可以根据该键值快速从数据库中获取到其他业务的业务数据。
139.步骤730:目标业务服务器采用至少一个运行线程对待运行任务的业务数据和关联业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。
140.一种实施例中,目标业务服务器基于启动的至少一个运行线程,从数据库中获取待运行任务的业务数据和其他业务的业务数据后,对数据进行计算、整理、转换等操作后,得到待运行任务对应的目标任务数据。
141.进一步地,目标业务服务器还可以计算目标任务数据的数据指纹,进而将目标任务数据的数据指纹写入司法区块链中。
142.在本实施例中,目标业务服务器采用至少一个运行线程执行待运行任务时,根据待运行任务的业务逻辑获取其他业务的业务数据,进而对待运行任务的业务数据和其他业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。也即是,目标业务服务器在处理待运行任务的任务数据时,通过集合其他业务的业务数据,使得数据处理更为全面,进而得到的目标任务数据也更精确。
143.基于上述任一方法实施例,如图8所示,本技术还提供了另一种任务运行方法,该方法应用于本技术中的目标业务服务器,目标业务服务器包括多个运行线程,且目标业务服务器采用多个运行线程执行待运行任务。该方法包括以下步骤:
144.步骤810:在预设的任务配置表中查询待运行任务的执行状态。
145.其中,任务配置表至少包括多个数据处理任务的任务名称和执行状态。
146.步骤820:获取待运行任务对应的业务数据量。
147.步骤830:根据业务数据量和预设的线程启动策略,将待运行任务拆分为多个子任务。
148.步骤840:在待运行任务中各子任务被触发时,各运行线程获取预先为各子任务配置的运行线程编号。
149.步骤850:各运行线程根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务。
150.步骤860:各运行线程在预设的任务配置表中查询对应的目标子任务的执行状态。
151.步骤870:若目标子任务的执行状态为未执行状态,则各运行线程执行对应的目标子任务,得到各子任务的子任务数据。
152.步骤880:根据各子任务的子任务数据,确定待运行任务对应的目标任务数据。
153.步骤890:得到待运行任务对应的目标任务数据后,根据待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
154.本实施例提供的任务运行方法中各步骤,其实现原理和技术效果与前面各方法实施例中类似,在此不再赘述。
155.基于上述任一方法实施例,如图9所示,本技术还提供了又一种任务运行方法,该方法应用于本技术中的目标业务服务器,目标业务服务器包括多个运行线程,且目标业务服务器采用一个运行线程运行待运行任务。该方法包括以下步骤:
156.步骤910:在预设的任务配置表中查询待运行任务的执行状态。
157.其中,任务配置表至少包括多个数据处理任务的任务名称和执行状态。
158.步骤920:若待运行任务的执行状态为未执行状态,则获取待运行任务的业务逻辑。
159.其中,业务逻辑表示待运行任务对应的业务和关联业务之间的依赖关系。
160.步骤930:根据待运行任务的业务逻辑,调用关联业务的业务数据。
161.步骤940:对待运行任务的业务数据和关联业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。
162.步骤950:得到待运行任务对应的目标任务数据后,根据运行待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
163.本实施例提供的任务运行方法中各步骤,其实现原理和技术效果与前面各方法实施例中类似,在此不再赘述。
164.应该理解的是,虽然上述方法实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述方法实施例的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
165.在一个实施例中,如图10所示,提供了一种任务运行装置,该装置1000包括:获取模块1010和运行模块1020,其中:
166.获取模块1010,用于获取待运行任务的执行状态;其中,获取模块配置于目标任务运行装置中,该目标任务运行装置为多个任务运行装置中任一个任务运行装置,多个任务运行装置为预先配置的能够满足待运行任务所需运行资源的装置,且各任务运行装置均包括多个运行线程;
167.运行模块1020,用于若待运行任务的执行状态为未执行状态,目标任务运行装置基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据;
168.其中,线程启动策略包括待运行任务对应的业务数据量和目标任务运行装置需要启动的运行线程数之间的对应关系。
169.在其中一个实施例中,运行模块1020,包括:
170.第一获取单元,用于获取待运行任务对应的业务数据量;
171.任务划分单元,用于根据业务数据量和线程启动策略,将待运行任务拆分为多个子任务,多个子任务与目标业务服务器启动的多个运行线程一一对应;
172.运行单元,用于通过多个运行线程执行多个子任务,得到各子任务的子任务数据,并将各子任务的子任务数据确定为待运行任务对应的目标任务数据。
173.在其中一个实施例中,运行单元,还包括:
174.运行子单元,用于在待运行任务中各子任务被触发时,从各子任务中抢占对应的目标子任务,并运行对应的目标子任务,得到各子任务的子任务数据。
175.在其中一个实施例中,运行单元,还包括:
176.线程获取子单元,用于获取预先为各子任务配置的运行线程编号;
177.任务锁抢占子单元,用于根据各子任务的运行线程编号和各子任务的任务锁,抢占对应的目标子任务;任务锁用于锁定目标子任务的执行状态。
178.在其中一个实施例中,获取模块1010,还包括:
179.查询单元,用于在预设的任务配置表中查询待运行任务的执行状态;任务配置表至少包括多个任务的任务名称和执行状态。
180.在其中一个实施例中,任务配置表还包括多个任务的结束时刻、目标业务服务器执行各任务的处理数据量,则该装置1000还包括:
181.更新模块,用于在得到待运行任务对应的目标任务数据后,根据运行待运行任务的结束时刻和处理数据量,更新任务配置表中待运行任务的结束时刻和处理数据量。
182.在其中一个实施例中,运行模块1020,还包括:
183.第二获取单元,用于获取待运行任务的业务逻辑,业务逻辑表示待运行任务对应的业务和关联业务之间的依赖关系;
184.数据调用单元,用于根据业务逻辑,调用关联业务的业务数据;
185.数据处理单元,用于采用至少一个运行线程对待运行任务的业务数据和关联业务的业务数据进行批量处理,得到待运行任务对应的目标任务数据。
186.关于任务运行装置的具体限定可以参见上文中对于任务运行方法的限定,在此不再赘述。上述任务运行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
187.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储各数据处理任务的相关数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务运行方法。
188.本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
189.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
190.获取待运行任务的执行状态;
191.若待运行任务的执行状态为未执行状态,基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据。
192.本实施例提供的计算机设备在实现以上步骤时,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
193.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
194.获取待运行任务的执行状态;
195.若待运行任务的执行状态为未执行状态,基于预设的线程启动策略,采用至少一个运行线程执行待运行任务,得到待运行任务对应的目标任务数据。
196.本实施例提供的计算机可读存储介质在实现以上步骤时,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
197.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
198.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
199.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献