CN107102901A - 一种任务处理方法和装置 - Google Patents

一种任务处理方法和装置 Download PDF

Info

Publication number
CN107102901A
CN107102901A CN201610100052.5A CN201610100052A CN107102901A CN 107102901 A CN107102901 A CN 107102901A CN 201610100052 A CN201610100052 A CN 201610100052A CN 107102901 A CN107102901 A CN 107102901A
Authority
CN
China
Prior art keywords
task
main frame
treatment progress
waiting
process agent
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
CN201610100052.5A
Other languages
English (en)
Other versions
CN107102901B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610100052.5A priority Critical patent/CN107102901B/zh
Publication of CN107102901A publication Critical patent/CN107102901A/zh
Application granted granted Critical
Publication of CN107102901B publication Critical patent/CN107102901B/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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种任务处理方法和装置,涉及数据处理技术领域,用以减少数据库的负载,从而降低对数据库的处理性能的要求。该方法应用于第一主机,第一主机与数据库连接并通信,第一主机中设置有主任务进程和至少一个进程代理,每个进程代理用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信;该方法包括:主任务进程访问数据库,以获取待处理任务,并将获取到的待处理任务存储在第一主机中;进程代理接收一个任务处理进程发送的第一请求消息,第一请求消息用于请求领取任务;进程代理将第一主机中存储的一个待处理任务发送给任务处理进程,以使得任务处理进程对该待处理任务进行处理。

Description

