CN116089037A - 一种异步任务处理实现方法及系统 - Google Patents
一种异步任务处理实现方法及系统 Download PDFInfo
- Publication number
- CN116089037A CN116089037A CN202310003260.3A CN202310003260A CN116089037A CN 116089037 A CN116089037 A CN 116089037A CN 202310003260 A CN202310003260 A CN 202310003260A CN 116089037 A CN116089037 A CN 116089037A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- management center
- state
- consumer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种异步任务处理实现方法及系统,属于信息技术领域。所述方法应用于客户端和服务端,所述客户端为用户操作端,所述服务端包含有生产者服务、消费者服务、任务队列管理中心、任务状态管理中心和操作日志管理中心,所述任务队列管理中心至少存在一个任务队列,任务队列为先进先出的阻塞队列;多任务并发的情况下,将任务按请求时间先后加入到队列中,然后由消费者服务进程顺序执行,达到异步处理的效果,限制了服务器中同时执行的任务个数,削弱了业务高峰期对服务端压力,使服务器能稳定运行;客户端可以动态获取任务的执行情况,提高了客户的体验感;服务器中的相关操作都自动保存操作日志,方便后续管理和问题排查。
Description
技术领域
本申请属于信息技术领域,具体涉及一种异步任务处理系统及实现方法。
背景技术
目前,针对系统业务高峰期,大量用户进行导出、数据计算等工作时,尤其是多用户同时进行大数据量的导出操作,没有采用异步处理这些任务容易导致服务端内存溢出或服务端宕机;用户操作新增任务时,如果服务端执行时间比较长,需要一直在界面等待,客户端等待时间久,且不知道任务的执行进度,体验感差;对失败的任务要进行问题排查时,由于没有操作日志可查,导致服务器管理人员无法得到客户端和服务器中程序进行了哪些操作,从而工作无法进行,对后续任务的规范化管理也很不利。
发明内容
为此,本发明提供一种异步任务队列实现方法及系统,以解决现有技术中多用户同时进行大数据量操作导致服务器内存溢出或宕机、用户操作是无法显示任务进度从而体验感差、问题排查时无操作日志可查的问题。
为实现以上目的,本发明采用如下技术方案:
第一方面,本发明提供一种异步任务处理实现方法,应用于客户端和服务端,所述客户端为用户操作端,所述服务端包含有生产者服务、消费者服务、任务队列管理中心、任务状态管理中心和操作日志管理中心,所述任务队列管理中心至少存在一个任务队列,任务队列为先进先出的阻塞队列;
所述异步任务处理实现方法包括以下步骤:
所述客户端新增任务请求发送到服务端,服务端的生产者服务向任务队列管理中心发送新增任务请求,任务队列管理中心接收新增任务请求,将新增任务添加到任务队列的末尾,并生成任务ID返回给生产者服务,
同时任务队列管理中心发送新增任务状态到任务状态管理中心,任务状态管理中心更新任务状态为等待,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述消费者服务每隔第一预设时间向任务队列管理中心发送获取任务请求,任务管理中心收到获取任务请求后,将任务队列中首个任务返回给消费者服务,消费者服务接收到的任务并向任务状态管理中心发送任务状态,任务状态管理中心更新任务状态为处理中,并调用操作日志管理中心在操作日志数据库中新增一条日志,
所述消费者服务执行接收到的任务,并每隔第二预设时间更新任务状态到任务状态管理中心直到执行完毕,任务执行完毕后保存执行结果文件,更新任务状态时将执行进度和执行结果文件地址加入到任务状态中,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务每隔第三预设时间向任务状态管理中心发送携带任务ID的查询请求,任务状态管理中心根据任务ID查询到任务状态并返回,任务状态管理中心调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务根据查询到的任务状态判断任务是否执行完成,若判断任务执行未完成,则每隔第三预设时间进行查询请求,若判断任务执行完成,则根据任务状态中的执行结果文件地址获取到执行结果文件,将任务的执行结果文件发送给客户端。
进一步地,所述消费者服务中包含至少一个消费者服务进程,消费者服务进程从对应的任务队列中获取任务时,判断任务列表是否为空;
若为空,则调用任务队列管理中心将队列名称和消费者服务进程标识符以键值对的形式添加到阻塞列表,其中,队列名称为键,被阻塞的消费者服务进程为值,值以链表形式存储,添加到阻塞列表的消费者服务进程为被阻塞状态,即等待状态;
若不为空,则消费者服务进程从任务队列中获取任务,并执行任务最终得到执行结果文件发给客户端,执行过程中每隔第二预设时间就会调用任务状态管理中心更新任务状态,并调用操作日志管理中心记录操作日志;
其中所述任务队列采用Redis阻塞队列,所述阻塞列表是由Redis阻塞队列维护。
进一步地,所述生产者服务中包含至少一个生产者服务进程,每个生产者服务进程至少对应一个客户端,客户端新增任务时,生产者服务进程新增任务到对应任务队列,根据队列名称查询阻塞列表中是否存在此任务队列;
若存在,则调用任务队列管理中心将队列名称添加到就绪列表中,并调用操作日志管理中心记录操作日志;
若不存在,则返回空。
进一步地,还包括Redis调度中心,Redis调度中心每隔第四预设时间会遍历所述就绪列表,根据就绪列表中的队列名称在阻塞列表中查询到消费者服务进程,并运行查询到的消费者服务进程,使这些消费者服务进程由等待状态变为运行状态,运行状态的消费者服务进程执行获取任务、更新任务状态、执行任务和保存执行结果文件。
进一步地,所述任务状态管理中心缓存在Redis中的任务状态有:等待、执行中和完成;
所述任务队列新增任务时的状态为等待;消费者服务进程从任务队列中获取任务时的状态为执行中,消费者服务进程执行任务时的任务状态为执行中,消费者服务进程执行任务完毕时的任务状态为完成。
进一步地,所述操作日志管理中心还包含展示操作日志功能,和/或,
任务状态为等待时,操作日志中记录的数据有请求参数、错误信息、操作人和操作时间,其中,请求参数对应的是请求时携带的信息,错误信息是记录该操作中操作失败的具体步骤,操作人对应的是客户端信息,操作时间为记录日志的时间;
任务状态为执行中时,操作日志中记录的数据有错误信息、执行进度和耗费时间;
任务状态为完成时,操作日志记录的数据有错误信息、执行进度、执行结果文件地址和耗费时间。
第二方面,本发明提供一种异步任务处理系统,所述系统包括:
生产者模块,包含至少一个生产者单元,生产者单元关联客户端,用于客户端发送新任务、产看任务状态和获取任务执行结果;
消费者模块,包含至少一个消费者单元,用于获取任务和执行任务,执行完任务得到的执行结果文件。
任务队列管理模块,基于Redis阻塞队列,用于所述生产者单元新增的任务时,添加任务到任务队列;所述消费者单元获取任务时,返回任务给消费者单元;所述任务队列为空时,消费者单元的阻塞和就绪;
任务状态管理模块,基于Redis缓存,用于接收生产者模块、消费者模块和任务队列管理模块发送过来的任务状态,更新到缓存中;
操作日志管理模块,用于接收任务状态管理模块的任务信息,并存储到操作日志数据库。
第三方面,本发明中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于在执行时实现上述所述的方法。
本发明采用以上技术方案,至少具备以下有益效果:
在多用户同时进行大数据量操作产生的多任务并发的情况下,将任务按请求时间先后加入到队列中,然后由消费者服务进程顺序执行,达到异步处理的效果,限制了服务器中同时执行的任务个数,削弱了业务高峰期对服务端压力,使服务器能稳定运行;客户端可以动态获取任务的执行情况,比如任务排队中,任务正在执行,数据导出进度,从而提高了客户的体验感;服务器中的相关操作都自动保存操作日志,包括请求参数、错误信息、操作人、操作时间、执行进度和执行结果,方便后续管理和问题排查。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明中异步任务队列实现方法的流程示意图;
图2是本发明中消费者服务获取任务原理示意图;
图3是本发明中生产者服务新增任务原理示意图;
图4是本发明中Redis调度中心原理示意图;
下面结合附图和具体实施方式对本发明作进一步的说明。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
相关技术中,在多个客户端同时进行大数据量的多任务操作时,由于服务器对多任务实时相应请求,服务器负荷会瞬时增大,处理不及就容易导致内存溢出或服务器直接宕机;客户端对操作产生的任务,不清楚服务器对任务处理的进度,只能等待,这样客户的体验会很差;服务器中有报错时,管理员会排查错误,由于缺少日志无法快速排查,也不方便管理员后续统计等操作。
本申请实施例,利用了阻塞队列的先进先出特性,使客户端发送的多任务能按照请求时间先后有序执行,同时加入消费者服务进程并限制个数,从而限定了同时执行任务的个数,这就减小了业务高峰期服务器的压力;客户端可以通过任务状态管理中心动态获取任务的执行进度,提高了客户的体验感;操作日志管理中心记录了服务器中发生的所有操作,后续统计和问题排查时可以依照记录的操作日志快速完成。
下面通过具体的实施例对本申请中异步任务队列实现方法进行说明。
请参阅图1,图1是根据本发明一示例性实施例提供的异步任务处理实现方法流程示意图,该方法应用于客户端和服务端,所述客户端为用户操作端,所述服务端包含有生产者服务、消费者服务、任务队列管理中心、任务状态管理中心和操作日志管理中心,所述任务队列管理中心至少存在一个任务队列,任务队列为先进先出的阻塞队列;
所述异步任务处理实现方法包括以下步骤:
所述客户端新增任务请求发送到服务端,服务端的生产者服务向任务队列管理中心发送新增任务请求,任务队列管理中心接收新增任务请求,将新增任务添加到任务队列的末尾,并生成任务ID返回给生产者服务,
同时任务队列管理中心发送新增任务状态到任务状态管理中心,任务状态管理中心更新任务状态为等待,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述消费者服务每隔第一预设时间向任务队列管理中心发送获取任务请求,任务管理中心收到获取任务请求后,将任务队列中首个任务返回给消费者服务,消费者服务接收到的任务并向任务状态管理中心发送任务状态,任务状态管理中心更新任务状态为处理中,并调用操作日志管理中心在操作日志数据库中新增一条日志,
所述消费者服务执行接收到的任务,并每隔第二预设时间更新任务状态到任务状态管理中心直到执行完毕,任务执行完毕后保存执行结果文件,更新任务状态时将执行进度和执行结果文件地址加入到任务状态中,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务每隔第三预设时间向任务状态管理中心发送携带任务ID的查询请求,任务状态管理中心根据任务ID查询到任务状态并返回,任务状态管理中心调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务根据查询到的任务状态判断任务是否执行完成,若判断任务执行未完成,则每隔第四预设时间进行查询请求,若判断任务执行完成,则根据任务状态中的执行结果文件地址获取到执行结果文件,将任务的执行结果文件发送给客户端。
需要说明的是,本实施例提供的这种方法,不仅适用于处理多任务的情况,较少任务的情况也需要引入本方法中的任务状态管理中心和操作日志管理中心,以便于客户端查看任务状态和管理员查看操作日志。
在具体实践中,所述第一预设时间、第二预设时间、第三预设时间是由管理员根据业务需求设定时间,消费者服务每隔第一预设时间就会获取任务进行处理,对于处理中的任务会每隔第二预设时间更新任务状态到任务状态管理中心直到任务执行结束,客户端每隔第三预设时间向任务状态管理中心发送携带任务ID的查询请求,继而接收到任务状态后判断是否为完成状态,若否则继续每隔第三预设时间发送查询任务,直到接收到的任务状态为完成,则停止对该任务的查询。
可以理解的是,本实施例提供的技术方案,通过阻塞队列的先进先出特性,将任务按请求时间先后加入到队列中,由限定个数的消费者服务进程顺序执行,达到异步处理的效果,限制消费者服务进程个数即限制了服务器中同时执行的任务个数,削弱了业务高峰期对服务端压力,使服务器能稳定运行;客户端可以动态获取任务的执行情况,比如任务排队中,任务正在执行,数据导出进度,从而提高了客户的体验感;服务器中的相关操作都自动保存操作日志,包括请求参数、错误信息、操作人、操作时间、执行进度和执行结果,方便后续管理和问题排查。
请参阅图2,在一个实施例中,所述消费者服务中包含至少一个消费者服务进程,消费者服务进程从对应的任务队列中获取任务时,判断任务列表是否为空;
若为空,则调用任务队列管理中心将队列名称和消费者服务进程标识符以键值对的形式添加到阻塞列表,其中,队列名称为键,被阻塞的消费者服务进程为值,值以链表形式存储,添加到阻塞列表的消费者服务进程为被阻塞状态,即等待状态;
若不为空,则消费者服务进程从任务队列中获取任务,并执行任务最终得到执行结果文件发给客户端,执行过程中每隔第二预设时间就会调用任务状态管理中心更新任务状态,并调用操作日志管理中心记录操作日志;
其中所述任务队列采用Redis阻塞队列,所述阻塞列表是由Redis阻塞队列维护。
具体的,所述消费者服务进程作用是执行客户端请求的任务,客户端发出的任务较多时,会分配多个消费者服务进程同时从任务队列中获取任务并执行,当任务队列中的任务为空时,消费者服务进程无法从任务队列中获取任务,则将这些无法获取任务的消费者进程和队列名称加到阻塞列表中,进而变为被阻塞状态不再向任务队列发送获取请求,其中上述Redis为远程字典服务。
需要说明的是,所述任务队列按需求可以有多个同时存在,所述消费者进程若在其中一个任务队列中记录为被阻塞状态时,可以转入其他任务队列中继续获取其他任务并执行。
可以理解的是,任务队列和消费者服务进程为多个时,管理员做出限定,限定个数之后即可以多线程执行任务,又可以使服务器中荷载限制在稳定状态。
请参阅图3,在一个实施例中,所述生产者服务中包含至少一个生产者服务进程,每个生产者服务进程至少对应一个客户端,客户端新增任务时,生产者服务进程新增任务到对应任务队列,根据队列名称查询阻塞列表中是否存在此任务队列;
若存在,则调用任务队列管理中心将队列名称添加到就绪列表中,并调用操作日志管理中心记录操作日志;
若不存在,则返回空。
具体的,所述生产者服务进程作用是协助客户端新增任务、查询任务状态和获取执行结果文件,生产者服务新增任务到任务队列的同时,还会查询该任务队列下是否存在被阻塞的消费者服务进程在阻塞列表中,如果存在被阻塞的消费者服务进程则,将这些消费者服务进程从阻塞列表中移到到就绪列表。
可以理解的是,所述生产者服务进程每次添加新任务到任务队列,都会将该任务队列对应的消费者服务进程的被阻塞状态去除,并加入就绪列表中,这样就避免了由于消费者服务进程长时间停滞而导致的多任务处理变慢。
请参阅图4,在一个实施例中,还包括Redis调度中心,Redis调度中心每隔第四预设时间会遍历所述就绪列表,根据就绪列表中的队列名称在阻塞列表中查询到消费者服务进程,并运行查询到的消费者服务进程,使这些消费者服务进程由等待状态变为运行状态,运行状态的消费者服务进程执行获取任务、更新任务状态、执行任务和保存执行结果文件。
需要说明的是,所述第四预设时间是管理员根据实际需求设定的时间,Redis调度中心每隔第四预设时间会遍历就绪列表,从而执行后续操作。
具体的,所述Redis调度中心的作用是激活消费者服务进程,使就绪列表中的消费者服务进程变为运行状态,进而使其能对任务队列中的任务发送获取请求。
可以理解的是,利用了Reids调度的特性,使消费者服务进程能快速变为运行状态。
在一个实施例中,所述任务状态管理中心缓存在Redis中的任务状态有:等待、执行中和完成;
所述任务队列新增任务时的状态为等待;消费者服务进程从任务队列中获取任务时的状态为执行中,消费者服务进程执行任务时的任务状态为执行中,消费者服务进程执行任务完毕时的任务状态为完成。
具体的,所述任务状态管理中心作用是记录消费者服务进程中执行任务的状态,并且为生产者服务进程提供查询接口,消费者服务进程对任务的每一次操作和任务的相关任务进度都会被任务状态管理中心记录,直到任务执行完毕,生产者服务进程每次查询任务状态时也需要通过任务状态管理中心进行查询,任务状态管理中心会将任务状态、任务执行进度返回给生产者服务进程。
需要说明的是,所述任务状态管理中心缓存在Redis中的任务状态,也会同步被所述操作日志管理中心记录下操作日志,任务状态为等待时,操作日志中记录的数据有请求参数、操作人和操作时间,其中,请求参数对应的是请求时携带的信息,操作人对应的是客户端信息,操作时间为记录日志的时间;任务状态为执行中时,操作日志中记录的数据有执行进度和耗费时间;任务状态为完成时,操作日志记录的数据有执行进度、执行结果文件地址和耗费时间;操作日志管理中心还提供了展示操作日志功能,可以帮助管理员统计和排查错误。
可以理解的是,所述任务状态管理中心为生产者服务进程提供了查询接口,使客户端可以通过生产者服务进程动态获取任务的执行情况,提高了客户的体验感;任务状态管理中心的相关操作都记录在操作日志中,包括请求参数、错误信息、操作人、操作时间、执行进度和执行结果,方便后续管理和问题排查。
此外,本申请提供一种异步任务处理系统,所述系统包括:
生产者模块,包含至少一个生产者单元,生产者单元关联客户端,用于客户端发送新任务、产看任务状态和获取任务执行结果;
消费者模块,包含至少一个消费者单元,用于获取任务和执行任务,执行完任务得到的执行结果文件。
任务队列管理模块,基于Redis阻塞队列,用于所述生产者单元新增的任务时,添加任务到任务队列;所述消费者单元获取任务时,返回任务给消费者单元;所述任务队列为空时,消费者单元的阻塞和就绪;
任务状态管理模块,基于Redis缓存,用于接收生产者模块、消费者模块和任务队列管理模块发送过来的任务状态,更新到缓存中;
操作日志管理模块,用于接收任务状态管理模块的任务信息,并存储到操作日志数据库。
可以理解的是,所述系统中的各个模块应用了上述相关方法。
此外,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于在执行时实现上述相关的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种异步任务处理实现方法,其特征在于,应用于客户端和服务端,所述客户端为用户操作端,所述服务端包含有生产者服务、消费者服务、任务队列管理中心、任务状态管理中心和操作日志管理中心,所述任务队列管理中心至少存在一个任务队列,任务队列为先进先出的阻塞队列;
所述异步任务处理实现方法包括以下步骤:
所述客户端新增任务请求发送到服务端,服务端的生产者服务向任务队列管理中心发送新增任务请求,任务队列管理中心接收新增任务请求,将新增任务添加到任务队列的末尾,并生成任务ID返回给生产者服务,
同时任务队列管理中心发送新增任务状态到任务状态管理中心,任务状态管理中心更新任务状态为等待,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述消费者服务每隔第一预设时间向任务队列管理中心发送获取任务请求,任务管理中心收到获取任务请求后,将任务队列中首个任务返回给消费者服务,消费者服务接收到的任务并向任务状态管理中心发送任务状态,任务状态管理中心更新任务状态为处理中,并调用操作日志管理中心在操作日志数据库中新增一条日志,
所述消费者服务执行接收到的任务,并每隔第二预设时间更新任务状态到任务状态管理中心直到执行完毕,任务执行完毕后保存执行结果文件,更新任务状态时将执行进度和执行结果文件地址加入到任务状态中,并调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务每隔第三预设时间向任务状态管理中心发送携带任务ID的查询请求,任务状态管理中心根据任务ID查询到任务状态并返回,任务状态管理中心调用操作日志管理中心在操作日志数据库中新增一条日志;
所述生产者服务根据查询到的任务状态判断任务是否执行完成,若判断任务执行未完成,则每隔第三预设时间进行查询请求,若判断任务执行完成,则根据任务状态中的执行结果文件地址获取到执行结果文件,将任务的执行结果文件发送给客户端。
2.根据权利要求1所述的方法,其特征在于,所述消费者服务中包含至少一个消费者服务进程,消费者服务进程从对应的任务队列中获取任务时,判断任务列表是否为空;
若为空,则调用任务队列管理中心将队列名称和消费者服务进程标识符以键值对的形式添加到阻塞列表,其中,队列名称为键,被阻塞的消费者服务进程为值,值以链表形式存储,添加到阻塞列表的消费者服务进程为被阻塞状态,即等待状态;
若不为空,则消费者服务进程从任务队列中获取任务,并执行任务最终得到执行结果文件发给客户端,执行过程中每隔第二预设时间就会调用任务状态管理中心更新任务状态,并调用操作日志管理中心记录操作日志;
其中所述任务队列采用Redis阻塞队列,所述阻塞列表是由Redis阻塞队列维护。
3.根据权利要求2所述的方法,其特征在于,所述生产者服务中包含至少一个生产者服务进程,每个生产者服务进程至少对应一个客户端,客户端新增任务时,生产者服务进程新增任务到对应任务队列,根据队列名称查询阻塞列表中是否存在此任务队列;
若存在,则调用任务队列管理中心将队列名称添加到就绪列表中,并调用操作日志管理中心记录操作日志;
若不存在,则返回空。
4.根据权利要求3所述的方法,其特征在于,还包括Redis调度中心,Redis调度中心每隔第四预设时间会遍历所述就绪列表,根据就绪列表中的队列名称在阻塞列表中查询到消费者服务进程,并运行查询到的消费者服务进程,使这些消费者服务进程由等待状态变为运行状态,运行状态的消费者服务进程执行获取任务、更新任务状态、执行任务和保存执行结果文件。
5.根据权利要求4所述的方法,其特征在于,所述任务状态管理中心缓存在Redis中的任务状态有:等待、执行中和完成;
所述任务队列新增任务时的状态为等待;消费者服务进程从任务队列中获取任务时的状态为执行中,消费者服务进程执行任务时的任务状态为执行中,消费者服务进程执行任务完毕时的任务状态为完成。
6.根据权利要求5所述的方法,其特征在于,所述操作日志管理中心还包含展示操作日志功能,和/或,
任务状态为等待时,操作日志中记录的数据有请求参数、错误信息、操作人和操作时间,其中,请求参数对应的是请求时携带的信息,错误信息是记录该操作中操作失败的具体步骤,操作人对应的是客户端信息,操作时间为记录日志的时间;
任务状态为执行中时,操作日志中记录的数据有错误信息、执行进度和耗费时间;
任务状态为完成时,操作日志记录的数据有错误信息、执行进度、执行结果文件地址和耗费时间。
7.一种异步任务处理系统,其特征在于,所述系统包括:
生产者模块,包含至少一个生产者单元,生产者单元关联客户端,用于客户端发送新任务、产看任务状态和获取任务执行结果;
消费者模块,包含至少一个消费者单元,用于获取任务和执行任务,执行完任务得到的执行结果文件;
任务队列管理模块,基于Redis阻塞队列,用于所述生产者单元新增的任务时,添加任务到任务队列;所述消费者单元获取任务时,返回任务给消费者单元;所述任务队列为空时,消费者单元的阻塞和就绪;
任务状态管理模块,基于Redis缓存,用于接收生产者模块、消费者模块和任务队列管理模块发送过来的任务状态,更新到缓存中;
操作日志管理模块,用于接收任务状态管理模块的任务信息,并存储到操作日志数据库。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于在执行时实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310003260.3A CN116089037A (zh) | 2023-01-03 | 2023-01-03 | 一种异步任务处理实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310003260.3A CN116089037A (zh) | 2023-01-03 | 2023-01-03 | 一种异步任务处理实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089037A true CN116089037A (zh) | 2023-05-09 |
Family
ID=86207702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310003260.3A Pending CN116089037A (zh) | 2023-01-03 | 2023-01-03 | 一种异步任务处理实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089037A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176811A (zh) * | 2023-11-02 | 2023-12-05 | 北京力通通信有限公司 | 阻塞式异步监听多客户指令并控制多硬件的服务端架构、通信系统及方法 |
-
2023
- 2023-01-03 CN CN202310003260.3A patent/CN116089037A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176811A (zh) * | 2023-11-02 | 2023-12-05 | 北京力通通信有限公司 | 阻塞式异步监听多客户指令并控制多硬件的服务端架构、通信系统及方法 |
CN117176811B (zh) * | 2023-11-02 | 2024-01-26 | 北京力通通信有限公司 | 阻塞监听多客户并控制多硬件的服务端架构、系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10216584B2 (en) | Recovery log analytics with a big data management platform | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
CN109783512A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
US9274857B2 (en) | Method and system for detecting work completion in loosely coupled components | |
US7328213B2 (en) | Transaction processing method, transaction control apparatus and program thereof | |
CN110851465B (zh) | 数据查询方法及系统 | |
US20060036660A1 (en) | System and method for variable block logging with log-ahead buffers | |
US20190286474A1 (en) | Concurrent queueing and control command feedback loop in unified automation platforms | |
US20120030169A1 (en) | Application instance and query stores | |
US20020165902A1 (en) | Independent log manager | |
CN111897638A (zh) | 分布式任务调度方法及系统 | |
JP7100180B2 (ja) | 分散アプリケーションのインタフェース性能監視方法、装置、電子機器、記憶媒体、及びプログラム | |
CN116089037A (zh) | 一种异步任务处理实现方法及系统 | |
CN112084206A (zh) | 数据库的事务请求处理方法、相关设备及存储介质 | |
CN110737510B (zh) | 块设备管理系统 | |
CN112055061A (zh) | 分布式消息处理方法和设备 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN111414356A (zh) | 数据存储方法、装置、非关系数据库系统及存储介质 | |
CN113742057A (zh) | 一种任务执行方法和装置 | |
CN116842090A (zh) | 一种对账系统、方法、设备及存储介质 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN116383207A (zh) | 一种数据标签管理方法、装置、电子设备和存储介质 | |
CA2727110A1 (en) | Interactive voice response system to business application interface | |
CN111698109A (zh) | 监控日志的方法和装置 | |
CN112100186B (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 |