CN111538573A - 异步任务处理方法、装置及计算机可读存储介质 - Google Patents

异步任务处理方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN111538573A
CN111538573A CN202010227969.8A CN202010227969A CN111538573A CN 111538573 A CN111538573 A CN 111538573A CN 202010227969 A CN202010227969 A CN 202010227969A CN 111538573 A CN111538573 A CN 111538573A
Authority
CN
China
Prior art keywords
task
asynchronous task
asynchronous
fragmentation
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010227969.8A
Other languages
English (en)
Inventor
徐国熙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010227969.8A priority Critical patent/CN111538573A/zh
Publication of CN111538573A publication Critical patent/CN111538573A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据处理技术领域,揭露了一种异步任务处理的方法,包括:接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架建立所述源异步任务的分片项,其中,所述机器地址与所述分片项中的索引一一对应;通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。本发明还提出一种异步任务处理装置、电子设备以及一种计算机可读存储介质。本发明可以实现异步任务的处理。

Description

异步任务处理方法、装置及计算机可读存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种异步任务处理方法、装置、电子设备及计算机可读存储介质。
背景技术
异步任务是区别于同步任务的概念,其中,所述同步任务指的是当请求执行某个功能任务时,在没有响应结果前,所述请求就无法返回,即所述请求必须阻塞,等到响应才进行下一步操作。所述异步任务指的是,当执行某个功能任务时,并不需要立即得到响应就可以进行下一步操作,何时得到响应就在何时处理其操作。随着信息技术的不断发展、需求的不断扩大,企业迫切需要高效、快捷的处理各种异步任务请求。目前,传统的异步框架处理异步任务时,存在以下三个问题:
一、传统的异步框架存在异步任务处理的单机性问题,因为同一异步任务的处理逻辑是一样的,如果相同的逻辑反复处理同样的数据,可能会造成不可预估的风险;
二是、传统异步框架存在调度不可控,数据会存在重复处理的问题;
三是、在传统异步任务处理完后是没有后续操作的,以至于异步任务执行情况是成功还是失败无法预知,一旦程序存在隐藏bug,只能通过业务提出问题才能发现,对生产环境存在一定的风险。
发明内容
本发明提供一种异步任务处理的方法、装置、电子设备及计算机可读存储介质,其主要目的在于帮助用户解决在异步任务处理时出现单机性和数据重复的问题及在异步任务处理后无法了解到是否成功的问题。
为实现上述目的,本发明提供的一种异步任务处理的存储方法,包括:
接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;
通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架建立所述源异步任务的分片项,其中,所述机器地址与所述分片项中的索引一一对应;
通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
可选地,在所述利用多线程并发执行所述相应的分片任务之前包括:
对所述源异步任务中的分片项创建避免所述源异步任务的重复执行的节点锁。
可选地,所述对所述源异步任务中的分片项创建避免所述源异步任务的重复执行的节点锁,包括:
在所述源异步任务中的分片项中生成节点锁的锁名;
将所述锁名作为参数调回到所述公共注册中心,得到所述节点锁的执行顺序序列;
根据所述节点锁的执行顺序序列,生成所述分片项的节点锁。
可选地,在所述利用多线程并发执行所述相应的分片任务之后包括:
记录所述源异步任务的分片任务执行过程中的信息,并对执行失败的分片任务,通过预设次数的重试机制重新执行所述执行失败的分片任务。
可选地,所述通过预设次数的重试机制重新执行所述执行失败的分片任务,包括:
预设一个整型变量sum,重试执行所述执行失败的分片任务,并记录重试次数sum+1,利用所述重试次数sum+1的值更新所述整型变量sum,直至所述整型变量sum的值大于预设的最大重试次数,完成所述重新执行所述执行失败的分片任务。
可选地,所述将所述源异步任务转换成数据库表后存入数据库中,包括:
通过SQL语句对所述源异步任务创建字段,将所述源异步任务中的数据按所述字段进行对应匹配,从而将所述源异步任务转换成所述数据库表。
可选地,所述对通过预先构建的异步框架将所述源异步任务建立分片项,包括:
利用一个预设的分片算法对所述源异步任务进行分片,建立分片项,其中,所述分片算法包括:
FI=(to_big_integer(to_byte,32)%serviceCount)+1;
其中,FI表示建立的分片项,to_byte指的是节点号,to_big_integer表示节点号与数字32转换成整数后之间的最大值,serviceCount表示建立一个分片项所需要的次数。
为了解决上述问题,本发明还提供一种异步任务处理装置,所述装置包括:
声明及转换模块,用于接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;
分配及创建模块,用于通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架将所述源异步任务建立分片项,其中,所述机器地址与所述分片项中的索引一一对应;
获取及执行模块,用于通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现上述中任意一项所述的异步任务处理方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述中任意一项所述的异步任务处理方法。
本发明实施例通过注解对所述异步任务进行声明和转换操作后存入数据库中,结合公共注册中心对异步任务分配机器地址,及利用预先构建的异步框架将所述源异步任务建立分片项,保证了异步任务在处理时不会出现单机性的情况,利用所述机器地址向所述公共注册中心获取所述获取相应的分片任务,通过多线程并发执行所述相应的分片任务,可以实时查看异步任务处理情况,可以帮助用户高效的处理异步任务。
进一步地,本发明实施例在执行异步任务前,对异步任务中的分片项创建节点锁,保证了异步任务中不会数据重复执行的情况。
进一步地,本发明实施例在执行所述相应的分片任务后,记录所述源异步任务执行过程中的信息,可以了解到异步任务是否执行成功。
附图说明
图1为本发明一实施例提供的异步任务处理方法的流程示意图;
图2为本发明一实施例提供的异步任务处理方法的模块示意图;
图3为本发明一实施例提供的异步任务处理方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种异步任务处理的方法。参照图1所示,为本发明一实施例提供的异步任务处理方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,异步任务处理的方法包括:
S1、接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,并将所述源异步任务存入数据库中。
本发明较佳实施例中,所述注解(Annotation)指的是程序代码里的特殊标记,所述注解的格式是@注解名。所述特殊标记可以在所述程序代码编译、类加载以及运行时被读取,并执行相应的处理。本发明实施例通过所述注解可以在不改变原有程序代码和逻辑的情况下嵌入补充信息,达到声明的作用。详细地,本发明实施例通过定义注解在第一次出现的时候进行解释类型,使用@interface关键字(解释下这个@interface关键字)对所述异步任务进行注解,得到所述源异步任务。所述@interface关键字相当于一个注解类,用于定义一个数据的类型。
较佳地,本发明实施例将所述源异步任务转换成数据库表后存入数据库。其中,所述数据库表为普通的关系型数据库表,用于存储所述源异步任务的基本信息。优选地,所述数据库为Oracle数据库。
详细地,所述将源异步任务转换成数据库表的具体实施方式包括:
a、通过SQL语句创建所述源异步任务的字段,其中,所述字段包括DD_TIME、STSTE、TYPE、COUNT等;
b、将所述源异步任务中的数据按所述字段进行对应匹配。例如,将所述分数据存储为json字符串,按索引增量表明每个数据的值,如[1:80101,2:802,3:905|906],冒号右侧为分片值,冒号左侧为分片索引,与机器相对应,所述机器可以为将要执行所述源异步任务的设备。
S2、通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架建立所述源异步任务的分片项,其中,所述机器地址与所述分片项中的索引一一对应。
本发明较佳实施例中,所述公共注册中心为Zookepeer(ZK)。本发明将所述源异步任务发送到所述ZK中进行注册请求,通过所述ZK将所述源异步任务分配给相应的机器,得到相对应的机器地址。优选地,本发明通过调用本地程序中的方法和/或访问其他的服务器进行分配相应的机器。其中,所述机器地址在本发明中可理解为处理该源异步任务的程序,其中所述程序可以为应用程序方法,也可以为物理地址,即IP地址。其中,所述ZK类似于一个对象,其广义指的是在内存上一段有意义的区域。
较佳地,本发明实施例中所述预先构建的异步框架用于实现两个系统A、B之间的审批数据对接,例如,系统A为某市审批系统,系统B该市某政府单位审批系统,利用接口C为B系统提供,将系统B审批后的最终意见推送至A系统。其中,本发明中所述接口为webservice,即服务端。
所述预先构建的异步框架还包括通过实时修改异步任务参数支持客户端的修改配置参数,进行界面化操作。例如,以每一个异步任务为最小修改单位,通过程序执行书写的SQL脚本,修改任务的调用时间,任务信息等配置,并内置监听器Listener,一旦监听到配置信息的变化,立刻刷新对应的客户端配置信息,可以做到实时监听、实时修改。所述SQL脚本可以是相应的DML语句,也可以是存储过程等脚本语句,比如:CREATE OR REPLACEPROCEDURE testname(argument1 TYPE1,......)AS BEGIN......END testname。
较佳地,本发明实施例通过所述异步框架的分片算法对所述源异步任务进行分片,建立分片项。优先地,本发明将所述分片项与所述系统A和所述系统B中的任务单元进行关联,所述任务单元指的是将要执行的源异步任务的载体。
所述分片算法包括:
FI=(to_big_integer(to_byte,32)%serviceCount)+1
其中,其中,FI表示建立的分片项,to_byte指的是节点号,to_big_integer表示节点号与数字32转换成整数后之间的最大值,serviceCount表示建立一个分片项所需要的次数,serviceCount表示建立一个分片项所需要次数,所述to_byte(节点号)是标志源异步任务的唯一ID,所述节点号指的是上述源异步任务进行声明时创建的索引。
进一步地,本发明实施例根据声明时保存的任务表的任务信息,查询任务相应得机器地址并按照分片项索引_方法名或者分片项_机器地址的格式分配索引项,实现所述分片项中的索引与所述机器地址的一一对应。
S3、通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
本发明较佳实施例在执行所述源异步任务执行时,通过所述源异步任务分配的机器地址向所述ZK获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。其中,线程是操作系统能够进行运算调度的最小单位,被包含在程序(进程)之中,是程序中的实际运作单位。一条线程指的是程序中一个单一顺序的控制流,通常理解为一个线程执行一个任务,多线程是指实现多个线程并发执行的技术,即可同时执行多个分片。线程执行过程虽然不相互影响,但是会出现操作相同的数据,因此,在执行分片任务时,本发明通过加上分片项作为SQL语句的where条件,避免了分片任务中数据在过滤时产生的数据冲突。
进一步地,本发明较佳实施例还包括在执行所述源异步任务前,对所述源异步任务中的分片项创建节点锁,以避免所述源异步任务的重复执行。
详细地,所述对源异步任务中的分片项创建节点锁具体实施步骤包括:
在所述源异步任务启动前,上述S2中预先构建的异步框架会自动在所述源异步任务中的分片项中生成一个lock_name1_的节点锁的锁名,由于保单号存在唯一性,因此所述保单号的锁名也存在唯一性。进一步地,本发明将所述锁名作为参数调回到上述公共注册中心,从而得到所述节点锁的执行顺序序列(List),根据所述节点锁的执行顺序序列,生成所述分片项的节点锁。其中,所述List跟数组类似,里面存放的是一组排序后的锁名。所述源异步任务在执行之前通过List集合验证自身的锁名是否排在第一个,若所述锁名是第一个,表示所述分片项客户端是实时获取数据的,于是当遇到所述分片项调用间隔时间较短时,例如客户端每5s获取一次,一次执行时间为6秒,就可能存在重复执行的风险,避免引来操作数据冲突的隐患。
进一步地,本发明实施例还包括在执行所述相应的分片任务后,记录所述源异步任务执行过程中的信息,对于执行失败的分片任务,启动预设次数的重试机制,通过预设次数的重试机制重新执行所述执行失败的分片任务。
较佳地,本发明通过所述预先构建的异步框架中的日志记录每次所述源异步任务执行过程中的信息,所述信息包括执行结果、运行时间以及执行失败原因等信息,即在上述数据库中新建一张ZX_RESULT表,所述ZX_RESULT表的表字段包括result、info、task_id等信息。当所述源异步任务执行成功时,所述预先构建的异步框架中的任务单元正常消费,当所述源异步任务执行失败时,通过try、catch机构捕获所述源异步任务的异常,并通过在catch机制中启动重试机制,重新执行所述源异步任务。所述异常是指程序在执行过程中出现造成的功能不正常,连接中断等错误,所述错误包括程序本身的错误、网络的错误以及数据库连接的错误等情况。
较佳地,本发明实施例所述重试机制是有限次的重试,即在所述catch机制中预设一个整型变量sum,重试执行所述执行失败的分片任务,并记录重试次数sum+1,利用所述重试次数sum+1的值更新所述整型变量sum,直至所述整型变量sum的值大于预设的最大重试次数,完成所述重新执行所述执行失败的分片任务。较佳地,本发发明中所述预设的最大重试次数为5次。通过所述重试机制可以有效的提高了任务执行的成功率以及任务的后续操作,有利于维护后续的任务分析以及结果查询、数据备份。
如图2所示,是本发明异步任务处理装置的功能模块图。
本发明所述异步任务处理装置100可以安装于电子设备中。根据实现的功能,所述异步任务处理装置100可以包括声明及转换模块101、分配及创建模块102以及获取及执行模块103。本发所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述声明及转换模块101,用于接收异步任务,通过注解对所述异步任务进行声明,得到源异步任,将所述源异步任务转换成数据库表后存入数据库中;
所述分配及创建模块102,用于通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架将所述源异步任务建立分片项,其中,所述机器地址与所述分片项中的索引一一对应;
所述获取及执行模块103,用于通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
详细地,所述异步任务处理的存储装置各模块的具体实施步骤如下:
所述声明及转换模块101接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中。
本发明较佳实施例中,所述注解(Annotation)指的是程序代码里的特殊标记,所述注解的格式是@注解名。所述特殊标记可以在所述程序代码编译、类加载以及运行时被读取,并执行相应的处理。本发明实施例通过所述注解可以在不改变原有程序代码和逻辑的情况下嵌入补充信息,达到声明的作用。详细地,本发明实施例通过定义注解在第一次出现的时候进行解释类型,使用@interface关键字(解释下这个@interface关键字)对所述异步任务进行注解,得到所述源异步任务。所述@interface关键字相当于一个注解类,用于定义一个数据的类型。
较佳地,本发明实施例将所述源异步任务转换成数据库表后存入数据库。其中,所述数据库表为普通的关系型数据库表,用于存储所述源异步任务的基本信息。优选地,所述数据库为Oracle数据库。
详细地,所述将源异步任务转换成数据库表的具体实施方式包括:
a、通过SQL语句创建所述源异步任务的字段,其中,所述字段包括DD_TIME、STSTE、TYPE、COUNT等;
b、将所述源异步任务中的数据按所述字段进行对应匹配。例如,将所述分数据存储为json字符串,按索引增量表明每个数据的值,如[1:80101,2:802,3:905|906],冒号右侧为分片值,冒号左侧为分片索引,与机器相对应,所述机器可以为将要执行所述源异步任务的设备。
所述分配及创建模块102通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架将所述源异步任务建立分片项,其中,所述机器地址与所述分片项中的索引一一对应。
本发明较佳实施例中,所述公共注册中心为Zookepeer(ZK)。本发明将所述源异步任务发送到所述ZK中进行注册请求,通过所述ZK将所述源异步任务分配给相应的机器,得到相对应的机器地址。优选地,本发明通过调用本地程序中的方法和/或访问其他的服务器进行分配相应的机器。其中,所述机器地址在本发明中可理解为处理该源异步任务的程序,其中所述程序可以为应用程序方法,也可以为物理地址,即IP地址。其中,所述ZK类似于一个对象,其广义指的是在内存上一段有意义的区域。
较佳地,本发明实施例中所述预先构建的异步框架用于实现两个系统A、B之间的审批数据对接,例如,系统A为某市审批系统,系统B该市某政府单位审批系统,利用接口C为B系统提供,将系统B审批后的最终意见推送至A系统。其中,本发明中所述接口为webservice,即服务端。
所述预先构建的异步框架还包括通过实时修改异步任务参数支持客户端的修改配置参数,进行界面化操作。例如,以每一个异步任务为最小修改单位,通过程序执行书写的SQL脚本,修改任务的调用时间,任务信息等配置,并内置监听器Listener,一旦监听到配置信息的变化,立刻刷新对应的客户端配置信息,可以做到实时监听、实时修改。所述SQL脚本可以是相应的DML语句,也可以是存储过程等脚本语句,比如:CREATE OR REPLACEPROCEDURE testname(argument1 TYPE1,......)AS BEGIN......END testname。
较佳地,本发明实施例通过所述异步框架的分片算法对所述源异步任务进行分片,建立分片项。优先地,本发明将所述分片项与所述系统A和所述系统B中的任务单元进行关联,所述任务单元指的是将要执行的源异步任务的载体。
所述分片算法包括:
FI=(to_big_integer(to_byte,32)%serviceCount)+1
其中,其中,FI表示建立的分片项,to_byte指的是节点号,to_big_integer表示节点号与数字32转换成整数后之间的最大值,serviceCount表示建立一个分片项所需要的次数,serviceCount表示建立一个分片项所需要次数,所述to_byte(节点号)是标志源异步任务的唯一ID,所述节点号指的是上述源异步任务进行声明时创建的索引。
进一步地,本发明实施例根据声明时保存的任务表的任务信息,查询任务相应得机器地址并按照分片项索引_方法名或者分片项_机器地址的格式分配索引项,实现所述分片项中的索引与所述机器地址的一一对应。
所述获取及执行模块103通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
本发明较佳实施例在执行所述源异步任务执行时,通过所述源异步任务分配的机器地址向所述ZK获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。其中,线程是操作系统能够进行运算调度的最小单位,被包含在程序(进程)之中,是程序中的实际运作单位。一条线程指的是程序中一个单一顺序的控制流,通常理解为一个线程执行一个任务,多线程是指实现多个线程并发执行的技术,即可同时执行多个分片。线程执行过程虽然不相互影响,但是会出现操作相同的数据,因此,在执行分片任务时,本发明通过加上分片项作为SQL语句的where条件,避免了分片任务中数据在过滤时产生的数据冲突。
进一步地,本发明较佳实施例还包括在执行所述源异步任务前,对所述源异步任务中的分片项创建节点锁,以避免所述源异步任务的重复执行。
详细地,所述对源异步任务中的分片项创建节点锁具体实施步骤包括:
在所述源异步任务启动前,上述S2中预先构建的异步框架会自动在所述源异步任务中的分片项中生成一个lock_name1_的节点锁的锁名,由于保单号存在唯一性,因此所述保单号的锁名也存在唯一性。进一步地,本发明将所述锁名作为参数调回到上述公共注册中心,从而得到所述节点锁的执行顺序序列(List),根据所述节点锁的执行顺序序列,生成所述分片项的节点锁。其中,所述List跟数组类似,里面存放的是一组排序后的锁名。所述源异步任务在执行之前通过List集合验证自身的锁名是否排在第一个,若所述锁名是第一个,表示所述分片项客户端是实时获取数据的,于是当遇到所述分片项调用间隔时间较短时,例如客户端每5s获取一次,一次执行时间为6秒,就可能存在重复执行的风险,避免引来操作数据冲突的隐患。
进一步地,本发明实施例还包括在执行所述相应的分片任务后,记录所述源异步任务执行过程中的信息,对于执行失败的分片任务,启动预设次数的重试机制,通过预设次数的重试机制重新执行所述执行失败的分片任务。
较佳地,本发明通过所述预先构建的异步框架中的日志记录每次所述源异步任务执行过程中的信息,所述信息包括执行结果、运行时间以及执行失败原因等信息,即在上述数据库中新建一张ZX_RESULT表,所述ZX_RESULT表的表字段包括result、info、task_id等信息。当所述源异步任务执行成功时,所述预先构建的异步框架中的任务单元正常消费,当所述源异步任务执行失败时,通过try、catch机构捕获所述源异步任务的异常,并通过在catch机制中启动重试机制,重新执行所述源异步任务。所述异常是指程序在执行过程中出现造成的功能不正常,连接中断等错误,所述错误包括程序本身的错误、网络的错误以及数据库连接的错误等情况。
较佳地,本发明实施例所述重试机制是有限次的重试,即在所述catch机制中预设一个整型变量sum,重试执行所述执行失败的分片任务,记录重试次数sum+1,并利用所述重试次数sum+1的值更新所述整型变量sum,直至所述整型变量sum的值大于预设的最大重试次数,完成所述重新执行所述执行失败的分片任务。较佳地,本发发明中所述预设的最大重试次数为5次。通过所述重试机制可以有效的提高了任务执行的成功率以及任务的后续操作,有利于维护后续的任务分析以及结果查询、数据备份。
如图3所示,是本发明实现异步任务处理方法的电子设备的结构示意图。
所述电子设备1可以包括处理器10、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如异步任务处理程序12。
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如异步任务处理程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器12是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如异步任务处理程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的异步任务处理程序12是多个指令的组合,在所述处理器10中运行时,可以实现:
接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;
通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架建立所述源异步任务的分片项,其中,所述机器地址与所述分片项中的索引一一对应;
通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
具体地,所述处理器10对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种异步任务处理方法,其特征在于,所述方法包括:
接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;
通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架建立所述源异步任务的分片项,其中,所述机器地址与所述分片项中的索引一一对应;
通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
2.如权利要求1所述的异步任务处理方法,其特征在于,在所述利用多线程并发执行所述相应的分片任务之前,该方法还包括:
对所述源异步任务中的分片项创建避免所述源异步任务的重复执行的节点锁。
3.如权利要求2所述的异步任务处理方法,其特征在于,所述对所述源异步任务中的分片项创建避免所述源异步任务的重复执行的节点锁,包括:
在所述源异步任务中的分片项中生成节点锁的锁名;
将所述锁名作为参数调回到所述公共注册中心,得到所述节点锁的执行顺序序列;
根据所述节点锁的执行顺序序列,生成所述分片项的节点锁。
4.如权利要求1所述的异步任务处理方法,其特征在于,在所述利用多线程并发执行所述相应的分片任务之后,该方法还包括:
记录所述源异步任务的分片任务执行过程中的信息,并对执行失败的分片任务,通过预设次数的重试机制重新执行所述执行失败的分片任务。
5.如权利要4所述的异步任务处理方法,其特征在于,所述通过预设次数的重试机制重新执行所述执行失败的分片任务,包括:
预设一个整型变量sum,重试执行所述执行失败的分片任务,并记录重试次数sum+1,利用所述重试次数sum+1的值更新所述整型变量sum,直至所述整型变量sum的值大于预设的最大重试次数,完成所述重新执行所述执行失败的分片任务。
6.如权利要求1至5中任意一项所述的异步任务处理方法,其特征在于,所述将所述源异步任务转换成数据库表后存入数据库中,包括:
通过SQL语句对所述源异步任务创建字段,将所述源异步任务中的数据按所述字段进行对应匹配,从而将所述源异步任务转换成所述数据库表,并将所述数据库表存入数据库中。
7.如权利要求1至5中任意一项所述的异步任务处理方法,其特征在于,所述通过预先构建的异步框架建立所述源异步任务的分片项,包括:
利用一个预设的分片算法对所述源异步任务进行分片,建立分片项,其中,所述分片算法包括:
FI=(to_big_integer(to_byte,32)%serviceCount)+1;
其中,FI表示建立的分片项,to_byte指的是节点号,to_big_integer表示节点号与数字32转换成整数后之间的最大值,serviceCount表示建立一个分片项所需要的次数。
8.一种异步任务处理装置,其特征在于,所述装置包括:
声明及转换模块,用于接收异步任务,通过注解对所述异步任务进行声明,得到源异步任务,将所述源异步任务转换成数据库表后存入数据库中;
分配及创建模块,用于通过公共注册中心对所述源异步任务分配机器地址,并通过预先构建的异步框架将所述源异步任务建立分片项,其中,所述机器地址与所述分片项中的索引一一对应;
获取及执行模块,用于通过所述源异步任务分配的机器地址向所述公共注册中心获取所述分片项中对应的索引,并根据所述对应的索引获取相应的分片任务,利用多线程并发执行所述相应的分片任务。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一所述的异步任务处理方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一所述的异步任务处理方法。
CN202010227969.8A 2020-03-27 2020-03-27 异步任务处理方法、装置及计算机可读存储介质 Pending CN111538573A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010227969.8A CN111538573A (zh) 2020-03-27 2020-03-27 异步任务处理方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010227969.8A CN111538573A (zh) 2020-03-27 2020-03-27 异步任务处理方法、装置及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111538573A true CN111538573A (zh) 2020-08-14