一种任务处理方法和装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种任务处理方法和装置。
背景技术
在电信任务行业中,例如,客户关系管理(英文全称:customerrelationship management,英文缩写:CRM)系统、业务分析支撑系统(英文全称:business analysis support system,英文缩写:BASS)或业务运营支撑系统(英文全称:business operation support system,英文缩写:BOSS)等系统中,对后台任务(下文中称为“任务”)的处理是非常普遍的。
目前,任务处理方法所适用的架构框图如图1所示。图1所示的架构框图包括数据库和多个主机;其中,数据库用于存储任务;每个主机中设置有一个或多个任务处理进程,用于处理一种或多种类型的任务,其中,每个任务处理进程处理固定的一种类型的任务。
基于图1所示的架构框图的任务处理方法具体是:任务处理进程通过直接访问数据库的方式获取数据库中的任务,并对所获取到的任务进行处理。需要说明的是,当图1所示的一个主机中包含多个任务处理进程时,该多个任务处理进程通过按照任务的id进行取模,以保证同一个任务不会被该主机中的多个任务处理进程处理到。
在上述方法中,任务处理进程直接访问数据库,这样,若系统中的任务量较大,则需要多个任务处理进程同时对任务进行处理,这会使得多个任务处理进程同时访问数据库,这会导致数据库的负载较大,从而对数据库的处理性能要求较高。
发明内容
本发明的实施例提供一种任务处理方法和装置,用以减少数据库的负载,从而降低对数据库的处理性能的要求。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种任务处理方法,应用于第一主机,第一主机与数据库连接并通信,第一主机中设置有主任务进程和至少一个进程代理,每个进程代理用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信;该方法包括:主任务进程访问数据库,以获取待处理任务,并将获取到的待处理任务存储在第一主机中;进程代理接收一个任务处理进程发送的第一请求消息,其中,第一请求消息用于请求领取任务;进程代理将第一主机中存储的一个待处理任务发送给任务处理进程,以使得任务处理进程对该待处理任务进行处理。
第二方面,本发明实施例提供一种主机,该主机与数据库连接并通信,该主机中包括:主任务进程、至少一个进程代理和存储单元;其中,每个进程代理用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信;主任务进程用于:访问数据库,以获取待处理任务;并将获取到的待处理任务存储到存储单元中;进程代理用于:接收一个任务处理进程发送的第一请求消息,其中,第一请求消息用于请求领取任务;并将存储单元中存储的一个待处理任务发送给任务处理进程,以使得任务处理进程对该待处理任务进行处理。
其中,第二方面中的“主机”具体可以是第一方面中的“第一主机”。
上述第一方面或第二方面中,任务处理进程从进程代理中获取待处理任务,与现有技术中多个任务处理进程直接从数据库中获取待处理任务相比,本发明实施例不需要考虑多个任务处理进程同时访问数据库带来的数据一致性问题,能够减少数据库的负载,从而减低了对数据库的性能要求。
可选的,第一方面中的第一主机(或第二方面中的主机)中设置有至少两个进程代理。基于上述第一方面,主任务进程将获取到的待处理任务存储在第一主机中,可以包括:主任务进程将获取到的待处理任务存储在第一主机的共享内存中;进程代理将第一主机中存储的一个待处理任务发送给任务处理进程,可以包括:进程代理访问共享内存,以从共享内存中取出一个待处理任务;并将所取出的待处理任务发送给任务处理进程。基于上述第二方面,存储单元包括共享内存;主任务进程具体用于:将获取到的待处理任务存储在共享内存中;进程代理具体用于:访问共享内存,以从共享内存中取出一个待处理任务;并将所取出的待处理任务发送给任务处理进程。可选的,至少两个所述进程代理通过信号量串行化的方式访问共享内存。这样,能够避免多个进程代理同时访问共享内存。
可选的,基于上述任一方面或者上述任一方面的任一种可选的实现方式,任务处理进程设置在第二主机上或第一方面中的第一主机(或第二方面中的主机)上。若任务处理进程设置在第二主机上,则第二主机通过进程代理所提供的服务方式与第一方面中的第一主机(或第二方面中的主机)进行连接并通信。可选的,每个第二主机上设置有能够处理第一方面中的第一主机(或第二方面中的主机)中存储的每种类型的任务的任务处理进程。每个第二主机上设置有能够处理第一主机中存储的每种类型的任务的任务处理进程。该可选的实现方式与现有技术相比,能够快速处理掉系统中较多的任务,从而提升系统性能。
可选的,基于上述任一方面或者上述任一方面的任一种可选的实现方式,任务处理进程与一个或多个任务插件连接,任务处理进程调用任务插件处理待处理任务。需要说明的是,任务插件与调用该任务插件的任务处理进程可以共同设置在第二主机上,或者第一方面中的第一主机(或第二方面中的主机)上。该可选的实现方式,有利用系统中新任务的扩展。
可选的,基于上述任一方面或任一方面的任一种可选的实现方式,提供一种待处理任务的存储机制。具体的:基于上述第一方面或者第一方面的任一种可选的实现方式,主任务进程将获取到的待处理任务存储在第一主机中,可以包括:主任务进程将获取到的待处理任务生成数据结构体,并将数据结构体存储在第一主机中。基于上述第二方面,或者第二方面的任一种可选的实现方式,主任务进程具体用于:将获取到的待处理任务生成数据结构体,并将数据结构体存储在存储单元中。
可选的,基于上述第一方面或者第一方面的任一种可选的实现方式,方法还可以包括:进程代理接收任务处理进程发送的第二请求消息,其中,第二请求消息用于请求更新任务;进程代理对第二请求消息所请求的待更新任务的状态进行更新。基于上述第二方面,或者第二方面的任一种可选的实现方式,进程代理还用于:接收任务处理进程发送的第二请求消息,其中,第二请求消息用于请求更新任务;以及对第二请求消息所请求的待更新任务的状态进行更新。
可选的,基于上述任一方面或者上述任一方面的任一种可选的实现方式,每个进程代理与一个或多个任务处理进程进行连接并通信。具体的,每个进程代理通过所提供的服务方式,与一个或多个任务处理进程建立连接并通信。
可选的,基于上述任一方面或者上述任一方面的任一种可选的实现方式,第一方面中的第一主机(或者第二方面中的主机)上设置一个或多个任务处理进程,或至少一个第二主机中的每个第二主机中设置有一个或多个任务处理进程。
第三方面,本发明实施例提供了一种主机,该主机具有实现上述第一方面提供的方法中第一主机侧行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现方式中,主机的结构中包括处理器和收发器,处理器被配置为支持主机执行上述方法中相应的功能。收发器用于支持该主机与第二主机之间进行通信。该主机还可以包括存储器,所述存储器用于与处理器耦合,其保存基站必要的程序指令和数据。
第四方面,本发明实施例提供了一种存储介质,用于储存为上述第一主机所用的计算机软件指令,其包含用于执行上述第一方面中第一主机所执行的动作对应的程序。
附图说明
图1为现有技术中提供的任务处理方法所适用的架构框图;
图2为本发明实施例提供的任务处理方法所适用的架构框图一;
图3为本发明实施例提供的任务处理方法所适用的架构框图二;
图4为本发明实施例提供的任务处理方法的交互图一;
图5为本发明实施例提供的任务处理方法的交互图二;
图6为本发明实施例提供的任务处理方法所适用的架构框图三;
图7为本发明实施例提供的主机的结构图一;
图8为本发明实施例提供的主机的结构图二。
具体实施方式
本发明实施例提供了一种处理任务的方法和装置,具体的:在第一主机中设置了进程代理,并且根据第一主机中设置的主任务进程获取到了数据库中的待处理任务,每个任务处理进程均向进程代理获取待处理任务,从而对获取到的待处理任务进行处理。与现有技术中多个任务处理进程直接从数据库中获取待处理任务相比,本发明实施例不需要考虑多个任务处理进程同时访问数据库带来的数据一致性问题,能够减少数据库的负载,从而减低了对数据库的性能要求。
如图2所示,是本发明实施例提供的任务处理方法所适用的架构框图。图2所示的架构框图中包括:数据库、第一主机和任务处理进程。第一主机与数据库连接并通信。
其中,数据库,用于存储系统生成的任务,其中,生成任务的具体实现方式以及该过程中所使用的逻辑功能模块等均可以参考现有技术。数据库包括但不限于:Oracle,Sybase,SQL Server,DB2,Access等。其中,Oracle是甲骨文公司的一款关系数据库管理系统,Sybase是美国Sybase公司研制的一种关系型数据库系统;SQL Server是美国Microsoft公司的一种关系型数据库系统,DB2是美国IBM公司开发的一套关系型数据库管理系统。
第一主机,可以称为“资源池主机”,第一主机中设置有主任务进程和至少一个进程代理。主任务进程可以通过访问数据库,获取数据库中的待处理任务,并将获取到的待处理任务存储在第一主机中。每个进程代理用于向外提供一种服务方式,其中,服务方式可以包括但不限于:socket、tuxedo、cics、webservice等。其中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket;tuxedo是一个客户机/服务器的中间件产品;cics是IBM公司的一个中间件产品;webservice,即web service,是基于可编程的web的应用程序。每个进程代理可以利用所提供的服务方式与外界进程(例如任务处理进程)或设备(例如第二主机)进行连接并通信。提供不同服务方式的进程代理的处理流程是一致的,具体可以参考下文。
任务处理进程,用于对任务进行处理。不同的任务处理进程用于处理不同类型的任务,一种任务处理进程只能处理特定的一种类型的任务,例如,任务处理进程1只能处理任务1,任务处理进程2只能处理任务2等。一个主机的在同一时刻只能运行固定数量个任务处理进程,不同主机可以同时运行任务处理进程。本发明实施例中提供的任务处理进程可以设置在第一主机上,并且,第一主机上可以设置一个或多个任务处理进程。第一主机上的每个任务处理进程可以与一个进程代理之间建立连接并通信。图2是以第一主机中设置有多个进程代理,且任务处理进程设置在第一主机上为例进行说明的。
另外,任务处理进程还可以设置在至少一个第二主机上。至少一个第二主机中的每个第二主机中可以设置一个或多个任务处理进程,并且,第二主机通过进程代理所提供的服务方式与第一主机进行连接并通信。如图3所示,是本发明实施例提供的任务处理方法所适用的另一种架构框图,图3中的每个第二主机中可以设置一个或多个任务处理进程。
第二主机,可以称为“客户端”,用于利用其中设置的任务处理进程对待处理任务进行处理。每个第二主机均可以支持一种或几种服务方式,且不同的第二主机所支持的服务方式可以相同,也可以不同,例如,第二主机1支持socket和webservice共两种服务方式,第二主机2支持socket和cics共两种服务方式,第二主机3只支持tuxedo这一种服务方式。每个第二主机可以利用自身所支持的且是第一主机所提供的任一种服务方式,与第一主机之间进行连接并通信。例如,若第二主机1支持socket和webservice两种服务方式,第一主机支持socket、tuxedo、cics和webservice四种服务方式,则第二主机1可以利用socket与第一主机进行连接并通信,也可以利用webservice与第一主机进行连接并通信。
第一主机可以通过一种服务方式与一个或多个第二主机连接,并通过另一种服务方式与另外的一个或多个第二主机连接。例如,如图3所示,第一主机通过socket与第二主机1、2连接,通过tuxedo与第二主机3连接,通过webservice与第二主机4连接。
可选的,每个进程代理与一个或多个任务处理进程进行连接并通信,具体的,每个进程代理通过所提供的服务方式,与一个或多个任务处理进程建立连接并通信。其中,每个进程代理所连接的一个或多个任务处理进程可以分布在第一主机和/或至少一个第二主机上。需要说明的是,一般地,一个第二主机上的所有任务处理进程均与一个进程代理连接,并且,一个进程代理通过与一个第二主机连接,来实现该进程代理与该第二主机上的任务处理进程之间的连接。
本申请中的“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
如图4所示,是本发明实施例提供的一种任务处理方法的交互示意图。图4所示的方法包括:
S101:主任务进程访问数据库,以获取待处理任务;并将获取到的待处理任务存储在第一主机中。
主任务进程可以周期性地或触发性地触发从数据库中查询待处理任务。具体的,主任务进程通过查询语句查询数据库中的待处理任务,然后将所查询到的待处理任务存储在第一主机中。其中,查询语句可以包括但不限于结构化查询语言(英文全称:structured query language,英文缩写:SQL)等。需要说明的是,主任务进程通过查询语句查询数据库中的待处理任务的过程可以参考现有技术,此处不再赘述。可选的,主任务进程将获取到的待处理任务生成数据结构体,并将该数据结构体存储在第一主机中。
可选的,S101可以包括:主任务进程访问数据库,以获取待处理任务;并将获取到的待处理任务存储在第一主机的共享内存中。其中,关于共享内存的描述参见下文。
示例的,主任务进程可以通过查询语句查询数据库中的待处理任务,然后将查询到的待处理任务按照如下格式:任务类型、任务编号、任务参数、时间戳、状态,生成数据结构体;接着,主任务进程可以检查共享内存中是否包含空余位置,若共享内存中包含空余位置,则主任务进程将所生成的数据结构体存储在共享内存中,若共享内存中不包含空余位置,则主任务进程休眠一段时间,以等待共享内存中已处理的任务被删除,从而空出空余位置,然后再将所生成的数据结构体存储在共享内存中。
S102:任务处理进程向进程代理发送第一请求消息,其中,第一请求消息用于请求领取任务。
本实施例中的进程代理可以是第一主机中的任一个进程代理。本实施例中的任务处理进程可以是图2或图3所示的架构框图中的设置在第一主机或任意一个第二主机上的任意一个任务处理进程。
可选的,在S102之前,该方法还可以包括:任务处理进程与进程代理之间建立连接。具体的:若任务处理进程设置在第一主机中,则该任务处理进程直接与该进程代理之间建立连接;若任务处理进程设置在第二主机中,则通过第二主机与该进程代理之间建立连接,来实现该任务处理进程与该进程代理之间建立连接。
需要说明的是,第二主机可以在空闲状态时,触发建立与第一主机中的一个进程代理之间的连接;并且,第二主机可以在繁忙状态时,断开与该进程代理之间的连接,并释放相应的资源,从而提高资源利用率。本发明实施例对第二主机处于空闲状态还是繁忙状态的区分标准不进行限定。
S103:进程代理接收任务处理进程发送的第一请求消息,
可选的,第一主机的每个进程代理中可以创建一个监听服务进程,用于监听是否有第二主机连接到该进程代理中,以及是否接收到任务处理进程发送的请求消息(包括第一请求消息以及下述第二请求消息)。
S104:进程代理将第一主机中存储的一个待处理任务发送给任务处理进程。具体的,进程代理通过该进程代理所提供的服务方式,将第一主机中存储的一个待处理进程发送给任务处理进程。
第一主机中可以预先存储有来自数据库的一个或多个待处理任务,也可以周期性地或触发性地从数据库中查询待处理任务。S104中的待处理任务可以是第一主机中存储的任意一个待处理任务。可选的,S104中的待处理任务可以是进程代理按照先进先出的原则确定的一个待处理任务。
可选的,在S104之后,该方法还可以包括:进程代理删除该待处理任务,这样,能够在第一主机中空出一部分存储空间,所空出的存储空间中可以存储新的待处理任务;并且能够避免该待处理任务被其他的任务处理进程重复处理,从而节省资源。
另外,进程代理也可以不删除该待处理任务,而是在任务处理进程发送更新该待处理任务的请求消息(如下述第二请求消息)之后,对该待处理任务的状态进行更新,从而定期地或触发性地删除已处理的任务。
S105:任务处理进程接收进程代理发送的待处理任务,并对该待处理任务进行处理。
具体的,任务处理进程接收进程代理发送的待处理任务,然后解析该待处理任务的内容,接着,根据解析得到的内容对该待处理任务进行处理。
本发明实施例提供的任务处理方法中,任务处理进程从进程代理中获取待处理任务,与现有技术中多个任务处理进程直接从数据库中获取待处理任务相比,本发明实施例不需要考虑多个任务处理进程同时访问数据库带来的数据一致性问题,能够减少数据库的负载,从而减低了对数据库的性能要求。尤其地,在多个待处理任务同时处理任务的场景中,能够减少数据库的负载。
另外,由于本发明实施例提供的技术方案中,每个进程代理用于提供一种服务方式,当第一主机中包含多个进程代理时,第一主机可以提供多种服务方式,即通信方式多样化,这样,只要支持该多种服务方式中的任一种服务方式的主机均可以作为第二主机,从而可以方便对第二主机的扩展。而现有技术中的每个处理任务的主机(可类似于本申请只用的第二主机),均直接访问数据库,即通信方式单一,也就是说,只有支持访问数据库的功能的主机才可以作为处理任务的主机,从而不方便对处理任务的主机的扩展。
可选的,如图5所示,该方法还可以包括以下步骤S106-S107:
S106:任务处理进程向进程代理发送第二请求消息,其中,第二请求消息用于请求更新任务。
具体的,任务处理进程通过该进程代理所提供的服务方式,向该进程代理发送第二请求消息。
第二请求消息中还可以包含待更新任务的标识信息,待更新任务的标识信息可以是待更新任务的编号等任一能够区分不同任务的字符或字符串。第二请求消息具体用于请求对待更新任务的状态进行更新。其中,任务的状态可以是待处理状态或已处理状态,待处理状态表示该任务还未被处理,已处理状态用于表示该任务已经被处理。
待更新任务可以是S101-S105中的待处理任务,也可以是第一主机中存储的其他的待处理任务。
S107:进程代理接收任务处理进程发送的第二请求消息,并对第二请求消息所请求的待更新任务的状态进行更新。具体的,进程代理将待处理任务的状态由“待处理状态”更新为“已处理状态”。
需要说明的时,若待更新任务是S101-S105中的待处理任务,则S106-S107在S101-S105之后执行;若待更新任务是第一主机中存储的其他的待处理任务,则S106-S107可以在S101-S105之前执行,也可以在S101-S105之后执行。其中,图5中是以S106-S107在S101-S105之后执行为例进行说明的。
在S107之后,第一主机可以定期地或触发性地删除已处理状态的任务,从而在第一主机中空出一部分存储空间,以存储新的待处理任务。
需要说明的是,具体实现时,当进程代理接收到一个请求消息之后,需要判断该请求消息是请求领取任务的消息(即第一请求消息)还是请求更新任务的消息(即第二请求消息)。具体的,进程代理可以通过判断该请求消息中是否包含待更新任务的标识信息,来确定该请求消息是第一请求消息还是第二请求消息。其中,第一请求消息中不包含待更新任务的标识信息,第二请求消息中包含待更新任务的标识信息。
在一种可选的实现方式中,主机中设置有至少两个进程代理,来自数据库的待处理任务存储在主机的共享内存中,如图6所示。可选的,至少两个进程代理通过信号量串行化的方式访问共享内存,以避免多个进程代理同时访问共享内存。在该可选的实现方式中,主任务进程可以将获取到的待处理任务存储在共享内存中。
其中,本发明实施例中的共享内存可以采用UNIX操作系统中内置的共享内存(英文:shared memory)机制,为了达到串行化访问内存的目的,可以采用UNIX操作系统中内置的信号量(英文:semaphores)机制。
现有技术中,一般地,不同主机中的任务处理进程的类型不同,也就是说,每个主机只能处理固定的几种类型的任务。例如,图1中的主机1中包含任务处理进程1、2,主机2中包含任务处理进程3。理论上,多个主机中也可以包含同一种任务处理进程,从而实现对对同一类型的任务进行处理。例如,多个主机中包含处理任务1的任务处理进程,该多个主机同时向数据库查询待处理任务1,数据库会分别向该多个主机回复同一个待处理任务1,从而导致该多个主机同时处理该待处理任务1,这会造成资源的浪费。
而在该可选的实现方式只用,由于多个进程代理按照串行化机制访问共享内存,因此,若多个第二主机同时访问第一主机,则多个进程代理会依次向多个第二主机回复不同的待处理任务,因此不会导致多个主机同时处理一个待处理任务,从而能够节省资源。
在该可选的实现方式中,S104可以包括以下S104a-S104b:
S104a:进程代理访问共享内存,以从共享内存中取出一个待处理任务。
具体的:进程代理访问共享内存,以查看共享内存中是否包含待处理任务;若共享内存中包含待处理任务,则进程代理检查信号量,并申请得到共享内存的写权限,然后按照先进先出的原则,从共享内存中取出一个待处理任务。需要说明的是,若进程代理检查信号量之后,未申请到共享内存的写权限,说明当前时刻有其他进程代理正在对共享内存进程访问,此时,该进程代理可以休眠一段时间,再重新申请共享内存的写权限。其中,本发明实施例对所休眠的时间段的长短不进行限定。
另外,若共享内存中不包含待处理任务,则进程代理可以不对第一请求消息进行响应,或者向任务处理进程返回无待处理任务的响应消息;进一步地,该情况下,在进程代理中包含监听服务进程的实现方式中,该监听服务进程可以继续监听是否接收到其他任务处理进程发送的请求消息(包括第一请求消息和第二请求消息)。
S104b:进程代理将所取出的待处理任务发送给任务处理进程。
具体的:进程代理通过该进程代理所提供的服务方式,将所取出的待处理任务发送给该任务处理进程。
在该可选的实现方式中,S107可以包括以下S107a:
S107a:进程代理访问共享内存,以确定共享内存中是否包含第二请求消息所请求的待更新任务。
需要说明的是,若请求消息用于请求更新任务,则进程代理可以首先解析该更新任务中待更新任务的标识信息,从而得到待更新任务的编码。该情况下,S107a可以包括:进程代理访问共享内存,以确定共享内存中是否包含待更新任务的编码所指示的待更新任务。
S107b:若共享内存中包含第二请求消息所请求的待更新任务,则进程代理对待更新任务进程的状态进行更新。
具体的,若共享内存中包含该待更新任务,则进程代理可以通过检查信号量申请到共享内存的写权限,然后将待更新任务的任务状态由“待处理状态”更新为“已处理状态”。
另外,该方法还可以包括:S107c:若共享内存中不包含请求消息所请求的待更新任务,则进程代理向任务处理进程返回“错误”的响应消息。
在一种可选的实现方式中,任意一个或多个第二主机中设置有能够处理第一主机中存储的每种类型的任务的任务处理进程。优选地,每个第二主机上设置有能够处理第一主机中存储的每种类型的任务的任务处理进程。在该实现方式中,由于任意一个第二主机均可以处理第一主机中包含的每种类型的任务,因此,当任务量较大时,可以通过扩展第二主机来提高系统处理任务的速率,并且,第二主机的数量的多少与数据库的负载无关,因此对数据库的性能要求较低。而现有技术中,若增加多个主机处理任务,则会增加数据库的负载,从而对数据库的性能要求较高。另外,由于进程代理从共享内存中获取数据的速率远大于主机从数据库中获取数据的速率,因此,与现有技术相比,本发明实施例提供的技术方案能够快速处理掉系统中较多的任务,从而提升系统性能。
在一种可选的实现方式中,任务处理进程与一个或多个任务插件连接,每个任务插件与任务处理进程配合使用,来处理一种类型的待处理任务。具体的:任务处理进程调用任务插件(具体是指用于处理该待处理任务的任务插件)来处理该待处理任务。在该可选的实现方式中,多个任务插件共享一个任务处理进程,一个主机(包括第一主机和第二主机)中可以设置一个任务处理进程,该任务处理进程可以通过上文所提供的任一种方法获取到待处理任务,然后,主机(包括第一主机/第二主机)通过调用待处理任务对应的任务插件,实现对该待处理任务的处理。
在该可选的实现方式中,若系统中增加一种新的任务,则只要开发一个处理该新的任务的任务插件,并在第二主机上安装该任务插件,即可实现在该系统中处理该新的任务;其中,该任务插件具备处理该新的任务的逻辑功能即可。而现有技术中,若系统中增加一种新的任务,则需要开发一个新的任务处理进程,其中,该任务处理进程除了需要实现处理该新的任务的逻辑功能之外,还需要实现访问数据库等逻辑功能。基于此,可知,该可选的实现方式,有利用系统中新任务的扩展。
如图7所示,是本发明实施例提供的一种主机的结构示意图。图7所示的主机7与数据库连接并通信,所述主机77中包括:主任务进程71、至少一个进程代理72和存储单元73;其中,每个所述进程代理72用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信。
所述主任务进程71用于:访问所述数据库,以获取待处理任务;并将获取到的待处理任务存储到所述存储单元73中。
所述进程代理72用于:接收一个任务处理进程发送的第一请求消息,其中,所述第一请求消息用于请求领取任务;并将所述存储单元73中存储的一个待处理任务发送给所述任务处理进程,以使得所述任务处理进程对该待处理任务进行处理。
可选的,所述主机7中包括至少两个所述进程代理72;所述存储单元73包括共享内存;所述主任务进程71具体用于:将获取到的待处理任务存储在所述共享内存中;所述进程代理72具体用于:访问所述共享内存,以从所述共享内存中取出一个待处理任务;并将所取出的待处理任务发送给所述任务处理进程。
可选的,所述至少两个所述进程代理72通过信号量串行化的方式访问所述共享内存。
可选的,所述任务处理进程设置在所述主机7上或第二主机上;若所述任务处理进程设置在所述第二主机上,则所述第二主机通过所述进程代理72所提供的服务方式与所述主机7进行连接并通信。如图8所示,主机7中设置有至少一个任务处理进程74。
可选的,每个所述第二主机上设置有能够处理所述主机7中存储的每种类型的任务的所述任务处理进程。
可选的,所述任务处理进程与一个或多个任务插件连接,所述任务处理进程调用所述任务插件来处理该待处理任务。如图8所示,主机7中的每个任务处理进程74对应一个或多个任务插件75,任务处理进程74通过调用其对应的一个任务插件75(具体是指用于处理待处理任务的),来处理该待处理任务。
可选的,所述主任务进程71具体用于:将获取到的待处理任务生成数据结构体,并将所述数据结构体存储在所述存储单元73中。其中,结合上述包含共享内存的实现方式中,这里的存储单元73具体是指共享内存。
可选的,所述进程代理72还用于:接收所述任务处理进程发送的第二请求消息,其中,所述第二请求消息用于请求更新任务;以及对所述第二请求消息所请求的待更新任务的状态进行更新。
本发明实施例提供的主机7能够达到的有益效果可参考上文提供的任务处理方法部分的相应内容的描述,此处不再赘述。
另外,本发明实施例提供了一种主机,该主机具有实现上文提供主机7的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。例如,在硬件实现上,上文中的存储单元73具体可以是存储器。主任务进程71和至少一个进程代理72,可选的还包括任务处理进程74,进一步可选的还包括任务插件75等均可以是硬件形式的处理器,也可以以软件的形式存储在存储器中,以使处理器通过调用该存储器中的相应的程序代码来执行相应地动作。例如,处理器可以通过调用该存储器中的相应的程序代码来执行访问所述数据库,以获取待处理任务;并将获取到的待处理任务存储到所述存储器的动作。在一种可能的实现方式中,主机的结构中还包括处理器和收发器,处理器被配置为支持主机执行上述方法中相应的功能。收发器用于支持该主机与第二主机之间进行通信。该主机还可以包括存储器,所述存储器用于与处理器耦合,其保存该主机必要的程序指令和数据。
另外,本发明实施例还提供了一种存储介质,用于储存为上述第一主机所用的计算机软件指令,其包含用于执行上述第一方面中第一主机所执行的动作对应的程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (16)

1.一种任务处理方法,其特征在于,应用于第一主机,所述第一主机与数据库连接并通信,所述第一主机中设置有主任务进程和至少一个进程代理,每个所述进程代理用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信;所述方法包括:
所述主任务进程访问所述数据库,以获取待处理任务;并将获取到的待处理任务存储在所述第一主机中;
所述进程代理接收一个任务处理进程发送的第一请求消息,其中,所述第一请求消息用于请求领取任务;
所述进程代理将所述第一主机中存储的一个待处理任务发送给所述任务处理进程,以使得所述任务处理进程对该待处理任务进行处理。
2.根据权利要求1所述的方法,其特征在于,所述第一主机中设置有至少两个所述进程代理;所述主任务进程将获取到的待处理任务存储在所述第一主机中,包括:
所述主任务进程将获取到的待处理任务存储在所述第一主机的共享内存中;
所述进程代理将所述第一主机中存储的一个待处理任务发送给所述任务处理进程,包括:
所述进程代理访问所述共享内存,以从所述共享内存中取出一个待处理任务;并将所取出的待处理任务发送给所述任务处理进程。
3.根据权利要求2所述的方法,其特征在于,所述至少两个所述进程代理通过信号量串行化的方式访问所述共享内存。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述任务处理进程设置在所述第一主机上或第二主机上;若所述任务处理进程设置在所述第二主机上,则所述第二主机通过所述进程代理所提供的服务方式与所述第一主机进行连接并通信。
5.根据权利要求4所述的方法,其特征在于,每个所述第二主机上设置有能够处理所述第一主机中存储的每种类型的任务的所述任务处理进程。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述任务处理进程与一个或多个任务插件连接,所述任务处理进程调用所述任务插件处理该待处理任务。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述主任务进程将获取到的待处理任务存储在所述第一主机中,包括:
所述主任务进程将获取到的待处理任务生成数据结构体,并将所述数据结构体存储在所述第一主机中。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
所述进程代理接收所述任务处理进程发送的第二请求消息,其中,所述第二请求消息用于请求更新任务;
所述进程代理对所述第二请求消息所请求的待更新任务的状态进行更新。
9.一种主机,其特征在于,所述主机与数据库连接并通信,所述主机中包括:主任务进程、至少一个进程代理和存储单元;其中,每个所述进程代理用于向外提供一种服务方式,并利用所提供的服务方式与任务处理进程进行连接并通信;
所述主任务进程用于:访问所述数据库,以获取待处理任务;并将获取到的待处理任务存储到所述存储单元中;
所述进程代理用于:接收一个任务处理进程发送的第一请求消息,其中,所述第一请求消息用于请求领取任务;并将所述存储单元中存储的一个待处理任务发送给所述任务处理进程,以使得所述任务处理进程对该待处理任务进行处理。
10.根据权利要求9所述的主机,其特征在于,所述主机中包括至少两个所述进程代理;所述存储单元包括共享内存;
所述主任务进程具体用于:将获取到的待处理任务存储在所述共享内存中;
所述进程代理具体用于:访问所述共享内存,以从所述共享内存中取出一个待处理任务;并将所取出的待处理任务发送给所述任务处理进程。
11.根据权利要求10所述的主机,其特征在于,所述至少两个所述进程代理通过信号量串行化的方式访问所述共享内存。
12.根据权利要求9-11任一项所述的主机,其特征在于,所述任务处理进程设置在所述主机上或第二主机上;若所述任务处理进程设置在所述第二主机上,则所述第二主机通过所述进程代理所提供的服务方式与所述主机进行连接并通信。
13.根据权利要求12所述的主机,其特征在于,每个所述第二主机上设置有能够处理所述主机中存储的每种类型的任务的所述任务处理进程。
14.根据权利要求9-13任一项所述的主机,其特征在于,所述任务处理进程与一个或多个任务插件连接,所述任务处理进程调用所述任务插件来处理该待处理任务。
15.根据权利要求9-14任一项所述的主机,其特征在于,所述主任务进程具体用于:将获取到的待处理任务生成数据结构体,并将所述数据结构体存储在所述存储单元中。
16.根据权利要求9-15任一项所述的主机,所述进程代理还用于:接收所述任务处理进程发送的第二请求消息,其中,所述第二请求消息用于请求更新任务;以及对所述第二请求消息所请求的待更新任务的状态进行更新。
CN201610100052.5A 2016-02-23 2016-02-23 一种任务处理方法和装置 Active CN107102901B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610100052.5A CN107102901B (zh) 2016-02-23 2016-02-23 一种任务处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610100052.5A CN107102901B (zh) 2016-02-23 2016-02-23 一种任务处理方法和装置

Publications (2)

Publication Number Publication Date
CN107102901A true CN107102901A (zh) 2017-08-29
CN107102901B CN107102901B (zh) 2020-07-14

Family

ID=59659052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610100052.5A Active CN107102901B (zh) 2016-02-23 2016-02-23 一种任务处理方法和装置

Country Status (1)

Country Link
CN (1) CN107102901B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883654A (zh) * 2022-11-29 2023-03-31 深圳市汇川技术股份有限公司 进程通信方法、装置、设备及存储介质
CN117806851A (zh) * 2024-02-28 2024-04-02 苏州元脑智能科技有限公司 多主机共享的内存系统、内存访问方法、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681889A (zh) * 2012-04-27 2012-09-19 电子科技大学 一种云计算开放平台的调度方法
US20120272204A1 (en) * 2011-04-21 2012-10-25 Microsoft Corporation Uninterruptible upgrade for a build service engine
CN104318354A (zh) * 2014-10-11 2015-01-28 北京网秦天下科技有限公司 任务信息处理方法和系统
CN104331327A (zh) * 2014-12-02 2015-02-04 山东乾云启创信息科技有限公司 大规模虚拟化环境中任务调度的优化方法及优化系统
US20150378932A1 (en) * 2014-06-26 2015-12-31 NXGN Data, Inc. System and method for executing native client code in a storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272204A1 (en) * 2011-04-21 2012-10-25 Microsoft Corporation Uninterruptible upgrade for a build service engine
CN102681889A (zh) * 2012-04-27 2012-09-19 电子科技大学 一种云计算开放平台的调度方法
US20150378932A1 (en) * 2014-06-26 2015-12-31 NXGN Data, Inc. System and method for executing native client code in a storage device
CN104318354A (zh) * 2014-10-11 2015-01-28 北京网秦天下科技有限公司 任务信息处理方法和系统
CN104331327A (zh) * 2014-12-02 2015-02-04 山东乾云启创信息科技有限公司 大规模虚拟化环境中任务调度的优化方法及优化系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883654A (zh) * 2022-11-29 2023-03-31 深圳市汇川技术股份有限公司 进程通信方法、装置、设备及存储介质
CN117806851A (zh) * 2024-02-28 2024-04-02 苏州元脑智能科技有限公司 多主机共享的内存系统、内存访问方法、设备和存储介质
CN117806851B (zh) * 2024-02-28 2024-05-10 苏州元脑智能科技有限公司 多主机共享的内存系统、内存访问方法、设备和存储介质

Also Published As

Publication number Publication date
CN107102901B (zh) 2020-07-14

Similar Documents

Publication Publication Date Title
CN107729139B (zh) 一种并发获取资源的方法和装置
US6901405B1 (en) Method for persisting a schedule and database schema
JP4760491B2 (ja) イベント処理システム、イベント処理方法、イベント処理装置、及び、イベント処理プログラム
CN102262680B (zh) 一种基于海量数据存取需求的分布式数据库代理系统
US20100186020A1 (en) System and method of multithreaded processing across multiple servers
CN108076098A (zh) 一种业务处理方法及系统
JP2003520363A (ja) 部分的に複製されるデータベースシステムのネットワークにおけるデータメンテナンス方法
CN101099132A (zh) 提交给网格环境的网格作业使用前的资源功能性验证
KR20020090520A (ko) 트랜잭션 처리 시스템의 병렬 로깅 방법
TWI497321B (zh) 多重網路之平行電腦系統中查詢最佳化
US20080065588A1 (en) Selectively Logging Query Data Based On Cost
CN101131697A (zh) 用于使记录在分区之间移动的系统和方法
CN110399383A (zh) 应用于服务器的数据处理方法、装置、计算设备、介质
CN112039970B (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
CN108874567A (zh) 一种服务处理方法及系统
CN102457578B (zh) 一种基于事件机制的分布式网络监控方法
CN110659259A (zh) 数据库迁移方法、服务器以及计算机存储介质
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
CN107102901A (zh) 一种任务处理方法和装置
CN107066522A (zh) 数据库的访问方法和装置
CN116204239A (zh) 业务处理方法、装置和计算机可读存储介质
CN112114983A (zh) 一种基于共享内存的通信方法、装置和设备
US10110670B2 (en) Allocation of service endpoints to servers
CN101754156A (zh) 局数据管理方法、装置及计费系统
CN1399209A (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
GR01 Patent grant
GR01 Patent grant