CN113986580A - 任务处理方法及装置 - Google Patents

任务处理方法及装置 Download PDF

Info

Publication number
CN113986580A
CN113986580A CN202111255693.5A CN202111255693A CN113986580A CN 113986580 A CN113986580 A CN 113986580A CN 202111255693 A CN202111255693 A CN 202111255693A CN 113986580 A CN113986580 A CN 113986580A
Authority
CN
China
Prior art keywords
task
processing
processed
queue
task processing
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
CN202111255693.5A
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202111255693.5A priority Critical patent/CN113986580A/zh
Publication of CN113986580A publication Critical patent/CN113986580A/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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Abstract

本公开提供了一种任务处理方法及装置,涉及数据处理领域,尤其涉及大数据领域。具体实现方案为:接收客户端发送的任务处理请求,任务处理请求包括待处理对象和任务处理参数。将待处理对象和任务处理参数存储至预设存储空间。根据待处理对象和任务处理参数,生成任务标识,并将任务标识存储至第一队列中。在任务标识位于第一队列的队首时,根据任务标识在预设存储空间获取待处理对象和任务处理参数,并根据任务处理参数对待处理对象进行处理。本公开可以有效提升任务处理系统的适用性。

Description

任务处理方法及装置
技术领域
本公开涉及数据处理领域中的大数据领域,尤其涉及一种任务处理方法及装置。
背景技术
离线任务处理技术一般用于解决生产端生产任务速度和消费端消费处理任务速度不匹配的问题。
离线任务处理系统的设计一般遵循生产者-消费者架构模式,生产者接收任务消息并将任务发送到队列系统,之后消费者消费队列系统任务消息,以实现对任务的处理。目前的队列系统通常都是Kafka和RabbitMQ,然而,这些队列系统通常对系统的基础设施要求都比较高。
因此,针对一些基础设施较差的系统,目前的离线任务处理技术缺乏适用性。
发明内容
本公开提供了一种任务处理方法及装置。
根据本公开的第一方面,提供了一种任务处理方法,应用于第一设备,所述第一设备包括数据库,所述数据库中包括第一队列,所述方法包括:
接收客户端发送的任务处理请求,所述任务处理请求包括待处理对象和任务处理参数;
将所述待处理对象和所述任务处理参数存储至预设存储空间;
根据所述待处理对象和所述任务处理参数,生成任务标识,并将所述任务标识存储至所述第一队列中;
在所述任务标识位于所述第一队列的队首时,根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,并根据所述任务处理参数对所述待处理对象进行处理。
根据本公开的第二方面,提供了一种任务处理装置,应用于第一设备,所述第一设备包括数据库,所述数据库中包括第一队列,所述装置包括:
接收模块,用于接收客户端发送的任务处理请求,所述任务处理请求包括待处理对象和任务处理参数;
存储模块,用于将所述待处理对象和所述任务处理参数存储至预设存储空间;
处理模块,用于根据所述待处理对象和所述任务处理参数,生成任务标识,并将所述任务标识存储至所述第一队列中;
所述处理模块,还用于在所述任务标识位于所述第一队列的队首时,根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,并根据所述任务处理参数对所述待处理对象进行处理。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序,所述计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得电子设备执行第一方面所述的方法。
根据本公开的技术解决了离线任务处理技术缺乏适用性的问题。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例提供的生产者-消费者架构模式的实现示意图;
图2为本公开实施例提供的任务处理方法的流程图一;
图3为本公开实施例提供的任务处理方法的流程图二;
图4为本公开实施例提供的客户端的操作结果的实现示意图;
图5为本公开实施例提供的序列化的传输示意图;
图6为本公开实施例提供的任务消息的入队示意图;
图7为本公开实施例提供的任务消息的出队示意图;
图8为本公开实施例提供的处理流程示意图;
图9为本公开实施例的任务处理装置的结构示意图;
图10是用来实现本公开实施例的任务处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了更好的理解本公开的技术方案,下面对本公开所涉及的相关技术进行进一步的详细介绍。
离线任务处理技术一般用于解决生产端生产任务的速度和消费端消费处理任务速度不匹配的问题,以达到实现生产端和消费端解耦,以及提升系统可用性的目的。
离线任务处理系统的设计一般遵循生产者-消费者架构模式,例如可以结合图1理解生产者-消费者架构模式,图1为本公开实施例提供的生产者-消费者架构模式的实现示意图。
如图1所示,在生产者-消费者架构模式中,包括生产者、消费者以及队列系统。其中,生产者可以接收任务消息,并将任务消息发送到队列系统。以及消费者可以消费队列系统中的任务消息,并执行具体的任务逻辑。其中队列系统中间件承担的职责包括:(1)消息接收(2)消息存储(3)消息发布。
因此基于上述介绍可以确定的是,生产者-消费者模式的核心是队列系统。目前,Kafka和RabbitMQ是两种当前比较有代表性的开源队列系统,其中,Kafka是一种高吞吐量的分布式发布订阅消息系统,Kafka擅长高并发、流式消息处理消费。以及,Rabbit消息队列(Rabbit Message Queue,RabbitMQ)是实现了高级消息队列协议(Advanced MessageQueuing Protocol,AMQP)的开源消息代理软件(亦称面向消息的中间件),RabbitMQ擅长复杂的消息路由。
以及,目前存在TextMind离线任务处理系统,其中TextMind是一个智能文档分析平台,TextMind离线任务处理系统主要是支持私有化场景下的文档解析、文档抽取、文档比对等偏计算型的小流量的离线文档分析任务处理。
基于上述介绍可以理解的是,目前的额离线任务处理系统一般的采用生产者-消费者架构模式。生产端暴露给外界调用接口,生产端接收到请求后,会将请求内容包装成任务消息发送到队列系统。之后消费端监听任务队列,获取到新的任务消息后根据消息的任务名称执行不同的操作逻辑。
但是因为现有技术中的队列系统通常都是Kafka和RabbitMQ,然而,这些队列系统通常对系统的基础设施要求都比较高。因此,针对一些基础设施较差的系统,目前的离线任务处理技术缺乏适用性。
比如说针对私有化银行客户交付场景,其存在以下特点:(1)要求系统具备较高的稳定性(2)产品交付以及后续的运维成本低(3)传统行业客户的软件基础设施偏保守。可以理解的是,凡是满足上述特点的场景均是基础设施较差的系统,不限于上述介绍的私有化银行客户交付场景,本实施例对具体的基础设施较差的系统的具体实现不做限制。
同时,现有技术的实现方案还存在生产端不支持文档文件上传的问题,且客户端和服务端强绑定,跨语言支持不友好。
针对现有技术中的问题,本公开提出了如下技术构思:依赖于数据库实现队列系统,通常数据库是在各个系统中都存在的,因此基于数据库实现队列系统,可以有效的提升离线任务处理的适用性。
在上述介绍的内容的基础上,下面结合具体的实施例对本公开提供的任务处理方法进行介绍,值得说明的是,本公开中的各个实施例均可以应用于第一设备,在第一设备中可以包括数据库,以及在数据库中可以包括第一队列。在一种可能的实现方式中,本实施例中的第一设备比如说可以是服务器,或者第一设备还可以是处理器、微处理器等具备数据处理功能的设备,本实施例对第一设备的具体实现方式不做限制,只要在第一设备中包括数据库,并且在数据库中包括第一队列即可。
下面首先结合图2对本公开提供的任务处理方法进行介绍,图2为本公开实施例提供的任务处理方法的流程图一。
如图2所示,该方法包括:
S201、接收客户端发送的任务处理请求,任务处理请求包括待处理对象和任务处理参数。
在本实施例中,客户端例如可以向用户显示生成任务处理请求的操作页面,在一种可能的实现方式中,客户端的操作界面例如可以响应于用户的操作,从而接收用户上传的待处理对象,以及用户输入的任务处理参数。
在一种可能的实现方式中,待处理对象例如可以为文档文件,或者待处理对象还例如可以为命令字段,或者还可以为待处理的数据等等,本实施例对待处理对象的具体的实现方式不做限制,凡是需要进行任务处理的对象,均可以作为本实施例中的待处理对象。
当客户端在操作界面接收用户输入的待处理对象以及任务处理参数之后,比如说可以根据用户的提交操作生成任务处理请求,之后将任务处理请求发送给第一设备,因此本实施例中的第一设备可以接收客户端发送的任务处理请求。
在一种可能的实现方式中,任务处理请求包括待处理对象和任务处理参数,在任务处理参数中可以包括任务类型和/或任务执行字段,以及在具体的实现过程中,任务处理参数中所包括的内容还可以根据实际需求进行选择和设置,凡是与任务处理相关的参数均可以作为本实施例中的任务处理参数。
以及本实施例中的任务处理请求例如可以用于请求第一设备对待处理对象执行任务处理参数所对应的任务操作,在任务处理请求中所包括的内容,除了上述介绍的待处理对象以及任务处理参数之外,还可以根据实际需求进行选择和扩展,本实施例对此不做限制。
在本实施例的一种可能的实现方式中,第一设备在接收客户端的任务处理请求的时候,例如可以是第一设备中的生产者接收客户端发送的任务处理请求,其中生产者比如说可以是第一设备中的逻辑单元,用于生成任务标识并将任务标识存储在第一队列中。
S202、将待处理对象和任务处理参数存储至预设存储空间。
第一设备在接收到任务处理请求之后,例如可以将待处理对象和任务处理参数存储至第一设备中的预设存储空间中。其中预设存空间比如说可以为磁盘,或者还可以为第一设备中任意的存储单元中。
此处值得说明的是,本实施例将待处理对象和任务处理参数存储在预设存储单元中,而不存储在队列系统中,是因为队列系统通常可以存储的数据量都是非常有限的,但是待处理对象的数据大小一般都是比较大的。若将待处理对象直接存储在队列系统中,则可能出现因为任务消息的数据量过大,而出现超过队列系统所支持的数据量的上限的问题,因此本实施例中将待处理对象和任务处理参数存储在预设存储单元中,从而节省第一队列中的存储空间。
S203、根据待处理对象和任务处理参数,生成任务标识,并将任务标识存储至第一队列中。
以及本实施例中可以根据待处理对象和任务处理参数,生成任务标识,本实施例中的任务标识比如说可以为数字,或者还可以为字母,或者还可以为字符串等等,本实施例对任务标识的具体实现方式不做特别限制,只要任务标识可以唯一性的区分各个待处理对象以及任务处理参数即可,以及可以理解的是,每个任务标识对应各自的待处理对象和任务处理参数。
在生成任务标识之后,可以将任务标识存储在第一队列中,可以理解的是,本实施例中的队列系统是基于数据库实现的,因此在将任务标识存储在第一队列时,例如可以是通过数据库中的创建记录的操作,从而将任务标识存储在第一队列中。
S204、在任务标识位于第一队列的队首时,根据任务标识在预设存储空间获取待处理对象和任务处理参数,并根据任务处理参数对待处理对象进行处理。
本实施例的生产端在生成任务标识,并将任务标识存储在第一队列中之后,在第一队列中就可以存储有多个任务标识,可以理解的是,队列存在先入先出的特性,因此在上述生成的任务标识位于第一队列的队首的时候,就可以针对该任务标识对应的任务进行处理了。
基于上述介绍可以确定的是,待处理对象和任务处理参数存储在预设存储空间中,并且任务标识对应有待处理对象和任务处理参数,因此在任务标识位于第一队列的队首时,可以根据任务标识在预设存储空间中获取该任务标识对应的待处理对象以及任务处理参数。
之后第一设备中的消费者例如可以根据任务处理参数,对待处理对象进行处理,在一种可能的实现方式中,比如说待处理对象是文本文档,则例如可以针对文档文件进行文档解析、文档抽取、文档对比等等。本实施例中的第一设备中的消费者比如说可以为第一设备中的逻辑单元,用于从第一队列中获取任务标识,并执行任务标识对应的任务。
本公开实施例提供的任务处理方法,包括:接收客户端发送的任务处理请求,任务处理请求包括待处理对象和任务处理参数。将待处理对象和任务处理参数存储至预设存储空间。根据待处理对象和任务处理参数,生成任务标识,并将任务标识存储至第一队列中。在任务标识位于第一队列的队首时,根据任务标识在预设存储空间获取待处理对象和任务处理参数,并根据任务处理参数对待处理对象进行处理。通过在数据库的基础上实现队列系统,因为数据库在各个系统中都是广泛存在的,从而可以有效提升离线任务处理系统的适用性。
在上述实施例的基础上,下面结合图3至图8对本公开提供的任务处理方法进行进一步的详细介绍,图3为本公开实施例提供的任务处理方法的流程图二,图4为本公开实施例提供的客户端的操作结果的实现示意图,图5为本公开实施例提供的序列化的传输示意图,图6为本公开实施例提供的任务消息的入队示意图,图7为本公开实施例提供的任务消息的出队示意图,图8为本公开实施例提供的处理流程示意图。
如图3所示,该方法包括:
S301、接收客户端发送的任务处理请求,任务处理请求包括待处理对象和任务处理参数。
其中,S301的实现方式与上述S201介绍的类似,在本实施例中以待处理对象是文档文件为例,对待处理对象和任务处理参数进行进一步的详细介绍。
在一种可能的实现方式中,任务处理参数中可以包括任务类型和/或任务执行字段。以及任务类型例如可以包括但不限于信息抽取、信息对比、信息解析等对待处理对象进行处理的不同方式。
以待处理对象是文档文件为例,本实施例中的任务类型例如可以包括文档抽取、文档对比、文档解析等等,在实际实现过程中,任务类型的具体实现可以根据实际需求进行选择,以及本实施例中的任务执行字段可以为执行相应的任务类型的任务时所需的字段,比如说针对任务类型为文档抽取的任务,任务执行字段比如说可以包括待提取字段,或者在比如说针对任务类型为文档解析的任务,任务执行字段比如说可以包括待解析内容等等,本实施例对任务类型以及任务执行字段的具体实现方式不做限制,其可以根据不同的任务执行的实现进行选择和设计。
以待处理对象是文档文件为例,例如可以结合图4对客户端提供给用户的操作界面进行进一步的详细介绍,如图4所示,在客户端的操作界面中,例如可以包括用于上传文档文件的操作控件401,用户可以在图4中的401所指示的操作控件处选择文档文件进行上传,其中上传的文档文件可以为任意格式的文件,比如说word格式、pdf格式、excel格式等等,本实施例对此不做限制。
以及在操作界面中还可以包括用于进行任务类型的选择的选择控件402,在一种可能的实现方式中,如图4所示,比如说用户可以进行预设的任务类型的选择,其中任务类型可以包括图4所示的文档抽取、文档对比、文档解析等等,本实施例对具体的任务类型的实现方式不做限制,其可以根据实际需求进行选择和设置。
以及参照图4,在操作界面中还可以包括输入任务执行字段的控件403,其中用户可以在控件403指示的位置进行任务执行字段的输入,其中的任务执行字段比如说可以是文档抽取中的待提取字段,或者还可以是文档解析中的待解析目标等等,本实施例对任务执行字段的具体实现方式不做限制。
在用户完成上述的文档文件以及任务处理参数的输入之后,例如可以点击图4中的404的提交按钮,然后客户端可以获取用户通过点击提交按钮404生成的提交指令,响应于所述提交指令,从而根据上述介绍的文档文件和任务请求参数生成任务处理请求,并将任务处理请求发送给第一设备。
上述图4介绍的是待处理对象为文本文档的实现方式,当待处理对象为其余的实现方式是,其实现方式与上述介绍的类似,例如用户可以在客户端的操作界面上输入命令或者数据,之后客户端就可以获取待处理对象,以及用户可以进行与上述类似的选择操作,因此客户端可以获取任务执行参数,本实施例对待处理对象的其余可能的实现方式不再赘述。
此处需要说明的是,在相关技术中的离线任务处理系统中,是不支持对文档文件的上传的,因此现有技术的实现方案无法实现对文档文件的任务处理。然而在本实施例中,在设计上传接口的时候,例如可以采用RESTFUL API的设计思想,使用超文本传输协议(Hypertext Transfer Prtcl,HTTP)协议的Multipart-Form格式,从而可以支持一篇或多篇文档的上传。
此处对RESTFUL API进行简单说明,其中REST全称是表征性状态转移(Representational State Transfer),如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。以及API是应用程序接口((Application Programming Interface),可以理解的是,RESTful API是一套互联网应用程序的API设计理论。
以及,在设计上传接口的时候,本实施例中还考虑了接口的通用性,为了使得接口易于接入,例如可以在接收到上传的任务处理参数之后,对任务处理参数进行JSON序列化,之后将序列化之后的数据流作为Multipart-Form的一个字段和文档文件一起传输到第一设备的生产端。
其中,JSON是JavaScript对象表示法(JavaScript Object Notation),JSON序列化可以将要传输的对象序列化为二进制的数据流,传输的效率极高,并且通过对任务处理参数进行序列化然后再进行传输,从而可以降低传输过程中的相关格式要求,因此本实施例中对任务处理参数可以不做过多的格式限制,从而可以使得接口易于接入。
例如可以参照图5进行理解,如图5所示,客户端在接收任务处理参数和待处理对象之后,可以对任务处理参数进行JSON序列化,之后将序列化后的任务处理参数以及待处理对象发送给第一设备的生产端。
然后第一设备中的生产端例如可以对序列化后的任务处理参数进行反序列化,从而得到任务处理参数,以及待处理对象,从而可以实现任务处理请求的正确传输。
可以理解的是,上述介绍的JSON序列化主要就是为了传输方便,以及降低对任务处理参数的格式要求,从而使得接口易于接入。之后第一设备在接收时通过反序列化转化成对象,从而达到传输的效果。简单点来说,序列化就是将对象转换成JSON格式的字符串,反序列化就是逆过程,将JSON格式的字符串转换成对象。
S302、根据预设条件对任务处理参数进行校验处理,若任务处理参数满足预设条件,则将待处理对象和任务处理参数存储至预设存储空间。
在本实施例中,第一设备中的生产端在获取到任务处理参数以及待处理对象之后,例如可以首先根据预设条件对任务处理参数进行校验处理,在确定任务处理参数满足预设条件的时候,再将待处理对象和任务处理参数存储在预设存储空间中。
可以理解的是,若需要相应的任务类型可以顺利执行,则任务处理参数需要满足相应的预设条件。
比如说,在任务处理参数包括任务执行字段的情况下,若任务类型为信息抽取,则预设条件包括:任务执行字段中包括待抽取字段。或者,若任务类型为信息对比,则预设条件包括:待处理对象的数量大于或等于2。在实际实现过程中,预设条件的具体实现方式还可以根据实际需求进行选择和设置,本实施例对此不做限制,只要预设条件的设置是为了使得相应的任务类型可以完成执行即可。
其中将待处理对象和任务处理参数存储至预设存储空间时,其实现方式与上述介绍的类似,此处不再赘述。
S303、根据待处理对象和任务处理参数,生成任务标识。
以及本实施例中的第一设备的生产端可以根据待处理对象和任务处理参数生成任务标识,只要任务标识可以唯一的指示待处理对象以及任务处理参数即可,其实现方式与上述实施例介绍的类似,此处不再赘述。
在一种可能的实现方式中,在将待处理对象和任务处理参数存储至预设存储空间时,例如可以将待处理对象以及任务处理参数落地存储在以任务标识命名的文件夹下,以实现待处理对象和任务处理参数的绑定,其中的文件夹是位于预设存储空间中的。
S304、生成将任务标识存储至第一队列时对应的时间戳。
在生成任务标识之后,就可以将任务标识存储在第一队列中,从而等待消费者对任务进行处理了。
在一种可能的实现方式中,在存储任务标识的时候,例如还需要同时存储当前任务的任务创建的时间戳,以及任务状态和任务类型中的至少之一,因此可以生成将任务标识存储至第一队列时对应的时间戳。
S305、将任务标识对应的任务状态设置为第一状态。
基于上述介绍,在存储任务标识的时候,还需要同步存储任务状态,当前是需要将任务标识存储进第一队列中进行排队,因此可以将任务标识对应的任务状态设置为第一状态,其中第一状态用于指示当前的任务标识在排队中等待处理。
在一种可能的实现方式中,本实施例中的任务状态可以包括排队中、运行中、结束三种状态,则当前的第一状态例如可以为上述介绍的排队中。
S306、将任务标识以及下述至少之一封装为任务消息:时间戳、任务状态、以及任务标识对应的任务类型。
在确定上述介绍的内容之后,参照图6,例如可以将任务标识和以下至少之一进行封装,从而得到任务消息,之后就可以将任务消息存储进队列系统中,其中一起封装的可以包括时间戳、任务状态、任务标识对应的任务类型中的至少一个。
S307、调用第一队列的入队接口,以将任务消息写入第一队列中。
在一种可能的实现方式中,本实施例中的第一队列例如可以支持支持入队(Enqueue)、出队(Dequeue)、合入(Commit)三个动作。
在需要将任务消息存储至第一队列中的时候,第一设备中的生产者例如可以调用入队方法,将上述封装好的任务消息写入第一队列中,可以理解的是,本实施例中的第一队列是基于数据库的队列系统,因此例如可以是将任务消息写入以关系型数据库作为后端的队列系统中。在任务消息中所封装的时间戳、任务标识、任务状态、任务类型分别对应数据库的一个字段。
上述介绍的调用的入队方法,比如说可以对应关系型数据库创建记录的操作。
例如可以结合图6进行理解,如图6所示,比如说本实施例中封装得到的任务消息为任务消息n,则可以将任务消息n写入第一队列的队尾。参照图6,在第一队列中可以包括多个任务消息,其存储入第一队列中的方式与上述介绍的相同,此处不再赘述。
以及在一种可选的实现方式中,在将任务标识存储在第一队列中之后,第一设备例如还可以任务标识返回给客户端,后续客户端可以根据任务标识查询对应的任务状态,还例如可以将查询到的任务状态展示给用户,以使得用户快速有效的确定当前任务的执行状态。
S308、在任务标识位于第一队列的队首时,在任务消息中获取任务类型,并确定任务类型对应的第一任务处理单元。
基于上述介绍可以确定的是,在第一队列中可以包括多个任务消息,其中的任务消息都是排队待处理的,以及鉴于队列的先入先出的特性,只能对位于队首的任务标识所对应的任务进行处理。
因此在本实施例中确定的任务标识位于第一队列的队首时,可以对该任务进行处理,以及基于上述介绍可以确定的是,在第一队列中存储的是任务消息,因此当前所介绍的任务标识位于第一队列的队首,实际上就是任务标识对应的任务消息位于第一队列的队首。
在一种可能的实现方式中,在第一设备中可以包括至少一个任务处理单元,此处的任务处理单元例如可以理解为消费者,其中各个任务处理单元分别对应不同的任务类型,也就是说在第一设备中可以包括多个消费者,每个消费者可以分别对对应的任务类型进行处理。
那么就要确定当前位于队首的任务消息是什么类型的任务,例如可以在上述生成的任务消息位于第一队列的队首时,从任务消息中获取任务类型,并且确定任务类型所对应的第一任务处理单元。
此处可以进行举例说明,以待处理对象是文本文档为例,在一种可能的实现方式中,比如说在第一设备中可以包括3个任务处理单元,分别对应3个消费者。3个任务处理单元分别是任务处理单元1、任务处理单元2、任务处理单元3,其中任务处理单元1用于处理任务类型为文档对比的任务,任务处理单元2用于处理任务类型为文档抽取的任务,任务处理单元3用于处理任务类型为文档解析的任务。
例如当前位于队首的任务消息n中的任务类型为文档抽取,那么例如可以确定任务处理单元2为第一任务处理单元,采用第一任务处理单元对任务消息n进行处理。在实际实现过程中,第一设备中所包括的任务处理单元的数量可以根据实际需求进行选择,本实施例对此不做限制,比如说还可以包括6个任务处理单元,每种任务类型可以对应一个或多个任务处理单元。
以及,上述介绍的是在第一设备中包括多个任务处理单元的实现方式,在另一种可能的实现方式中,比如说可以采用集群进行离线任务处理,那么消费端比如说可以对应多个实例,其中一个实例可以理解为一个服务器,也就是说可以同时存在多台服务器同时进行任务的处理,在每个实例中都可以包括多个消费者,在一种可能的实现方式中,不同类型的任务可以对应不同的消费者。
通过设置上述介绍的在第一设备中包括多个任务处理单元,或者设置消费端对应多个实例,从而可以有效提升系统的吞吐能力,同时不同的类型的任务对应不同的消费者,可以使得各个消费者对各个任务类型对应的任务进行分别的获取和处理,以避免不同任务类型件的消费速度不均匀,所导致的任务处理的效率低下的问题。
S309、第一任务处理单元调用第一队列的出队接口,从第一队列中获取任务消息。
参照图7,假设当前位于第一队列的队首的任务消息是任务消息n,以及上述确定了任务消息n对应的第一任务处理单元,则在一种可能的实现方式中,在确定第一任务处理单元之后,第一任务处理单元例如可以调用第一队列的出队接口,对任务消息n执行出队操作,从而从第一队列中获取任务消息n。
S310、第一任务处理单元将任务消息存储在第一任务处理单元中的缓冲队列中,并将任务消息中的任务状态设置为第二状态。
在一种可能的实现方式中,为了提升任务的处理速度和效率,在每个任务处理单元中都可以设置有缓冲队列,每个任务处理单元在对第一队列中的任务消息进行出队操作,获取到任务消息之后,可以将任务消息存储在自己的缓冲队列中,之后可以对缓冲队列中的任务消息依次进行处理。,在将任务消息存储在缓冲队列中的同时,还可以将任务消息的任务状态设置为第二状态,其中第二状态用于指示当前正在对任务消息进行处理,因此第二状态例如可以为“运行中”。
通过设置缓冲队列,一方面可以实现任务加载和实际的任务处理的解耦,另一方面缓冲队列中可以暂存批量加载的待处理任务,从而减少查询次数。可以理解的是,因为第一队列中只有队首的任务消息是可以出队的,如果说实时的对队首的任务消息进行处理,在任务处理完成之后再进行出队,那么第一队列中除了队首之外的其余任务消息就要等待队首的任务消息完成才能够被处理,这样会导致任务消息的处理效率缓慢。
但是本实施例中可以将第一队列中的各个任务消息依次出队,存储在各自对应的任务处理单元的缓冲队列中,之后不同的任务处理单元就可以并行的对各自的缓冲队列中的任务进行处理,从而可以有效提升任务的处理效率。可以理解的是,消费端访问第一队列,从而将第一队列中的各个任务消息分别出队至不同的任务处理单元的缓冲队列中的时候,消费端可以是持续的依次出队第一队列中的任务消息,或者还可以是定时从第一队列中出队预设数量个任务消息,本实施例对此不做限制。
同时,任务处理单元在对任务进行处理的时候,只要缓冲队列中存在任务消息,任务处理单元就会进行任务的处理。以及在将任务消息存储在任务处理单元的缓冲队列之后,还可以将任务消息中的任务状态设置为运行中,以表示当前正在对任务消息进行处理。
例如可以结合图7进行理解,比如说当前第一队列的队首是任务消息n,以及假设任务消息n中的任务类型是文档抽取,那么可以确定任务消息n对应的任务处理单元是任务处理单元2,因此任务处理单元2可以对任务消息n进行出队操作,之后将任务消息n存储在任务处理单元2的缓冲队列中等待处理。
当任务消息n进行出队操作之后,那么位于第一队列的队首的就是任务消息n+1,假设任务消息n+1对应的是任务处理单元1,那么任务处理单元1可以将任务消息n+1进行出队操作,之后将任务消息n+1存储在任务处理单元1的缓冲队列中等待处理。
以及,当任务消息n+1进行出队操作之后,那么位于第一队列的队首的就是任务消息n+2,假设任务消息n+2对应的是任务处理单元3,那么任务处理单元3可以将任务消息n+2进行出队操作,之后将任务消息n+2存储在任务处理单元3的缓冲队列中等待处理。
基于上述的示例可以确定的是,无论是针对任务消息n+1还是任务消息n+2,其都不必等待前面的任务消息处理完成之后才能进行处理,而是根据各自的任务类型出队至不同的缓冲队列,因此可以实现对多个任务消息的并行处理。
以及在一种可能的实现方式中,因为同一个任务类型可能对应多个任务处理单元,为了避免任务消费冲突,比如说可以针对任务消息增加互斥锁的机制,比如说在任务消息加载之后,可以将数据库中该任务消息的状态设置为加锁状态,并且设置加锁状态的生存时间值(Time To Live,TTL)。
可以理解的是,在加锁状态下,任何的处理单元都不能处理该任务消息,除了上述获取该任务消息的任务处理单元。以及上述设置TTL的目的是确保任务处理单元在因为一些特殊的原因崩溃后,任务锁可以在一段时间内自动释放,进而避免死锁的出现,因此通过设置互斥锁机制可以保证任务不会被重复消费,以及通过设置TTL可以有效避免任务因为死锁无法处理的情况。
此处还需要说明的是,上述介绍的都是各个任务处理单元进行处理的实现方式,或者进行任务消费和任务处理的还可以是上述介绍的消费实例,也就是说不同的服务器,其实现方式与各个任务处理单元类似,只要将任务处理单元看做是消费实例即可。
S311、在任务消息位于缓冲队列的队首时,第一任务处理单元根据任务标识,在预设存储空间获取待处理对象和任务处理参数。
可以理解的是,第一任务处理单元中的缓冲队列中可以包括至少一个任务消息,缓冲队列中的任务消息同样也是先进先出的,那么就是对缓冲队列的队首的任务处理。
因此当上述确定的任务消息位于缓冲队列的队首的时候,第一任务处理单元可以根据任务消息中的任务标识,从而预设存储空间中获取待处理对象和任务处理参数,从而针对待处理对象执行相应的处理。
S312、第一任务处理单元确定任务类型对应的至少一个处理节点,其中,各处理节点之间依次连接,各处理节点分别对应任务类型的任务处理环节。
在一种可能的实现方式中,本实施例中的各个任务类型可以对应至少一个处理结果,其中各个处理节点之间依次连接,各个处理节点分别对应任务类型的各个任务处理环节。
比如说针对文档抽取的任务类型来说,任务处理环节比如说可以包括文档识别、文档分析、待提取字段查询、内容提取、结果输出等等的环节,则其中的每一个环节都可以抽象为一个处理结果,从而得到依次连接的各个处理节点。针对其余的任务类型类似,因为每个任务类型的处理都包括很多不同的处理流程,其中的每个处理流程都可以抽象为一个节点,其中节点例如可以包括流程执行的动作以及上下文,不同的节点链接起来就可以构成该任务类型的任务流程。
例如可以参照图8理解任务节点,参照图8,其中客户端可以向消费端发送任务处理请求,其中的客户端比如说可以为图8所示的HTTP客户端。以及在消费端中可以包括多个生产者,其中的生产者可以根据任务处理请求生成任务消息,并将任务消息存储在队列系统中,也就是上述介绍的队列系统中。
以及参照图8,在消费端可以包括多个消费者,其中的每个消费者例如可以分别各自的任务类型,针对每一个任务类型,都可以包括图8所示的多个依次连接的节点,之后各个消费者就可以获取当前待处理的任务的任务类型,从而确定当前任务的任务类型所对应的各个处理节点。
S313、根据依次连接的各处理节点对待处理对象进行处理。
在确定各个处理节点之后,就可以根据依次连接的各个处理节点对待处理对象进行处理了,可以理解的是,节点之间互相链接起来,上一个节点的输入给到下一个节点,作为下一个节点的输入,从而构成一个完成的生产处理链路,以实现对待处理对象的处理。
以及在一种可能的实现方式中,消费单还例如可以根据每个节点配置的最大并行数来限制执行节点的线程数,从而保护消费端自身以及依赖的外部系统。
可以理解的是,本实施例中通过将各个任务类型的任务处理流程进行抽象,从而得到依次链接的各个节点,之后在进行任务处理的时候,直接根据当前任务的任务类型获取相应的节点,然后根据节点进行任务的处理,从而可以有效降低任务处理的复杂性,提升任务处理的操作效率。
S314、将待处理对象对应的任务标识的任务状态设置为第三状态,并将待处理对象的处理结果发送给客户端。
在任务处理完成之后,例如可以将当前的处理完的待处理对象所对应的任务标识的任务状态设置为第三状态,其中第三状态用于指示当前的任务处理完成,例如第三状态可以为“结束”。在一种可能的实现方式中,在任务处理结束之后,比如说可以调用第一队列的合入(commit)方法,将任务状态设置为第三状态。
可以理解的是,本实施例中的第一队列的出队、入队、合入等操作都是在数据库的基础上实现的,因此其对应的都是数据库中的相应操作,比如说创建记录、删除操作、更新字段等等。
以及在任务处理完成之后,比如说还可以将待处理对象的处理结果发送给客户端,本实施例中的处理结果取决于当前的任务类型,比如说当任务类型为文档对比的时候,处理结果比如说可以是两个文档之间不同的部分。再比如说当任务类型为文档抽取的时候,处理结果比如说可以是文档中的待提取字段对应的字段内容,比如说文档文件是合同,例如可以是提取该合同中的甲方是谁,乙方是谁等等,那么甲方、乙方就是待提取字段,甲方、乙方的具体内容就是字段内容。再比如说任务类型为文档解析的时候,处理结果比如说可以是解析的结果等等,本实施例对处理结果的具体实现不做限制,其可以根据实际需求进行选择和设置。
客户端在接收到处理结果之后,比如说可以将处理结果显示在客户端的界面中,或者还可以是响应于用户的查询操作,再显示处理结果,本实施例对此不做限制。以及值得说明的是,本实施例中的客户端是运行在终端设备中的,其中终端设备比如说可以是手机、电脑、平板电脑等等,本实施例对此不做限制。
本公开实施例提供的任务处理方法,通过在接收到任务处理参数之后,根据预设条件对任务处理参数进行校验,在校验通过的时候才进行后续的处理,进而保证后续的任务处理的正确性和可执行性。同时,通过将待处理对象和任务处理参数保存在预设存储空间中,从而可以有效避免因为待处理对象的数据量过大导致的第一队列中无法存储的情况,有效节省了第一队列中的存储空间。同时,通过在各个任务处理单元中分别设置缓冲队列,从而可以实现任务消息的加载和任务消息的处理的解耦,同时保证了各个任务消息不必等待队首的任务处理完成,进而可以有效提升任务处理的速度和效率。同时通过基于数据库实现队列系统,例如基于数据库实现第一队列的入队、出队、合入等等的操作,从而可以有效实提升离线任务处理系统的适用性。以及本实施例中通过在上传接口中使用HTTP协议的Multipart-Form格式,从而可以在离线任务处理系统中支持一篇或多篇文档的上传。
图9为本公开实施例的任务处理装置的结构示意图。如图9所示,本实施例的任务处理装置900可以包括:接收模块901、存储模块902、处理模块903。
接收模块901,用于接收客户端发送的任务处理请求,所述任务处理请求包括待处理对象和任务处理参数;
存储模块902,用于将所述待处理对象和所述任务处理参数存储至预设存储空间;
处理模块903,用于根据所述待处理对象和所述任务处理参数,生成任务标识,并将所述任务标识存储至所述第一队列中;
所述处理模块903,还用于在所述任务标识位于所述第一队列的队首时,根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,并根据所述任务处理参数对所述待处理对象进行处理。
一种可能的实现方式中,所述任务处理参数包括任务类型,所述存储模块902还用于:
生成将所述任务标识存储至所述第一队列时对应的时间戳;
将所述任务标识对应的任务状态设置为第一状态;
将所述任务标识以及下述至少之一关联存储至所述第一队列中:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型。
一种可能的实现方式中,所述存储模块902还用于:
将所述任务标识以及下述至少之一封装为任务消息:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型;
调用所述第一队列的入队接口,以将所述任务消息写入所述第一队列中。
一种可能的实现方式中,所述处理模块903还用于:
在所述将所述待处理对象和所述任务处理参数存储至预设存储空间之前,根据预设条件对所述任务处理参数进行校验处理,若所述任务处理参数满足所述预设条件,则将所述待处理对象和所述任务处理参数存储至预设存储空间。
一种可能的实现方式中,在所述任务处理参数包括任务执行字段的情况下,若所述任务类型为信息抽取,则所述预设条件包括:所述任务执行字段中包括待抽取字段;
若所述任务类型为信息对比,则所述预设条件包括:所述待处理对象的数量大于或等于2。
一种可能的实现方式中,所述第一设备中还包括至少一个任务处理单元,其中,各所述任务处理单元分别对应不同的任务类型;
所述处理模块903还用于:
在所述根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数之前,在所述任务消息中获取任务类型,并确定所述任务类型对应的第一任务处理单元,其中,所述任务消息位于所述第一队列的队首;
所述第一任务处理单元调用所述第一队列的出队接口,从所述第一队列中获取所述任务消息;
所述第一任务处理单元将所述任务消息存储在所述第一任务处理单元中的缓冲队列中,并将所述任务消息中的任务状态设置为第二状态。
一种可能的实现方式中,所述处理模块903还用于:
在所述任务消息位于所述缓冲队列的队首时,所述第一任务处理单元根据所述任务标识,在所述预设存储空间获取所述待处理对象和所述任务处理参数。
一种可能的实现方式中,所述处理模块903还用于:
所述第一任务处理单元确定所述任务类型对应的至少一个处理节点,各所述处理节点之间依次连接,各所述处理节点分别对应所述任务类型的任务处理环节;
根据依次连接的各所述处理节点对所述待处理对象进行处理。
一种可能的实现方式中,所述处理模块903还用于:
在所述根据所述任务处理参数对所述待处理对象进行处理之后,将所述待处理对象对应的任务标识的任务状态设置为第三状态,并将所述待处理对象的处理结果发送给所述客户端。
本公开提供一种任务处理方法及装置,应用于数据处理领域中的大数据领域,以达到提升离线任务处理技术的适用性的目的。
需要说明的是,本实施例中的人头模型并不是针对某一特定用户的人头模型,并不能反映出某一特定用户的个人信息。需要说明的是,本实施例中的二维人脸图像来自于公开数据集。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
根据本公开的实施例,本公开还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如任务处理方法。例如,在一些实施例中,任务处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的任务处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (21)

1.一种任务处理方法,应用于第一设备,所述第一设备包括数据库,所述数据库中包括第一队列,所述方法包括:
接收客户端发送的任务处理请求,所述任务处理请求包括待处理对象和任务处理参数;
将所述待处理对象和所述任务处理参数存储至预设存储空间;
根据所述待处理对象和所述任务处理参数,生成任务标识,并将所述任务标识存储至所述第一队列中;
在所述任务标识位于所述第一队列的队首时,根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,并根据所述任务处理参数对所述待处理对象进行处理。
2.根据权利要求1所述的方法,其中,所述任务处理参数包括任务类型,所述将所述任务标识存储至所述第一队列中,包括:
生成将所述任务标识存储至所述第一队列时对应的时间戳;
将所述任务标识对应的任务状态设置为第一状态;
将所述任务标识以及下述至少之一关联存储至所述第一队列中:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型。
3.根据权利要求2所述的方法,其中,所述将所述任务标识以及下述至少之一关联存储至所述第一队列中:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型,包括:
将所述任务标识以及下述至少之一封装为任务消息:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型;
调用所述第一队列的入队接口,以将所述任务消息写入所述第一队列中。
4.根据权利要求1-3任一项所述的方法,将所述待处理对象和所述任务处理参数存储至预设存储空间包括:
根据预设条件对所述任务处理参数进行校验处理,若所述任务处理参数满足所述预设条件,则将所述待处理对象和所述任务处理参数存储至预设存储空间。
5.根据权利要求4所述的方法,其中,
在所述任务处理参数包括任务执行字段的情况下,若所述任务类型为信息抽取,则所述预设条件包括:所述任务执行字段中包括待抽取字段;
若所述任务类型为信息对比,则所述预设条件包括:所述待处理对象的数量大于或等于2。
6.根据权利要求3所述的方法,所述第一设备中还包括至少一个任务处理单元,其中,各所述任务处理单元分别对应不同的任务类型;
所述根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数之前,所述方法还包括:
在所述任务消息中获取任务类型,并确定所述任务类型对应的第一任务处理单元,其中,所述任务消息位于所述第一队列的队首;
所述第一任务处理单元调用所述第一队列的出队接口,从所述第一队列中获取所述任务消息;
所述第一任务处理单元将所述任务消息存储在所述第一任务处理单元中的缓冲队列中,并将所述任务消息中的任务状态设置为第二状态。
7.根据权利要求6所述的方法,其中,所述根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,包括:
在所述任务消息位于所述缓冲队列的队首时,所述第一任务处理单元根据所述任务标识,在所述预设存储空间获取所述待处理对象和所述任务处理参数。
8.根据权利要求6或7所述的方法,其中,所述根据所述任务处理参数对所述待处理对象进行处理,包括:
所述第一任务处理单元确定所述任务类型对应的至少一个处理节点,其中,各所述处理节点之间依次连接,各所述处理节点分别对应所述任务类型的任务处理环节;
根据依次连接的各所述处理节点对所述待处理对象进行处理。
9.根据权利要求1-8任一项所述的方法,所述根据所述任务处理参数对所述待处理对象进行处理之后,所述方法还包括:
将所述待处理对象对应的任务标识的任务状态设置为第三状态,并将所述待处理对象的处理结果发送给所述客户端。
10.一种任务处理装置,应用于第一设备,所述第一设备包括数据库,所述数据库中包括第一队列,所述装置包括:
接收模块,用于接收客户端发送的任务处理请求,所述任务处理请求包括待处理对象和任务处理参数;
存储模块,用于将所述待处理对象和所述任务处理参数存储至预设存储空间;
处理模块,用于根据所述待处理对象和所述任务处理参数,生成任务标识,并将所述任务标识存储至所述第一队列中;
所述处理模块,还用于在所述任务标识位于所述第一队列的队首时,根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数,并根据所述任务处理参数对所述待处理对象进行处理。
11.根据权利要求10所述的装置,其中,所述任务处理参数包括任务类型,所述存储模块还用于:
生成将所述任务标识存储至所述第一队列时对应的时间戳;
将所述任务标识对应的任务状态设置为第一状态;
将所述任务标识以及下述至少之一关联存储至所述第一队列中:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型。
12.根据权利要求11所述的装置,其中,所述存储模块还用于:
将所述任务标识以及下述至少之一封装为任务消息:所述时间戳、所述任务状态、以及所述任务标识对应的任务类型;
调用所述第一队列的入队接口,以将所述任务消息写入所述第一队列中。
13.根据权利要求10-12任一项所述的装置,所述处理模块还用于:
在所述将所述待处理对象和所述任务处理参数存储至预设存储空间之前,根据预设条件对所述任务处理参数进行校验处理,若所述任务处理参数满足所述预设条件,则将所述待处理对象和所述任务处理参数存储至预设存储空间。
14.根据权利要求13所述的装置,其中,
在所述任务处理参数包括任务执行字段的情况下,若所述任务类型为信息抽取,则所述预设条件包括:所述任务执行字段中包括待抽取字段;
若所述任务类型为信息对比,则所述预设条件包括:所述待处理对象的数量大于或等于2。
15.根据权利要求12所述的装置,所述第一设备中还包括至少一个任务处理单元,其中,各所述任务处理单元分别对应不同的任务类型;
所述处理模块还用于:
在所述根据所述任务标识在所述预设存储空间获取所述待处理对象和所述任务处理参数之前,在所述任务消息中获取任务类型,并确定所述任务类型对应的第一任务处理单元,其中,所述任务消息位于所述第一队列的队首;
所述第一任务处理单元调用所述第一队列的出队接口,从所述第一队列中获取所述任务消息;
所述第一任务处理单元将所述任务消息存储在所述第一任务处理单元中的缓冲队列中,并将所述任务消息中的任务状态设置为第二状态。
16.根据权利要求15所述的装置,其中,所述处理模块还用于:
在所述任务消息位于所述缓冲队列的队首时,所述第一任务处理单元根据所述任务标识,在所述预设存储空间获取所述待处理对象和所述任务处理参数。
17.根据权利要求15或16所述的装置,其中,所述处理模块还用于:
所述第一任务处理单元确定所述任务类型对应的至少一个处理节点,其中,各所述处理节点之间依次连接,各所述处理节点分别对应所述任务类型的任务处理环节;
根据依次连接的各所述处理节点对所述待处理对象进行处理。
18.根据权利要求10-17任一项所述的装置,所述处理模块还用于:
在所述根据所述任务处理参数对所述待处理对象进行处理之后,将所述待处理对象对应的任务标识的任务状态设置为第三状态,并将所述待处理对象的处理结果发送给所述客户端。
19.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-9中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-9中任一项所述方法的步骤。
CN202111255693.5A 2021-10-27 2021-10-27 任务处理方法及装置 Pending CN113986580A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111255693.5A CN113986580A (zh) 2021-10-27 2021-10-27 任务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111255693.5A CN113986580A (zh) 2021-10-27 2021-10-27 任务处理方法及装置

Publications (1)

Publication Number Publication Date
CN113986580A true CN113986580A (zh) 2022-01-28

Family

ID=79742544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111255693.5A Pending CN113986580A (zh) 2021-10-27 2021-10-27 任务处理方法及装置

Country Status (1)

Country Link
CN (1) CN113986580A (zh)

Similar Documents

Publication Publication Date Title
US8949258B2 (en) Techniques to manage file conversions
JP7206313B2 (ja) ドキュメント解析方法、装置、機器及び記憶媒体
US8903925B2 (en) Scheduled messages in a scalable messaging system
US10693816B2 (en) Communication methods and systems, electronic devices, and computer clusters
US20230020324A1 (en) Task Processing Method and Device, and Electronic Device
CN110928905B (zh) 一种数据处理方法和装置
US20220012692A1 (en) Schedule information acquiring method, apparatus, device, storage medium and program product
CN110764796A (zh) 更新缓存的方法和装置
CN115421922A (zh) 一种分布式系统的限流方法、装置、设备、介质及产品
CN114742000A (zh) 基于FPGA集群的SoC芯片验证系统、验证方法、装置
CN109960212A (zh) 任务发送方法和装置
CN112948081B (zh) 延时处理任务的方法、装置、设备以及存储介质
CN112711485A (zh) 一种消息处理方法和装置
CN113986580A (zh) 任务处理方法及装置
CN115599571A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113779122B (zh) 导出数据的方法和装置
CN113867920A (zh) 任务处理方法、装置、电子设备和介质
CN115081607A (zh) 基于嵌入算子的反向计算方法、装置、设备以及存储介质
CN113905040A (zh) 文件传输方法、装置、系统、设备以及存储介质
CN113778700A (zh) 消息处理方法、系统、介质和计算机系统
CN113760861A (zh) 一种数据迁移的方法和装置
US20170026302A1 (en) Systems and methods for reorganization of messages in queuing systems
WO2023024035A1 (zh) 请求处理方法、装置、电子设备以及存储介质
US10417133B2 (en) Reference cache maintenance optimizer
CN115904749A (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