Family

ID=71976917

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010227969.8A Pending CN111538573A (zh) 2020-03-27 2020-03-27 异步任务处理方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111538573A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445810A (zh) * 2020-12-11 2021-03-05 中国人寿保险股份有限公司 一种数据仓库数据更新方法、设备、电子设备及存储介质
CN112559535A (zh) * 2020-12-28 2021-03-26 平安银行股份有限公司 基于多线程的异步任务处理方法、装置、设备及介质
CN112685045A (zh) * 2020-12-28 2021-04-20 北京达佳互联信息技术有限公司 页面源文件的处理方法、装置、电子设备以及存储介质
CN116643733A (zh) * 2023-07-26 2023-08-25 北京仁科互动网络技术有限公司 业务处理系统和方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445810A (zh) * 2020-12-11 2021-03-05 中国人寿保险股份有限公司 一种数据仓库数据更新方法、设备、电子设备及存储介质
CN112559535A (zh) * 2020-12-28 2021-03-26 平安银行股份有限公司 基于多线程的异步任务处理方法、装置、设备及介质
CN112685045A (zh) * 2020-12-28 2021-04-20 北京达佳互联信息技术有限公司 页面源文件的处理方法、装置、电子设备以及存储介质
CN112559535B (zh) * 2020-12-28 2023-08-22 平安银行股份有限公司 基于多线程的异步任务处理方法、装置、设备及介质
CN116643733A (zh) * 2023-07-26 2023-08-25 北京仁科互动网络技术有限公司 业务处理系统和方法
CN116643733B (zh) * 2023-07-26 2023-10-13 北京仁科互动网络技术有限公司 业务处理系统和方法

Similar Documents

Publication Publication Date Title
CN107783975B (zh) 分布式数据库同步处理的方法和装置
CN111538573A (zh) 异步任务处理方法、装置及计算机可读存储介质
CN112328677B (zh) 基于表关联的丢失数据回收方法、装置、设备及介质
CN111651471A (zh) 目标数据查询方法、装置、电子设备及存储介质
CN113342472A (zh) 微服务集群创建方法、装置、电子设备及可读存储介质
CN112015815A (zh) 数据同步方法、装置及计算机可读存储介质
CN114691050B (zh) 基于kubernetes的云原生存储方法、装置、设备及介质
CN112256783A (zh) 数据导出方法、装置、电子设备及存储介质
CN112685117A (zh) 系统语言国际化维护方法、装置及计算机可读存储介质
CN115543198A (zh) 非结构化数据入湖方法、装置、电子设备及存储介质
CN115118738A (zh) 基于rdma的灾备方法、装置、设备及介质
CN111651426A (zh) 数据迁移方法、装置及计算机可读存储介质
CN112464619A (zh) 大数据处理方法、装置、设备及计算机可读存储介质
CN115145870A (zh) 失败任务原因定位方法、装置、电子设备及存储介质
CN114911479A (zh) 基于配置化的界面生成方法、装置、设备及存储介质
CN113918305A (zh) 节点调度方法、装置、电子设备及可读存储介质
CN114510400A (zh) 任务执行方法、装置、电子设备及存储介质
CN114691782A (zh) 数据库表增量同步方法、装置及存储介质
CN114820132A (zh) 订单派发方法、装置、电子设备及存储介质
CN113515265A (zh) 站点配置方法、装置、设备及计算机可读存储介质
CN112686759A (zh) 对账监测方法、装置、设备及介质
CN112328656A (zh) 基于中台架构的服务查询方法、装置、设备及存储介质
CN114860314B (zh) 基于数据库兼容的部署升级方法、装置、设备及介质
CN113326421B (zh) 记录载体的数据识别方法、装置、电子设备及存储介质
CN115174698B (zh) 基于表项索引的行情数据解码方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination