CN106095585A - 任务请求处理方法、装置和企业信息系统 - Google Patents

任务请求处理方法、装置和企业信息系统 Download PDF

Info

Publication number
CN106095585A
CN106095585A CN201610460153.3A CN201610460153A CN106095585A CN 106095585 A CN106095585 A CN 106095585A CN 201610460153 A CN201610460153 A CN 201610460153A CN 106095585 A CN106095585 A CN 106095585A
Authority
CN
China
Prior art keywords
task
background server
information
logic
list
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.)
Granted
Application number
CN201610460153.3A
Other languages
English (en)
Other versions
CN106095585B (zh
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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN201610460153.3A priority Critical patent/CN106095585B/zh
Publication of CN106095585A publication Critical patent/CN106095585A/zh
Application granted granted Critical
Publication of CN106095585B publication Critical patent/CN106095585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种任务请求处理方法、装置和企业信息系统,该方法包括:任意后台服务器接收企业服务总线发送的任务请求报文;根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中;任意后台服务器处于空闲状态时,从所述任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务。本发明将任务请求的处理过程分解为可分别独立执行的两个过程,可分别由两台不同的服务器执行。而对于同一个任务请求,又是按照正常的执行顺序执行,任务的执行过程均是在相应的后台服务器处于空闲状态时才进行的,且采用线程池执行任务,充分保证了任务能够被执行,提高了后台服务器的安全性和稳定性,改善了客户体验。

Description

任务请求处理方法、装置和企业信息系统
技术领域
本发明涉及金融服务技术领域,尤其涉及一种任务请求处理方法、装置和企业信息系统。
背景技术
在企业信息系统中,如银行服务系统中,通常会有大量的任务请求需要处理,如交易的处理、发送消息/邮件/短信、导入/导出数据、批量打印等,处理这些任务请求往往是银行服务系统的核心功能。
对于银行的日常任务处理来说,部分任务请求要求实时处理,即要求立即反馈处理结果,部分任务请求要求准实时处理,部分任务请求要求定时处理。所谓准实时处理,即某些任务请求的处理过程耗时较长,如批量导入/导出,批量打印等任务请求,对于这些任务请求来说,客户端等待任务请求响应的时间容忍度也相对宽松,并非要求点击请求后立即反馈结果,这种响应即为准实时响应,这种任务即为准实时任务。
对于银行服务系统来说,各种任务请求通常在某些固定的时间段是高并发的,若要满足这种需求,就要求后台服务器能够在准实时响应的情况下处理这些高并发的请求。但是,发明人发现,在用户任务请求高并发的时候,银行服务系统经常会出现性能瓶颈,影响客户的服务体验。
发明内容
针对现有方法的不足,本发明提出了一种任务请求处理方法、装置和企业信息系统,该方法调整了任务请求的处理过程,将原本由同一台后台服务器顺序执行的过程,调整为可分别独立执行的两个过程,而执行这两个过程的服务器之间没有任何相互牵制,从而在一定程度上提高了银行服务系统的性能,改善了客户的服务体验。
为达到以上目的,本发明的技术方案如下:
一种任务请求处理方法,应用于企业信息系统,所述企业信息系统包括数据库和多个相互独立工作的后台服务器,该方法在所述后台服务器上执行,该方法包括:
任意后台服务器接收企业服务总线发送的任务请求报文;
根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联;
任意后台服务器处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务。
优选的,所述根据接收到的任务请求报文生成任务后,将所述任务添加到数据库的任务表之前,还包括,为所述任务生成任务号,所述任务号为所述任务的唯一标识。
优选的,任意后台服务器处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池执行抓取到的任务具体为:
当某个后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中;
当该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行;
任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要更新任务状态和/或记录任务的处理日志,若是,则更新数据库中所述任务的任务状态和/或记录任务的处理日志;
任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要对任务执行结果进行后续操作,若是,则将该后续操作需求封装成新的任务请求报文,并根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中。
优选的,所述从所述任务表中抓取未被执行的任务的过程为:从所述任务表中抓取未被执行的任务时,为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取,所述锁定标识中包括设置该锁定标识的后台服务器标识。
优选的,所述锁定标识与所述抓取到的未被执行的任务的任务号相关联。
优选的,所述从所述任务表中抓取未被执行的任务时,对任务的抓取规则为:按照所述任务表中任务生成的时间顺序,优先抓取所述任务表中最先生成且未被执行的任务。
优选的,所述对抓取到的任务进行预处理,并将预处理后的处理结果,放入该后台服务器的任务执行队列的过程具体为:
提取出所述任务的任务信息中的任务属性信息和任务参数信息;
从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑;
利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息;
根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑;
将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
优选的,所述任务属性信息包括任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间。
优选的,所述任务模式包括实时任务、准实时任务、定时任务;所述任务执行方式包括发送消息、发送邮件、发送短信、导入/导出信息、生成文件、调用其他组件的联机服务;一种任务执行方式对应一种任务模式。
优选的,针对一台后台服务器,其中的线程池的大小设置方式为:
对于IO密集型任务,所述线程池中设置有2N个线程,对于计算密集型任务,所述线程池中设置有N个线程,其中N为后台服务器中CPU的核数。
优选的,所述将获取到的任务放入线程池中执行的方式具体为:根据所述获取到的任务的任务信息,将所述任务分解为多个并行执行的子任务,为每个子任务分配线程池中的一个线程并执行,直至所有子任务执行完成。
优选的,该方法还包括:以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态。
优选的,所述从所述数据库的任务表中抓取未被执行的任务之前,还包括:检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
本发明实施例还公开了一种任务请求处理装置,应用于企业信息系统,所述企业信息系统包括数据库和多个相互独立工作的后台服务器,该装置位于在所述后台服务器上,该处理装置包括:
接收单元,用于接收企业服务总线发送的任务请求报文;
任务生成单元,用于根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联;
第一任务执行单元,用于从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务;
线程池创建单元,用于创建线程池;
存储单元,用于存储预设的与不同任务对应的任务处理逻辑。
优选的,所述任务生成单元还用于为所述任务生成任务号,所述任务号为所述任务的唯一标识。
优选的,所述第一任务执行单元包括:
任务抓取单元,用于当后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,并对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中;
第二任务执行单元,用于当后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行;
第一后置处理单元,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志;
第二后置处理单元,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并将所述新的任务请求报文发送给所述任务生成单元。
优选的,所述任务抓取单元还用于为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取,所述锁定标识中包括设置该锁定标识的后台服务器标识,且所述锁定标识与所述抓取到的未被执行的任务的任务号相关联。
优选的,所述任务抓取单元包括任务预处理单元,用于对抓取到的任务进行预处理;所述存储单元还用于存储预设的不同任务对应的任务拦截逻辑,所述任务预处理单元包括:信息提取单元,用于提取出所述任务的任务信息中的任务属性信息和任务参数信息,所述任务属性信息包括任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间;
第一查询单元,用于从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑;
第一获取单元,用于利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息;
第二查询单元,用于根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑;
第一封装单元,用于将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
优选的,该任务请求处理装置还包括:定时单元,用于以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态。
优选的,该任务请求处理装置还包括:故障恢复单元,用于在从所述数据库的任务表中抓取未被执行的任务之前,检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
本发明实施例还公开了一种企业信息系统,包括客户端、客户端服务器、企业服务总线、数据库和多个相互独立工作的后台服务器,所述后台服务器用于接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。
本发明实施例还公开了一种企业信息系统,包括客户端、客户端服务器、企业服务总线、数据库和多个相互独立工作的后台服务器,所述后台服务器用于接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在该后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中,并且,在该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行,并且,在任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志,并且,任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中。
本发明的有益效果在于:
本发明公开的任务请求处理方法,通过将任务请求的处理过程由同一台服务器连续依次执行的过程,分解为可分别独立执行的两个过程,而执行这两个过程的服务器之间没有任何相互牵制,即可分别由两台不同的服务器执行。而对于同一个任务请求而言,又是按照正常的执行顺序执行的。并且,任务的执行过程均是在相应的后台服务器处于空闲状态时才进行的,充分保证了任务能够被执行,提高了任务执行成功率,也减少了后台服务器因硬件资源紧张而导致宕机的可能性,提高了后台服务器的安全性和稳定性。并且,由于采用了线程池执行任务,提高了服务器的处理效率,进一步提高了企业信息系统的性能,改善了客户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的企业信息系统的结构图;
图2为本发明实施例一公开的任务请求处理方法的流程图;
图3为本发明实施例二公开的任务请求处理方法的流程图;
图4为本发明实施例二公开的任务请求处理方法中预处理过程的流程图;
图5为本发明实施例四公开的任务请求处理装置的结构图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的描述。
现有技术中对任务请求的处理流程如下:
1)用户通过客户端发起任务请求,客户端将任务请求转给客户端服务器;
2)客户端服务器将任务请求封装成任务请求报文发送给企业服务总线;
3)企业服务总线接收到任务请求报文后,通过负载均衡机制,将任务请求报文分配给其中一台相对空闲的后台服务器;
4)后台服务器接收到任务请求报文后,对报文进行解密,拿到报文实体,即任务信息,之后为每个任务请求生成一条线程,进行任务请求处理;
5)处理完成后,后台服务器沿原路将处理结果发送给发起任务请求的客户端。
发明人发现,现有技术中的后台服务器在处理任务请求时,后台服务器主机进行实时的任务处理,每个任务均是在一个后台服务器的模块中顺序执行,为每一个任务请求生成一条独立的线程进行处理。当任务请求高并发的时候,后台服务器则会生成大量并行工作的线程,多条线程并行处理高并发的任务请求。
现有技术中的上述任务请求处理流程,很容易影响银行服务系统的正常工作,其中重要的原因就在于后台服务器的架构和任务请求处理方式,导致后台服务器硬件资源紧张。首先,每个任务占用一条线程,多条线程并行处理多个任务,本身占用的硬件资源就很多,很容易导致服务器硬件资源紧张。其次,采用上述任务请求处理方式,服务器完成一项任务所需的时间为:线程的创建时间T1+在线程中执行任务的时间T22+销毁线程的时间T3,任务高并发时,多条线程的创建和销毁需要消耗的时间也会很多。
举例来说,在进行数据库类任务处理时,会出现多个后台服务器同时频繁访问数据库的情况,会造成数据库连接数量过多,导致数据库的负载过大,影响任务请求的处理效率。在进行文件类任务处理时,后台服务器内大量线程同时并行工作,很容易造成服务器IO资源、内存资源、CPU资源的紧张,甚至耗尽。在进行网络类任务处理时,后台服务器需同时响应大量任务请求,会造成短期内占用带宽过高,从而导致网络拥堵甚至丢包。以上这些情况,均会影响银行服务系统的性能,降低客户体验。
实施例一
基于以上原因,本发明实施例一提出了一种任务请求处理方法,应用于企业信息系统,其整体架构如图1所示,所述企业信息系统包括多个客户端1、客户端服务器2、企业服务总线3、数据库5和多个相互独立工作的后台服务器,包括后台服务器41-4n。该企业信息系统可以是银行服务系统,或其他类型的企业信息系统,本实施例仅以银行服务系统为例进行方案的说明。
本实施例公开的任务请求处理方法在所述后台服务器上执行,该方法的流程图如图2所示,具体包括以下步骤:
步骤S101、通过客户端1发起任务请求,客户端1将任务请求转给客户端服务器2。
步骤S102、客户端服务器2将任务请求封装成任务请求报文发送给企业服务总线3。
步骤S103、企业服务总线接收到任务请求报文后,根据调度机制,将任务请求报文分配给其中一台后台服务器。
以上步骤S101-步骤S103,与现有技术中基本相同,这里不做过多赘述。
步骤S104、任意后台服务器接收企业服务总线发送的任务请求报文。
步骤S105、根据接收到的任务请求报文生成任务。
该步骤需要对任务请求报文进行解密,获取到报文中的任务信息。
步骤S106、将所述任务添加到数据库的任务表中。
所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。
上述步骤S104-步骤S106是在同一台后台服务器上执行的,此处增加了生成任务后,后台服务器与数据库的交互过程。接收到任务请求报文的后台服务器在将任务添加到数据库的任务表中之后,该后台服务器对该任务的处理过程就可告一段落,即可不再对同一任务进行后续执行过程。
步骤S107、任意后台服务器处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务。
该步骤建立了任务执行前,后台服务器与数据库间的沟通,而这一沟通的主动权在后台服务器本身,当后台服务器处于空闲状态时,才会发起抓取未被执行的任务的动作,而不是如现有技术中一样被动的接收企业服务总线分配的任务。
步骤S108、在线程池中执行抓取到的任务。
相比于为每个任务单独分配一个线程执行而言,采用线程池执行任务,大大缩短了在多个任务并行执行时,多个线程的创建时间T1和销毁线程的时间T3,提高了服务器的程序性能。具体来说,采用线程池执行任务,可以把T1,T3分别安排在后台服务器程序的启动和结束的时间段或者一些空闲的时间段,使得服务器程序处理客户请求时,不会再有T1和T3的开销了,大大提高了任务的执行效率。
并且,采用线程池执行任务,不仅调整了T1和T3发生的时间段,而且还显著减少了创建线程的数目。举例来说,假设一个后台服务器一天要处理50000个任务请求,现有技术中是每个任务请求均需要一个单独的线程完成,若要处理这些任务请求,就需要先后建立并销毁50000个线程。而在线程池中,线程的数量一般是固定的,所以产生的线程总数不会超过线程池中线程的总数。而一般线程池大小远远小于50000。所以采用线程池处理任务请求时,服务器程序不会为了创建50000个线程,而在处理任务请求时浪费时间,从而提高了服务器的处理效率。
需要说明的是,步骤S207-步骤S108是在同一台后台服务器上执行的,并且,执行步骤S207-步骤S108的后台服务器,与执行步骤S104-步骤S106的服务器并无任何关联,二者可以是同一台服务器,也可以是不同的服务器。如步骤S104-步骤S106在后台服务器41上进行,步骤S207-步骤S108是后台服务器41-4n中的任意一台服务器上执行,只要执行步骤S207-步骤S108的后台服务器处于相对空闲状态,有足够的资源执行抓取到的任务即可。
本实施例中通过将任务请求的处理过程由同一台服务器连续依次执行的过程,分解为可分别独立执行的两个过程,而执行这两个过程的服务器之间没有任何相互牵制,即可分别由两台不同的服务器执行。而对于同一个任务请求而言,又是按照正常的执行顺序执行的。并且,任务的执行过程均是在相应的后台服务器处于空闲状态时才进行的,充分保证了任务能够被执行,提高了任务执行成功率,也减少了后台服务器因硬件资源紧张而导致宕机的可能性。并且,由于采用了线程池执行任务,提高了服务器的处理效率,进一步提高了企业信息系统的性能,改善了客户体验。
实施例二
本发明实施例公开的方法流程如图3所示,与上一实施例相比,本实施例中与上一实施例内容相同的部分,执行方式也相同,故在本实施例这不做详细描述,以下只描述与上一实施例中不同的内容。
其中步骤S201-步骤S205与上一实施例相同,这里不再赘述。
步骤S206、为步骤S205中生成的任务生成任务号,所述任务号为所述任务的唯一标识。
在任务执行过程中,有时需要对任务信息进行相应的标记,通过为任务生成任务号,可采用对任务号进行相应的标记,来代替对具体的任务信息进行标记,从而减少对数据库或服务器资源的占用。
步骤S207、将设置任务号之后的任务添加到数据库的任务表中。
每个任务的任务信息中均包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。
其中,所述任务属性信息属于任务的通用信息,即每个任务都会包含的信息。所述任务属性信息包括本实施例中为每个任务生成的任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间。
所述任务模式是指任务是属于实时任务、准实时任务,还是定时任务。任务的执行方式也就是任务类型,所述任务执行方式包括发送消息、发送邮件、发送短信、导入/导出信息、生成文件、调用其他组件的联机服务(如批量打印)等。本实施例这的任务执行方式仅以此为例,除此之外,在银行服务系统中的其他执行方式,也均可采用本实施例公开的任务请求处理方法进行处理。
需要说明的是,一种任务执行方式对应一种任务模式,即在银行服务系统中,不同的任务,对应不同的执行方式,也就限定了任务对任务处理结果在反馈时间上的紧迫性。
任务执行状态是指任务处于未执行的状态,还是处于开始执行的状态,还是已经执行完成了。任务交易状态是指任务是执行成功了,还是部分成功了,还是执行失败。
任务参数信息除了保存任务执行的上下文信息,另一个主要用途是与业务信息相关联,即可通过任务参数信息获取业务信息。业务信息包括业务描述信息(如业务涉及的金额、数量等)、业务参与者信息(如调入机构、调出机构等)、业务的处理方式信息(即业务对应的任务执行方式信息,如调用联机服务、发送消息等)等。
如实施例一所述,对于接收到任务请求报文的服务器来说,执行完步骤S206-步骤S207,即可不再继续对该任务做后续处理。
步骤S208、当某个后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务。
对于一个后台服务器来说,从数据库的任务表中抓取未被执行的任务的前提是,其自身的当前状态能够处理即将被抓取的任务,也就避免了后台服务器在执行当前任务的同时,再次承接的任务量超过其本身处理能力,也提高了当前任务的执行效率。
其中,从所述任务表中抓取未被执行的任务时,对任务的抓取规则为:按照所述任务表中任务生成的时间顺序,优先抓取所述任务表中最先生成且未被执行的任务,从而确保了最先生成的任务被最先处理。
需要说明的是,后台服务器在从所述任务表中抓取未被执行的任务时,为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取,所述锁定标识中包括设置该锁定标识的后台服务器标识,也就是抓取到这些任务的后台服务器的标识。可以采用数据库行锁的方式锁定被抓取的任务。
任务表中的任务被抓取后,并不从数据库的任务表中删除,因此需要为在任务表中设置锁定标识,才能避免同一任务被其它服务器重复抓取而导致同一任务被不同的服务器重复执行,提高银行服务系统的处理效率。
在设置锁定标识时,为抓取到的任务设置的锁定标识与所述抓取到的未被执行的任务的任务号相关联,而不是为任务的所有信息均设置锁定标识。从而进一步降低服务器的工作量。
进一步的,任务的抓取粒度和抓取频度等可根据服务器的状态进行设置,每次抓取的任务数量需要与服务器中任务的执行速度相匹配,以便尽可能的减轻服务器和数据库的压力,最大限度的利用服务器中线程池的处理能力。
对于银行服务系统来说,为了保证服务系统的安全性和稳定性,任务的抓取粒度一般是人工设置,在工作过程中人工进行调整。对于其他企业的服务系统来说,也可以由服务器本身根据自身当前时段承担的任务量,自动进行任务抓取粒度的调整。
当然,如果在数据库的任务表中没有找到未被其他服务器抓取的任务,则该服务器即可休眠一段时间,直至任务表中有新的任务。
步骤S209、对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中。该步骤是为任务的执行过程做准备。
其中,该预处理过程的流程图如图4所示,包括以下步骤:
步骤S2091、提取出所述任务的任务信息中的任务属性信息和任务参数信息。
步骤S2092、从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑。
任务参数信息是获取业务信息的渠道,任务拦截逻辑主要用来根据任务参数信息获取与任务对应的业务信息。由于所述任务拦截逻辑与所述任务执行方式为一一对应的关系,因此,主要依据任务的执行方式确定任务拦截逻辑,即从预设的多个任务拦截逻辑中,查询出与所述任务执行方式对应的任务拦截逻辑。
步骤S2093、利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息。
步骤S2094、根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑。
具体的,所述任务处理逻辑与所述任务属性信息中的任务执行方式为一一对应的关系,因此主要是根据所述任务的任务执行方式,从预设的多个任务处理逻辑中,选取与所述任务执行方式对应的任务处理逻辑。
任务处理逻辑决定了后续任务执行时的具体流程、方式等。举例来说,对于某些信息查询类的任务或是机构的撤并类的任务,对任务的执行结果不在意,在任务执行完成后,不需再对任务表中的任务信息做任何处理,则在后台服务器的线程池中执行完成该任务后,不会再触发新的操作,即不需对该任务做任何相关处理。对于某些发送邮件、发送短消息类的任务来说,有时候会对任务的执行结果比较在意,需要在任务执行完成后,记录任务的执行状态、执行过程等。对于生成相关数据的EXCEL表单/文档之类的任务,在任务执行完成后,则会触发一个新的任务。不同的任务采用何种处理方式,均囊括在任务处理逻辑之中。
步骤S2095、将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
执行完步骤S2095之后,任务即在任务执行队列中处于等待被执行的状态。
步骤S210、当该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行。当然,若任务执行队列中无未被执行的任务,则休眠一段时间。
在选取待执行的任务时,可按照任务放入执行队列的时间顺序,优先执行最先放入到执行队列中的任务,也可按照任务模式来选取优先执行的任务,如对于实时任务来说,对任务结果反馈的即时性要求较高,则可优先执行,对于准实时任务来说,对任务结果反馈的即时性要求不高,则可稍后执行。具体情况具体设计,本实施例这对此不作限定。
针对一台后台服务器,其中的线程池的大小设置方式为:对于IO密集型任务,所述线程池中设置有2N个线程,对于计算密集型任务,所述线程池中设置有N个线程,其中N为后台服务器中CPU的核数。
对放入线程池中执行的任务来说,具体的执行方式为:根据所述获取到的任务的任务信息,将所述任务分解为多个并行执行的子任务,为每个子任务分配线程池中的一个线程并执行,直至所有子任务执行完成。
将一个任务在线程池中分解为多个子任务,由线程池中的多个线程并行执行,进一步加快了任务的处理速度。相应的,线程池中还设置有计数模块,用来对多个可并行执行的子任务的执行过程进行计数。
步骤S211、任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要更新任务状态和/或记录任务的处理日志,若是,进入步骤S212,更新数据库中所述任务的任务状态和/或记录任务的处理日志。步骤S211-步骤S212可简称为任务的第一后置处理过程。
如步骤S2094中的描述,对于某些发送邮件、发送短消息类的任务来说,会对任务的执行结果比较在意,需要在任务执行完成后,更新任务状态和/记录任务的处理日志,则执行此步骤。
一般情况下,是否要更新任务状态和/记录任务的处理日志,已经设置在任务处理逻辑中了。除了根据任务处理逻辑判断外,因为任务处理逻辑与任务属性信息中的任务执行方式是对应关系,还可以根据任务执行方式进行判断。
步骤S213、任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要对任务执行结果进行后续操作,若是,则进入步骤S214,将该后续操作需求封装成新的任务请求报文,之后根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中,即调用任务生成单元的功能。步骤S213-步骤S214可简称为任务的第二后置处理过程。
举例来说,对于生成相关数据的EXCEL表单的任务,在预处理过程中,需要先查询出需要生成EXCEL表单的数据或这些数据的存储位置,之后找到相应的任务执行逻辑,将任务参数信息、任务执行逻辑等与查询到数据或这些数据的存储位置封装在一起,放入任务执行队列。之后在线程池中,根据查询到的数据,生成所需的EXCEL表单,并将该EXCEL表单存储到数据库的某个位置,同时需要将该EXCEL表单的存储位置反馈给任务发起者,而将将该EXCEL表单的存储位置反馈给业务发起者就是一个消息发送类型的新任务。服务器会将该新任务封装成新的任务请求报文,由该服务器中的任务生成单元生成一个新的任务,并进行相应的处理。
其中,步骤S211和步骤S213的顺序可以互换,并且,两个步骤可以是顺序执行的关系,也可以并行执行,二者没有任何制约关系,本实施例中仅以二者顺序执行为例进行说明。
本实施例中将任务的执行过程又进一步划分四个阶段,即任务的抓取并预处理过程,以及在线程池中的具体执行过程,此外还设置了任务的第一处理过程和第二后置处理过程。
其中,任务的抓取并预处理过程与任务在线程池中的具体执行过程也并非是紧密耦合的关系,即对于同一个任务来说,并非是一个过程执行完成后,必须立即执行另一个过程,而是在服务器的线程池有多余的线程能接受新的任务时,才主动获取任务执行队列中的任务,充分保证了任务执行过程的稳定性,也确保了所有任务均能够被执行。从另一个角度来说,对于同一个任务来说,不改变原有顺序执行的步骤,只是将现有技术这任务执行的各个环节的紧密耦合关系,更改为松耦合的关系,即将现有技术中高并发且需要同步处理的任务请求处理方式转换为异步处理的方式,减轻了服务器因硬件资源有限导致的性能瓶颈的限制,而且通过线程池执行的方式,也能够合理控制任务执行的并发数,能充分利用服务器的处理能力,相较于现有技术,也提高了服务器的处理能力,降低了因资源耗尽而引起的服务器不稳定甚至宕机的可能性,从而提高了服务器的安全性和稳定性。
并且,对于不同类型的任务来说,设置了第一处理过程和第二后置处理过程,可在这两个过程中插入新的任务处理逻辑,增强了任务处理的灵活性和可扩展性,在增加新的业务类型时,可很方便的扩展新的任务处理方式,避免了对服务器处理架构的大幅度调整。并且,该任务处理方法应用在集群环境时,也使整个企业服务系统在硬件层面具备较强的横向扩展能力。
实施例三
与上一实施例相比,本实施例中增加了对故障任务的恢复功能,确保故障任务也能够被执行。
当后台服务器启动后,或出现故障之后重新启动后,先检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,之后再执行从所述数据库的任务表中抓取未被执行的任务的步骤,若不存在故障任务,则直接进入从所述数据库的任务表中抓取未被执行的任务的步骤。
所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
实施例四
与上一实施例相比,本实施例中增加了对定时任务的处理过程。在实时任务和准实时任务的执行过程中,同时以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态,也就是修改任务类型,将定时任务修改为实时任务或准实时任务。定时任务修改为实时任务或准实时任务后,会立即被处于空闲状态的服务器抓取并执行。
具体的,本实施例中可采用基于多级时间轮的原理设计的定时器,通过定时器来触发定时任务的执行。
实施例五
与方法实施例相对应,本实施例公开了一种任务请求处理装置,应用于如图1所示的企业信息系统,所述企业信息系统包括数据库和多个相互独立工作的后台服务器,该装置位于在所述后台服务器上。该处理装置的结构图如图5所示,包括以下功能模块:
接收单元11,用于接收企业服务总线发送的任务请求报文。
任务生成单元12,用于根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。此外,任务生成单元12还用于为所述任务生成任务号,所述任务号为所述任务的唯一标识。
第一任务执行单元13,用于从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务。
线程池创建单元14,用于创建线程池。
存储单元15,用于存储预设的与不同任务对应的任务处理逻辑。存储单元15还用于存储预设的不同任务对应的任务拦截逻辑。
此外,处理装置还包括:
定时单元16,用于以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态。
故障恢复单元17,用于在从所述数据库的任务表中抓取未被执行的任务之前,检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
具体的,第一任务执行单元13包括以下功能模块:
任务抓取单元131,用于当后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,并对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中。
第二任务执行单元132,用于当后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行。
第一后置处理单元133,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志。
第二后置处理单元134,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并将所述新的任务请求报文发送给所述任务生成单元。
更进一步,任务抓取单元131包括:
抓取单元1311,用于当后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务。
锁定单元1312,用于为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取。所述锁定标识中包括设置该锁定标识的后台服务器标识,且所述锁定标识与所述抓取到的未被执行的任务的任务号相关联。
任务预处理单元1313,用于对抓取到的任务进行预处理。
所述任务预处理单元1313包括:
信息提取单元,用于提取出所述任务的任务信息中的任务属性信息和任务参数信息,所述任务属性信息包括任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间。
第一查询单元,用于从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑。
第一获取单元,用于利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息。
第二查询单元,用于根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑。
第一封装单元,用于将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
实施例六
与方法实施例相对应,本实施例公开了一种企业信息系统,如图1所示,该企业信息系统包括客户端1、客户端服务器2、企业服务总线2、数据库5和多个相互独立工作的后台服务器41-4n。
所述后台服务器用于接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。
进一步的,所述后台服务器的工作可以细化为:接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在该后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中,并且,在该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行,并且,在任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志,并且,任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (23)

1.一种任务请求处理方法,应用于企业信息系统,所述企业信息系统包括数据库和多个相互独立工作的后台服务器,该方法在所述后台服务器上执行,其特征在于,该方法包括:
任意后台服务器接收企业服务总线发送的任务请求报文;
根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联;
任意后台服务器处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务。
2.根据权利要求1所述的任务请求处理方法,其特征在于,所述根据接收到的任务请求报文生成任务后,将所述任务添加到数据库的任务表之前,还包括,为所述任务生成任务号,所述任务号为所述任务的唯一标识。
3.根据权利要求2所述的任务请求处理方法,其特征在于,任意后台服务器处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池执行抓取到的任务具体为:
当某个后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中;
当该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行;
任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要更新任务状态和/或记录任务的处理日志,若是,则更新数据库中所述任务的任务状态和/或记录任务的处理日志;
任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,判断是否需要对任务执行结果进行后续操作,若是,则将该后续操作需求封装成新的任务请求报文,并根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中。
4.根据权利要求3所述的任务请求处理方法,其特征在于,所述从所述任务表中抓取未被执行的任务的过程为:从所述任务表中抓取未被执行的任务时,为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取,所述锁定标识中包括设置该锁定标识的后台服务器标识。
5.根据权利要求4所述的任务请求处理方法,其特征在于,所述锁定标识与所述抓取到的未被执行的任务的任务号相关联。
6.根据权利要求5所述的任务请求处理方法,其特征在于,所述从所述任务表中抓取未被执行的任务时,对任务的抓取规则为:按照所述任务表中任务生成的时间顺序,优先抓取所述任务表中最先生成且未被执行的任务。
7.根据权利要求3所述的任务请求处理方法,其特征在于,所述对抓取到的任务进行预处理,并将预处理后的处理结果,放入该后台服务器的任务执行队列的过程具体为:
提取出所述任务的任务信息中的任务属性信息和任务参数信息;
从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑;
利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息;
根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑;
将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
8.根据权利要求7所述的任务请求处理方法,其特征在于,所述任务属性信息包括任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间。
9.根据权利要求8所述的任务请求处理方法,其特征在于,所述从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑的方式具体为:从预设的多个任务拦截逻辑中,查询出与所述任务执行方式对应的任务拦截逻辑,所述任务拦截逻辑与所述任务执行方式为一一对应的关系;
所述根据所述任务属性信息,从预设的多个任务处理逻辑中,选取与所述任务对应的任务处理逻辑的方式具体为:根据所述任务的任务执行方式,从预设的多个任务处理逻辑中,选取与所述任务执行方式对应的任务处理逻辑,所述任务处理逻辑与所述任务执行方式为一一对应的关系。
10.根据权利要求9所述的任务请求处理方法,其特征在于,所述任务模式包括实时任务、准实时任务、定时任务;所述任务执行方式包括发送消息、发送邮件、发送短信、导入/导出信息、生成文件、调用其他组件的联机服务;一种任务执行方式对应一种任务模式。
11.根据权利要求1所述的任务请求处理方法,其特征在于,针对一台后台服务器,其中的线程池的大小设置方式为:
对于IO密集型任务,所述线程池中设置有2N个线程,对于计算密集型任务,所述线程池中设置有N个线程,其中N为后台服务器中CPU的核数。
12.根据权利要求3所述的任务请求处理方法,其特征在于,所述将获取到的任务放入线程池中执行的方式具体为:根据所述获取到的任务的任务信息,将所述任务分解为多个并行执行的子任务,为每个子任务分配线程池中的一个线程并执行,直至所有子任务执行完成。
13.根据权利要求1所述的任务请求处理方法,其特征在于,还包括:以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态。
14.根据权利要求3所述的任务请求处理方法,其特征在于,所述从所述数据库的任务表中抓取未被执行的任务之前,还包括:
检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
15.一种任务请求处理装置,应用于企业信息系统,所述企业信息系统包括数据库和多个相互独立工作的后台服务器,该装置位于在所述后台服务器上,其特征在于,该处理装置包括:
接收单元,用于接收企业服务总线发送的任务请求报文;
任务生成单元,用于根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联;
第一任务执行单元,用于从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务;
线程池创建单元,用于创建线程池;
存储单元,用于存储预设的与不同任务对应的任务处理逻辑。
16.根据权利要求15所述的任务请求处理装置,其特征在于,所述任务生成单元还用于为所述任务生成任务号,所述任务号为所述任务的唯一标识。
17.根据权利要求16所述的任务请求处理装置,其特征在于,所述第一任务执行单元包括:
任务抓取单元,用于当后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,并对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中;
第二任务执行单元,用于当后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行;
第一后置处理单元,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志;
第二后置处理单元,用于任务在线程池中执行完成后,根据所述任务的任务属性信息和/或任务处理逻辑,在确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并将所述新的任务请求报文发送给所述任务生成单元。
18.根据权利要求17所述的任务请求处理装置,其特征在于,所述任务抓取单元还用于为抓取到的任务设置锁定标识,以避免抓取到的任务被其它后台服务器再次抓取,所述锁定标识中包括设置该锁定标识的后台服务器标识,且所述锁定标识与所述抓取到的未被执行的任务的任务号相关联。
19.根据权利要求18所述的任务请求处理装置,其特征在于,所述任务抓取单元包括任务预处理单元,用于对抓取到的任务进行预处理;所述存储单元还用于存储预设的不同任务对应的任务拦截逻辑,所述任务预处理单元包括:信息提取单元,用于提取出所述任务的任务信息中的任务属性信息和任务参数信息,所述任务属性信息包括任务号、任务模式、任务执行方式、任务执行状态、任务交易状态、任务创建者和任务创建时间;
第一查询单元,用于从预设的多个任务拦截逻辑中,查询出与所述任务属性信息对应的任务拦截逻辑;
第一获取单元,用于利用查询出的所述任务拦截逻辑,根据所述任务参数信息,获取与所述任务对应的业务信息;
第二查询单元,用于根据所述任务属性信息,从预设的多个任务处理逻辑中,查询出与所述任务对应的任务处理逻辑;
第一封装单元,用于将所述任务属性信息、任务参数信息、获取到的与所述任务对应的所述业务信息、以及与所述任务对应的任务处理逻辑封装在一起,放入该后台服务器的任务执行队列中。
20.根据权利要求15所述的任务请求处理装置,其特征在于,还包括:
定时单元,用于以轮循的方式对所述任务表中的定时任务进行检测,当到达数据库中定时任务的指定执行时间时,修改所述定时任务的可执行状态。
21.根据权利要求15所述的任务请求处理装置,其特征在于,还包括:
故障恢复单元,用于在从所述数据库的任务表中抓取未被执行的任务之前,检查当前后台服务器中是否存在故障任务,若存在,则释放所述故障任务,并将所述故障任务重新添加到数据库的任务表中,所述故障任务包括处于执行过程中,但未被执行完成的任务,以及已从所述任务执行队列中取出,但未被执行的任务。
22.一种企业信息系统,包括客户端、客户端服务器、企业服务总线、数据库和多个相互独立工作的后台服务器,其特征在于,所述后台服务器用于接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在处于空闲状态时,从所述数据库的任务表中抓取未被执行的任务,并在线程池中执行抓取到的任务,所述任务的任务信息中包含任务属性信息和任务参数信息,所述任务属性信息与所述任务的任务处理逻辑相关联,所述任务参数信息与所述任务的业务信息相关联。
23.一种企业信息系统,包括客户端、客户端服务器、企业服务总线、数据库和多个相互独立工作的后台服务器,其特征在于,所述后台服务器用于接收企业服务总线发送的任务请求报文,根据接收到的任务请求报文生成任务,并将所述任务添加到数据库的任务表中,并在该后台服务器的任务执行队列中的任务数量低于预设阈值时,从所述任务表中抓取未被执行的任务,对抓取到的任务进行预处理,将预处理后的处理结果,放入该后台服务器的任务执行队列中,并且,在该后台服务器的线程池中存在空闲线程时,获取任务执行队列中未被执行的任务,将获取到的任务放入线程池中执行,并且,在任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要更新任务状态和/或记录任务的处理日志时,更新数据库中所述任务的任务状态和/或记录任务的处理日志,并且,任务在线程池中执行完成后,在根据所述任务的任务属性信息和/或任务处理逻辑,确定需要对任务执行结果进行后续操作时,将该后续操作需求封装成新的任务请求报文,并根据所述新的任务请求报文生成新的任务,并将所述新的任务添加到数据库的任务表中。
CN201610460153.3A 2016-06-22 2016-06-22 任务请求处理方法、装置和企业信息系统 Active CN106095585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610460153.3A CN106095585B (zh) 2016-06-22 2016-06-22 任务请求处理方法、装置和企业信息系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610460153.3A CN106095585B (zh) 2016-06-22 2016-06-22 任务请求处理方法、装置和企业信息系统

Publications (2)

Publication Number Publication Date
CN106095585A true CN106095585A (zh) 2016-11-09
CN106095585B CN106095585B (zh) 2019-08-30

Family

ID=57252289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610460153.3A Active CN106095585B (zh) 2016-06-22 2016-06-22 任务请求处理方法、装置和企业信息系统

Country Status (1)

Country Link
CN (1) CN106095585B (zh)

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106773805A (zh) * 2016-11-15 2017-05-31 努比亚技术有限公司 任务消息处理系统及方法
CN106886453A (zh) * 2017-02-20 2017-06-23 恒生电子股份有限公司 用于异步多道的信息处理方法、装置和系统
CN107330096A (zh) * 2017-07-05 2017-11-07 恒生电子股份有限公司 文件处理方法及装置、计算机可读存储介质和电子设备
CN107577529A (zh) * 2017-09-21 2018-01-12 浪潮软件股份有限公司 一种请求处理方法及装置
CN107632889A (zh) * 2017-06-28 2018-01-26 努比亚技术有限公司 一种实现服务降级的方法、设备及计算机可读存储介质
CN107678838A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台
CN107784448A (zh) * 2017-11-07 2018-03-09 中国银行股份有限公司 一种瀑布模型下的任务管理方法及系统
CN108076098A (zh) * 2016-11-16 2018-05-25 北京京东尚科信息技术有限公司 一种业务处理方法及系统
CN108132835A (zh) * 2017-12-29 2018-06-08 五八有限公司 基于多进程的任务请求处理方法、装置和系统
CN108197912A (zh) * 2016-12-08 2018-06-22 阿里巴巴集团控股有限公司 一种业务处理系统及方法
CN108234688A (zh) * 2017-12-29 2018-06-29 迈普通信技术股份有限公司 重复地址检测的方法及装置
CN108228326A (zh) * 2017-12-29 2018-06-29 深圳乐信软件技术有限公司 批量任务处理方法和分布式系统
CN108279972A (zh) * 2018-01-26 2018-07-13 郑州云海信息技术有限公司 一种lua虚拟机任务执行方法及相关装置
CN108334545A (zh) * 2017-12-27 2018-07-27 微梦创科网络科技(中国)有限公司 一种实现异步服务的方法及装置
CN108416449A (zh) * 2018-02-05 2018-08-17 北京奇艺世纪科技有限公司 一种运维方法和装置
CN108710541A (zh) * 2018-05-22 2018-10-26 泰康保险集团股份有限公司 一种定时任务的执行方法及装置
CN108733461A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 分布式任务调度方法和装置
CN108763082A (zh) * 2018-05-30 2018-11-06 平安普惠企业管理有限公司 测试数据生成方法、装置、计算机设备及存储介质
CN108805698A (zh) * 2018-06-12 2018-11-13 中国银行股份有限公司 一种银行交互式对账方法及装置
CN108924214A (zh) * 2018-06-27 2018-11-30 中国建设银行股份有限公司 一种计算集群的负载均衡方法、装置及系统
CN109062698A (zh) * 2018-08-13 2018-12-21 郑州云海信息技术有限公司 一种任务处理方法、装置及系统
CN109064295A (zh) * 2018-09-05 2018-12-21 中国平安财产保险股份有限公司 投保报价的计算方法、装置、计算机设备和存储介质
CN109246222A (zh) * 2018-09-21 2019-01-18 郑州云海信息技术有限公司 服务请求处理方法、装置、系统及计算机可读存储介质
CN109445928A (zh) * 2018-11-14 2019-03-08 郑州云海信息技术有限公司 一种访问请求处理方法、装置、设备及可读存储介质
CN109542920A (zh) * 2018-11-23 2019-03-29 泰康保险集团股份有限公司 一种数据传输方法、装置、介质和电子设备
CN109598603A (zh) * 2018-10-26 2019-04-09 阿里巴巴集团控股有限公司 一种开户任务处理方法及开户服务系统
CN109714411A (zh) * 2018-12-25 2019-05-03 浪潮电子信息产业股份有限公司 springboot微服务框架的任务定时执行方法、装置、设备及介质
CN109840149A (zh) * 2019-02-14 2019-06-04 百度在线网络技术(北京)有限公司 任务调度方法、装置、设备及存储介质
CN110119305A (zh) * 2019-05-13 2019-08-13 北京达佳互联信息技术有限公司 任务执行方法、装置、计算机设备及存储介质
CN110119323A (zh) * 2019-05-13 2019-08-13 重庆八戒电子商务有限公司 一种基于时间轮执行延迟队列的方法及系统
CN110443598A (zh) * 2019-08-08 2019-11-12 上海中通吉网络技术有限公司 账户结算方法和装置
CN110502562A (zh) * 2019-08-16 2019-11-26 深圳证券交易所 数据导入方法及装置、可读存储介质
CN110807058A (zh) * 2018-08-01 2020-02-18 北京京东尚科信息技术有限公司 一种导出数据的方法和系统
CN111158798A (zh) * 2019-12-27 2020-05-15 中国银行股份有限公司 一种业务数据处理方法及装置
CN111475204A (zh) * 2020-04-26 2020-07-31 中国人民银行清算总中心 一种主机交互操作方法、系统及中间转换装置
CN111913804A (zh) * 2020-07-30 2020-11-10 平安证券股份有限公司 访前报告的生成方法、装置、电子设备及存储介质
CN111949387A (zh) * 2020-07-17 2020-11-17 上海淇馥信息技术有限公司 一种处理业务任务的方法、装置和电子设备
CN112380024A (zh) * 2021-01-18 2021-02-19 天道金科股份有限公司 一种基于分布式计数的线程调度方法
CN109471711B (zh) * 2018-11-12 2021-03-02 中国银行股份有限公司 一种任务处理的方法及装置
CN113051019A (zh) * 2021-03-31 2021-06-29 北京和信融慧信息科技有限公司 流程任务执行管控方法、装置以及设备
CN113220427A (zh) * 2021-04-15 2021-08-06 远景智能国际私人投资有限公司 任务调度方法、装置、计算机设备及存储介质
CN113238843A (zh) * 2021-05-13 2021-08-10 北京京东振世信息技术有限公司 一种任务执行方法、装置、设备及存储介质
CN113485812A (zh) * 2021-07-23 2021-10-08 重庆富民银行股份有限公司 基于大数据量任务的分区并行处理方法及系统
CN113485815A (zh) * 2021-07-27 2021-10-08 中国银行股份有限公司 作业批量处理系统、方法、装置、存储介质及电子设备
WO2024066342A1 (zh) * 2022-09-26 2024-04-04 京东科技信息技术有限公司 任务处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1670705A (zh) * 2004-03-16 2005-09-21 联想(北京)有限公司 一种对机群实现集中并发管理的方法
US20060143608A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Thread monitoring using shared memory
CN104735137A (zh) * 2015-03-09 2015-06-24 广州杰赛科技股份有限公司 一种实现客户端与服务器端异步交互的方法和系统
CN105389209A (zh) * 2015-12-25 2016-03-09 中国建设银行股份有限公司 一种异步批量任务处理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1670705A (zh) * 2004-03-16 2005-09-21 联想(北京)有限公司 一种对机群实现集中并发管理的方法
US20060143608A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Thread monitoring using shared memory
CN104735137A (zh) * 2015-03-09 2015-06-24 广州杰赛科技股份有限公司 一种实现客户端与服务器端异步交互的方法和系统
CN105389209A (zh) * 2015-12-25 2016-03-09 中国建设银行股份有限公司 一种异步批量任务处理方法及系统

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106773805A (zh) * 2016-11-15 2017-05-31 努比亚技术有限公司 任务消息处理系统及方法
CN108076098B (zh) * 2016-11-16 2021-01-26 北京京东尚科信息技术有限公司 一种业务处理方法及系统
CN108076098A (zh) * 2016-11-16 2018-05-25 北京京东尚科信息技术有限公司 一种业务处理方法及系统
CN108197912A (zh) * 2016-12-08 2018-06-22 阿里巴巴集团控股有限公司 一种业务处理系统及方法
CN106886453A (zh) * 2017-02-20 2017-06-23 恒生电子股份有限公司 用于异步多道的信息处理方法、装置和系统
CN108733461A (zh) * 2017-04-18 2018-11-02 北京京东尚科信息技术有限公司 分布式任务调度方法和装置
CN107632889A (zh) * 2017-06-28 2018-01-26 努比亚技术有限公司 一种实现服务降级的方法、设备及计算机可读存储介质
CN107330096A (zh) * 2017-07-05 2017-11-07 恒生电子股份有限公司 文件处理方法及装置、计算机可读存储介质和电子设备
CN107577529A (zh) * 2017-09-21 2018-01-12 浪潮软件股份有限公司 一种请求处理方法及装置
CN107678838A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台
CN107678838B (zh) * 2017-10-19 2021-07-02 郑州云海信息技术有限公司 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台
CN107784448A (zh) * 2017-11-07 2018-03-09 中国银行股份有限公司 一种瀑布模型下的任务管理方法及系统
CN108334545A (zh) * 2017-12-27 2018-07-27 微梦创科网络科技(中国)有限公司 一种实现异步服务的方法及装置
CN108334545B (zh) * 2017-12-27 2021-09-03 微梦创科网络科技(中国)有限公司 一种实现异步服务的方法及装置
CN108228326A (zh) * 2017-12-29 2018-06-29 深圳乐信软件技术有限公司 批量任务处理方法和分布式系统
CN108234688A (zh) * 2017-12-29 2018-06-29 迈普通信技术股份有限公司 重复地址检测的方法及装置
CN108132835A (zh) * 2017-12-29 2018-06-08 五八有限公司 基于多进程的任务请求处理方法、装置和系统
CN108279972A (zh) * 2018-01-26 2018-07-13 郑州云海信息技术有限公司 一种lua虚拟机任务执行方法及相关装置
CN108416449A (zh) * 2018-02-05 2018-08-17 北京奇艺世纪科技有限公司 一种运维方法和装置
CN108416449B (zh) * 2018-02-05 2022-06-03 北京奇艺世纪科技有限公司 一种运维方法和装置
CN108710541A (zh) * 2018-05-22 2018-10-26 泰康保险集团股份有限公司 一种定时任务的执行方法及装置
CN108710541B (zh) * 2018-05-22 2022-02-01 泰康保险集团股份有限公司 一种定时任务的执行方法及装置
CN108763082A (zh) * 2018-05-30 2018-11-06 平安普惠企业管理有限公司 测试数据生成方法、装置、计算机设备及存储介质
CN108805698A (zh) * 2018-06-12 2018-11-13 中国银行股份有限公司 一种银行交互式对账方法及装置
CN108924214A (zh) * 2018-06-27 2018-11-30 中国建设银行股份有限公司 一种计算集群的负载均衡方法、装置及系统
CN110807058B (zh) * 2018-08-01 2024-04-12 北京京东尚科信息技术有限公司 一种导出数据的方法和系统
CN110807058A (zh) * 2018-08-01 2020-02-18 北京京东尚科信息技术有限公司 一种导出数据的方法和系统
CN109062698A (zh) * 2018-08-13 2018-12-21 郑州云海信息技术有限公司 一种任务处理方法、装置及系统
CN109064295A (zh) * 2018-09-05 2018-12-21 中国平安财产保险股份有限公司 投保报价的计算方法、装置、计算机设备和存储介质
CN109246222A (zh) * 2018-09-21 2019-01-18 郑州云海信息技术有限公司 服务请求处理方法、装置、系统及计算机可读存储介质
CN109598603A (zh) * 2018-10-26 2019-04-09 阿里巴巴集团控股有限公司 一种开户任务处理方法及开户服务系统
CN109471711B (zh) * 2018-11-12 2021-03-02 中国银行股份有限公司 一种任务处理的方法及装置
CN109445928A (zh) * 2018-11-14 2019-03-08 郑州云海信息技术有限公司 一种访问请求处理方法、装置、设备及可读存储介质
CN109542920B (zh) * 2018-11-23 2021-11-19 泰康保险集团股份有限公司 一种数据传输方法、装置、介质和电子设备
CN109542920A (zh) * 2018-11-23 2019-03-29 泰康保险集团股份有限公司 一种数据传输方法、装置、介质和电子设备
CN109714411A (zh) * 2018-12-25 2019-05-03 浪潮电子信息产业股份有限公司 springboot微服务框架的任务定时执行方法、装置、设备及介质
CN109840149A (zh) * 2019-02-14 2019-06-04 百度在线网络技术(北京)有限公司 任务调度方法、装置、设备及存储介质
CN110119305A (zh) * 2019-05-13 2019-08-13 北京达佳互联信息技术有限公司 任务执行方法、装置、计算机设备及存储介质
CN110119323A (zh) * 2019-05-13 2019-08-13 重庆八戒电子商务有限公司 一种基于时间轮执行延迟队列的方法及系统
CN110119305B (zh) * 2019-05-13 2022-01-21 北京达佳互联信息技术有限公司 任务执行方法、装置、计算机设备及存储介质
CN110443598A (zh) * 2019-08-08 2019-11-12 上海中通吉网络技术有限公司 账户结算方法和装置
CN110443598B (zh) * 2019-08-08 2023-03-28 上海中通吉网络技术有限公司 账户结算方法和装置
CN110502562A (zh) * 2019-08-16 2019-11-26 深圳证券交易所 数据导入方法及装置、可读存储介质
CN111158798A (zh) * 2019-12-27 2020-05-15 中国银行股份有限公司 一种业务数据处理方法及装置
CN111475204A (zh) * 2020-04-26 2020-07-31 中国人民银行清算总中心 一种主机交互操作方法、系统及中间转换装置
CN111949387A (zh) * 2020-07-17 2020-11-17 上海淇馥信息技术有限公司 一种处理业务任务的方法、装置和电子设备
CN111949387B (zh) * 2020-07-17 2022-08-23 上海淇馥信息技术有限公司 一种处理业务任务的方法、装置和电子设备
CN111913804A (zh) * 2020-07-30 2020-11-10 平安证券股份有限公司 访前报告的生成方法、装置、电子设备及存储介质
CN112380024A (zh) * 2021-01-18 2021-02-19 天道金科股份有限公司 一种基于分布式计数的线程调度方法
CN113051019A (zh) * 2021-03-31 2021-06-29 北京和信融慧信息科技有限公司 流程任务执行管控方法、装置以及设备
CN113220427A (zh) * 2021-04-15 2021-08-06 远景智能国际私人投资有限公司 任务调度方法、装置、计算机设备及存储介质
CN113238843A (zh) * 2021-05-13 2021-08-10 北京京东振世信息技术有限公司 一种任务执行方法、装置、设备及存储介质
CN113485812A (zh) * 2021-07-23 2021-10-08 重庆富民银行股份有限公司 基于大数据量任务的分区并行处理方法及系统
CN113485812B (zh) * 2021-07-23 2023-12-12 重庆富民银行股份有限公司 基于大数据量任务的分区并行处理方法及系统
CN113485815A (zh) * 2021-07-27 2021-10-08 中国银行股份有限公司 作业批量处理系统、方法、装置、存储介质及电子设备
WO2024066342A1 (zh) * 2022-09-26 2024-04-04 京东科技信息技术有限公司 任务处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN106095585B (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
CN106095585A (zh) 任务请求处理方法、装置和企业信息系统
CN110545260B (zh) 一种基于拟态构造的云管理平台构建方法
CN106375241B (zh) 批量数据处理方法、前端系统、主机及批量数据处理系统
CN101882089B (zh) 一种采用多线程处理业务会话应用的方法及装置
CN108805704A (zh) 区块链业务实现方法、监听设备、存储介质及系统
CN109451072A (zh) 一种基于Kafka的消息缓存系统和方法
CN110460658A (zh) 一种基于拟态构造的分布式存储构建方法
CN109064345A (zh) 消息处理方法、系统以及计算机可读存储介质
CN107621973A (zh) 一种跨集群的任务调度方法及装置
US20160182614A1 (en) Elastic scale out policy service
CN103634394B (zh) 一种面向数据流处理的弹性可扩展资源管理方法及系统
CN104253850A (zh) 一种任务分布式调度方法和系统
CN101366238A (zh) 用于改进的基于网络的内容检查的系统和方法
CN105516086B (zh) 业务处理方法及装置
CN103853826B (zh) 一种分布式性能数据处理方法
CN110851248A (zh) 异步任务数据处理方法、装置及计算机可读存储介质
EP4113933A1 (en) Microservice invoking method and apparatus, device and medium
CN111104188A (zh) 漏洞扫描器的调度方法及装置
CN107045459A (zh) 一种基于ansible的运维请求处理方法及装置
CN110471774A (zh) 一种基于统一任务调度的数据处理方法及装置
CN104268007A (zh) 一种事件请求分布式调度方法和系统
CN110868323A (zh) 一种带宽控制方法、装置、设备及介质
CN111245887B (zh) Hbase连接动态保持方法、设备、存储介质及系统
CN107480302A (zh) 一种基于企业级应用场景的松耦合数据集成同步实现方法
CN114666272B (zh) 限流处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant