CN108628677B - 分布式任务处理***、方法和装置 - Google Patents
分布式任务处理***、方法和装置 Download PDFInfo
- Publication number
- CN108628677B CN108628677B CN201710166286.4A CN201710166286A CN108628677B CN 108628677 B CN108628677 B CN 108628677B CN 201710166286 A CN201710166286 A CN 201710166286A CN 108628677 B CN108628677 B CN 108628677B
- Authority
- CN
- China
- Prior art keywords
- task
- monitoring
- processed
- execution process
- 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.)
- Active
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了分布式任务处理***、方法和装置。该***的一具体实施方式包括:任务分发端,用于从待处理任务队列中提取待处理任务,并根据所连接的至少一个任务处理端的负载情况,从该至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务;任务处理端,用于接收该任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对该任务执行进程进行监控的监控进程,以及将该监控进程所生成的监控信息发送给该任务分发端。该实施方式提高了任务处理效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及分布式任务处理***、方法和装置。
背景技术
现如今***数据日益增大,业务复杂性也越来越高,因此对于***的处理能力以及数据处理过程的监控也都提出了更高的要求。为了处理数据的高效稳定性,从最初的单点串行执行任务,到分布式多线程高并发处理。从Java内存做队列调度实现分布式到依赖中间件实现集群调度,都是要高效的对大数据处理。
依赖消息中间件构建生产者、消费者消息路由的通信模块。由于引入了消息中间件,消息中间件的可靠性、容错性、健壮性往往成为这类架构的决定性因素;同时,采用多线程执行还有可能存在线程安全问题。
发明内容
本申请的目的在于提出一种分布式任务处理***、方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种分布式任务处理***,上述***包括任务分发端,用于从待处理任务队列中提取待处理任务,并根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务;任务处理端,用于接收上述任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,以及将上述监控进程所生成的监控信息发送给上述任务分发端。
在一些实施例中,上述任务分发端还用于根据上述监控信息,确定上述待处理任务是否完成,并且在确定上述待处理任务已完成的情况下,根据上述监控信息生成任务处理结果。
在一些实施例中,上述任务处理端还用于响应于上述任务执行进程的异常终止,向上述任务分发端发送上述监控进程所生成的监控信息,其中,上述监控信息包括上述任务处理端的负载情况、任务执行进程信息;上述任务分发端还用于接收上述监控信息,并保存上述任务执行进程信息;上述任务处理端还用于在接收到上述任务分发端发送的上述任务执行进程信息之后,使用接收到的上述任务执行进程信息,重新启动任务执行进程。
在一些实施例中,上述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率和任务的历史处理速率。
第二方面,本申请提供了一种分布式任务处理方法,上述方法包括:从待处理任务队列中提取待处理任务;根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供上述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,以及返回上述监控进程所生成的监控信息;根据上述监控信息生成上述所提取的待处理任务的处理结果。
在一些实施例中,上述根据上述监控信息生成上述所提取的待处理任务的处理结果,包括:根据上述监控信息,确定上述待处理任务是否完成,并且在确定上述待处理任务已完成的情况下,根据上述监控信息生成任务处理结果。
在一些实施例中,接收监控信息,其中,上述监控信息是上述任务处理端响应于上述任务执行进程的异常终止,发送上述监控进程所生成的监控信息,上述监控信息包括上述任务处理端的负载情况、任务执行进程信息;响应于接收上述监控信息,保存上述任务执行进程信息;发送上述任务执行进程信息给上述任务处理端,以供上述任务处理端使用接收到的上述任务执行进程信息,重新启动任务执行进程。
在一些实施例中,上述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率和任务的历史处理速率。
第三方面,本申请提供了一种分布式任务处理装置,上述装置包括:提取模块,用于从待处理任务队列中提取待处理任务;选择分发模块,用于根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供上述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的执行任务进程,并且启动对上述任务执行进程进行监控的监控进程,以及返回上述监控进程所生成的监控信息;生成模块,用于根据上述监控信息生成上述所提取的待处理任务的处理结果。
在一些实施例中,上述装置还包括:接收模块,用于接收监控信息,其中,上述监控信息是上述任务处理端响应于上述任务执行进程的异常终止,发送上述监控进程的监控信息,上述监控信息包括上述任务处理端的负载情况、任务执行进程信息;存储模块,用于响应于接收上述监控信息,保存上述任务执行进程信息;发送模块,用于向上述任务处理端发送所保存的上述任务执行进程信息,以供上述任务处理端使用接收到的上述任务执行进程信息,重新启动任务执行进程。
本申请实施例提供的分布式任务***、方法和装置,根据任务处理端负载情况进行优选目标任务处理端,向不同任务处理端分发不同任务量,任务处理端在任务处理过程中,应用了多进程保证处理任务有效运行,提高了处理任务效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请的分布式任务处理***的示例性架构图;
图2是根据本申请的分布式任务处理***的一实施例的时序图;
图3是根据本申请的分布式任务处理***的又一实施例的时序图;
图4是根据本申请的分布式任务处理方法的一实施例的流程图;
图5是根据本申请的分布式任务处理装置的一实施例的结构示意图;
图6是根据本申请的分布式任务处理装置的另一实施例的结构示意图;
图7是适于用来实现本申请实施例的服务器的计算机***的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了根据本申请的分布式任务处理***的示例性架构100。
如图1所示,***架构100可以包括服务器101、102、103,网络104和服务器105、服务器106。作为示例,服务器101、102、103可以是任务分发端,服务器105、服务器106可以是任务处理端。网络104用以在服务器101、102、103和服务器105、服务器106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以将服务器101、102、103通过网络104与服务器105、服务器106交互,以接收或发送消息等。
服务器101、102、103可以是各种类型、提供各种服务的服务器,例如数据库服务器、高性能计算服务器等,也可以是对服务器105、服务器106进行分配任务、发送任务信息的服务器。
服务器105、服务器106可以是提供各种服务的服务器,例如接收服务器101、102、103发送的任务,并对任务进行处理的服务器,并将任务处理信息反馈给服务器101、服务器102、服务器103。
应该理解,图1中的网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的网络和服务器。
继续参考图2,示出了根据本申请的分布式任务处理***的一实施例的时序图。
本实施例的分布式任务处理***包括:任务分发端和任务处理端。其中,任务分发端,用于从待处理任务队列中提取待处理任务,并根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务;任务处理端,用于接收上述任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,以及将上述监控进程所生成的监控信息发送给上述任务分发端。
本实施例提供的分布式任务处理***任务分发端根据上述任务处理端的负载情况分发待处理任务,以供上述任务处理端进行任务处理,实现有效的资源利用率,进而提高了任务处理的效率。
如图2所示,在步骤201中,任务分发端用于从待处理任务队列中提取待处理任务。
在本实施例中,任务分发端从待处理任务队列中提取待处理任务,以便于任务处理端对待处理任务进行处理。
需要说明的是,任务分发端可以是具有任务获取、分发功能的服务器。
在本实施例中,待处理任务是以队列形式存储于加锁数据库中的等待处理的任务。在存储过程中,任务与任务队列存在对应关系,可以将不同类型的任务存放在不同队列中。例如:类型A任务存放在a队列中,类型B任务存放在b队列中。实践中,任务队列是一个先入先出的链表任务队列,该任务队列的头部元素即最早进入队列的任务,队列的尾部元素即后进入队列的任务。任务分发端提取的待处理任务是任务队列中头部的任务。
在本实施例中,上述数据库可以是Redis数据库,其中,Redis数据库是一个开源的使用ANSI C(由美国国家标准协会ANSI及国际标准化组织ISO推出的关于C语言的标准)语言编写、支持网络、可基于内存亦可持久化的日志型、分布式存储***数据库。上述数据库也可以是任意的数据库,只要保证数据库中存储的数据在该数据库中都是唯一的。
在本实施例中,提取任务具体过程为:由于待处理任务存储于加锁数据库中,因而任务分发端提取任务首先执行获取锁请求操作,若获取锁成功,获得提取待处理任务权限,可以提取待处理任务;若获取锁失败,继续执行获取锁请求操作,直到获取锁成功。这样可以保证只有一个请求能执行成功,相当于保证把锁分配给唯一的申请者,这样能够确保不重复分配任务。
在步骤202中,任务分发端根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端。
在本实施例中,任务分发端在提取到待处理的任务之后,根据所连接的至少一个待处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端,该目标任务处理端被用于接收待处理任务,并处理任务。
任务处理端可以是具有一定处理功能的服务器。
在本实施例的一些可选的实现方式中,上述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率和任务的历史处理速率。
其中,任务的历史处理速率是指在接收到待处理任务之前的一个时间段内,处理任务的快慢程度。
在本实施例中,从上述至少一个任务处理端中选择负载低的任务处理端作为目标任务处理端。例如,任务分发端可以根据负载情况,选择任务处理端中内存占用率低的任务处理端作为目标任务处理端;也可以选择任务的历史处理速率比较高的任务处理端作为目标任务处理端。
在步骤203中,任务分发端将所提取的待处理任务发送给目标任务处理端。
在本实施例中,任务分发端提取到待处理任务,并从任务处理端中选择目标任务处理端之后,将待处理任务发送给目标任务处理端,以供目标任务处理端进行任务处理。
在步骤204中,目标任务处理端接收上述任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,上述监控进程生成监控信息。
在本实施例中,上述目标任务处理端接收到上述任务分发端发送的待处理任务后,根据任务的不同,创建不同的任务执行进程。上述任务执行进程是用于处理任务的进程,目标任务处理端也可以根据任务量的多少、目标任务处理端的负载情况综合分析,也可以同时创建多个任务执行进程处理任务。在创建任务执行进程后,对每个任务执行进程启动一个监控进程。上述监控进程是实时监控任务执行进程状况的进程。上述监控进程可以分配低内存,保证正常运行即可。监控进程会生成监控信息,监控信息包括任务处理端的负载情况和任务执行进程信息。并且,任务处理端实时将监控进程生成的监控信息发送给任务分发端。
在本实施例的一些可选的实现方式中,上述目标任务处理端的任务执行进程出现异常情况,任务执行进程终止。上述目标任务处理端的监控进程生成的监控信息发送给任务分发端,任务分发端接收到上述监控信息后,并保存监控信息中的任务执行进程信息。当该目标任务处理端重新处理任务的时,任务分发端将保存的监控信息中的任务执行进程信息发送给上述任务处理端,该目标任务处理端重新运行任务执行进程。
在上述任务处理端的任务执行进程正常运行时,需要对任务逻辑进行修改,因此,任务执行进程被终止。上述目标任务处理端将监控进程生成的监控信息发送给任务分发端。任务分发端接收到上述监控信息后,将其保存。当该目标任务处理端修改任务逻辑后,任务分发端可以将保存的监控信息中的任务执行进程信息发送给上述任务处理端,上述目标任务处理端可以根据任务执行进程信息重新创建一个新的任务执行进程并启动该任务执行进程。
在步骤205中,任务处理端发送监控进程生成的监控信息。
在本实施例中,上述任务处理端将监控进程生成的监控信息发送给任务分发端,以便于任务分发端实时监控任务执行进程的运行情况以及任务处理端的机器负载情况。例如:当任务处理端的任务执行进程异常终止,发送监控信息给任务分发端,任务分发端实时接收到信息,以便于进行后续的操作。
在步骤206中,任务分发端接收任务处理端发送监控信息,并生成任务处理结果。
在本实施例中,任务分发端接收到任务处理端发送的监控信息,根据监控信息,来确定任务完成情况,并生成任务处理结果。
在本实施例的一些可选的实现方式中,任务分发端根据接收到的监控信息,来确定待处理任务是否完成,在确定待处理任务已经完成的情况下,会生成一个任务处理结果。例如:接收到的监控信息里面包含任务执行进程的返回值1,通过该返回值1,可以判断任务已经完成,任务分发端根据该已完成信息,生成一个任务处理结果。
在本实施例中,任务分发端接收到任务处理端发送的监控信息,即使在任务处理端发现异常情况,任务执行进程突然终止,也可以保证任务执行信息的不丢失,这样也有助于处理任务的稳定性。
继续参考图3,示出了根据本申请的分布式任务处理***的一实施例的时序图。
本实施例的分布式任务处理***包括:任务分发端和任务处理端;其中,任务分发端,用于从待处理任务队列中提取待处理任务,并根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务;任务处理端,用于接收上述任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,以及将上述监控进程所生成的监控信息发送给上述任务分发端。
上述目标任务处理端还用于响应于上述任务执行进程的异常终止,向上述任务分发端发送上述监控进程所生成的监控信息,其中,上述监控信息包括上述任务处理端的负载情况、任务执行进程信息;
上述任务分发端还用于接收上述监控信息,并保存上述任务执行进程信息;
上述目标任务处理端还用于在接收到上述任务分发端发送的上述任务执行进程信息之后,使用接收到的上述任务执行进程信息,重新启动任务执行进程。
如图3所示,在步骤301中,目标任务处理端响应于上述任务执行进程的异常终止,向任务分发端发送监控信息。
在本实施例中,目标任务处理端的任务执行进程出现异常情况,上述目标任务处理端响应于任务执行进程终止。该目标任务端发送上述任务执行进程的监控进程的监控信息给任务分发端,以便于后续重新启动任务执行进程。监控信息是监控进程生成的信息,监控信息包括任务处理端的负载情况和任务执行进程信息。并且,上述目标任务处理端实时将监控进程生成的监控信息发送给任务分发端。作为示例,也可以是在该目标任务处理端的任务执行进程正常运行时,需要对任务逻辑进行修改,因此,任务执行进程被终止。该目标任务处理端将监控进程生成的监控信息发送给任务分发端。
在步骤302中,任务分发端接收监控信息,并保存监控信息。
在本实施例中,任务分发端接收上述目标任务处理端发送的上述终止的任务执行进程的监控进程的监控信息,并将监控信息保存。
在步骤303中,任务分发端发送监控信息给目标任务处理端。
在本实施例中,任务分发端将保存的监控信息发送给目标任务处理端。实践中,在该目标任务处理端重新执行任务进程的时,任务分发端将保存的监控信息中的任务执行进程信息发送给上述目标任务处理端,以便于任务处理端执行后续的操作。作为示例,也可以是在目标任务处理端在修改任务逻辑后,任务分发端可以将保存的监控信息中的任务执行进程信息发送给目标任务处理端。
在步骤304,目标任务处理端接收监控信息并执行任务处理进程。
在本实施例中,目标任务处理端接收到任务分发端发送的监控信息中的任务执行进程信息后,并根据实际情况执行任务处理进程。例如:如果是任务进程的异常终止,该目标任务处理端可以利用接收到的监控信息重新执行任务进程;如果是由于任务逻辑需要修改,任务执行进程被终止,那么该目标任务处理端可以利用接收到的监控信息,重新创建一个任务执行进程,用于任务处理。
继续参考图4,其示出了根据本申请的分布式任务处理方法的一个实施例的流程400。本实施例所示的分布式任务处理方法一般由图1所示的服务器101、服务器102、服务器103中任何一台服务器执行。
在步骤401中,从待处理任务队列中提取待处理任务。
在本实施例中,分布式任务处理方法运行于其上的电子设备(例如图1所示的服务器101、服务器102、服务器103中任何一台服务器作为任务分发端),上述电子设备从待处理任务队列中提取待处理任务。上述待处理任务是以队列形式存储于加锁数据库中等待处理的任务。存储过程中,将不同类型的任务存放在不同队列中。例如:类型A任务存放在a队列中,类型B任务存放在b队列中。实践中,任务队列是一个先入先出的链表任务队列,该任务队列的头部元素即最早进入队列的任务,队列的尾部元素即后进入队列的任务。任务分发端从加锁数据库中提取任务是从队列头部开始提取任务。
上述数据库可以是Redis数据库,也可以是任意的数据库,只要上述数据库中存储的数据在该数据库中都是唯一的。由于待处理任务存储于加锁数据库中,因而任务分发端提取任务首先要执行获取锁请求操作,若获取锁成功,获得提取待处理任务权限,进而可以提取待处理任务;若获取锁失败,继续执行获取锁请求操作,直到获取锁成功。这样可以保证只有一个请求能执行成功,相当于保证把锁分配给唯一的申请者,这样有助于保证不重复分配任务。
在步骤402中,根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务。
在本实施例中,任务分发端在提取到待处理的任务之后,根据所连接的至少一个待处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端,该目标任务处理端被用于接收待处理任务,并处理任务。
目标任务处理端可以是具有一定处理功能的服务器(例如图1所示的服务器105、服务器106中某一台服务器作为目标任务分发端)。
在本实施例的一些可选的实现方式中,上述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率和任务的历史处理速率。
在本实施例中,从上述至少一个任务处理端中选择负载低的任务处理端作为目标任务处理端。例如,任务分发端可以根据负载情况,选择任务处理端中内存占用率低的任务处理端作为目标任务处理端;也可以选择任务的历史处理速率比较高的任务处理端作为目标任务处理端。
在步骤403中,接收监控信息。
在本实施例中,监控信息是由监控进程生成的信息,监控信息包括任务处理端的负载情况和任务执行进程信息;监控进程是目标任务处理端在接收到待处理任务后,根据任务的不同,创建不同的任务执行进程,在创建任务执行进程后,启动监控进程用以监控任务执行进程状况。
在本实施例的一些可选的实现方式中,目标任务处理端的任务执行进程出现异常情况,任务执行进程终止。该目标任务处理端的监控进程生成的监控信息发送给上述任务分发端,该任务分发端接收到上述监控信息后,并保存监控信息。当该目标任务处理端重新处理任务的时,任务分发端将保存的监控信息中的任务执行进程信息发送给该目标任务处理端,该目标任务处理端重新运行任务执行进程。
在上述目标任务处理端的任务执行进程正常运行时,需要对该任务逻辑做修改,将上述任务执行进程终止。上述目标任务处理端将监控进程生成的监控信息发送给上述任务分发端,该任务分发端接收到上述监控信息后,并将其保存。当上述目标任务处理端修改任务逻辑后,上述任务分发端可以将保存的监控信息中的任务执行进程信息发送给该目标任务处理端,该目标任务处理端可以根据接收到的任务执行进程信息重新创建一个任务执行进程并启动该新创建的任务执行进程。
在步骤404中,根据监控信息生成待处理任务的处理结果。
任务分发端接收目标任务处理端发送的监控信息,当该目标任务处理端的任务执行进程出现异常情况,该任务执行进程突然终止,可确保该任务执行信息的不丢失,这样,也有助于处理任务的稳定性。
在本实施例的一些可选的实现方式中,任务分发端根据接收到的监控信息,来确定待处理任务是否完成,在确定该待处理任务已经完成的情况下,会生成一个任务处理结果。例如:接收到的监控信息里包含任务执行进程的返回值1,通过该返回值1,可以判断任务已经完成,任务分发端根据该已完成信息,生成一个任务处理结果。
进一步参考图5,作为对上述所示方法的实现,本申请提供了分布式任务处理装置的一个实施例,该装置实施例与图4所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例上述的分布式任务处理装置500包括:提取模块、选择分发模块和生成模块;其中,提取模块501,配置用于从待处理任务队列中提取待处理任务;选择分发模块502,配置用于根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供上述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的执行任务进程,并且启动对上述任务执行进程进行监控的监控进程,以及返回上述监控进程所生成的监控信息;生成模块503,配置用于根据上述监控信息生成所提取的待处理任务的处理结果。
在本实施例中,分布式任务处理装置500中的提取模块501可以从待处理任务队列中提取待处理任务,该任务队列存储于加锁数据库中,提取任务首先要获得锁成功,获得锁成功之后可以提取待处理任务队列中的待处理任务。其中,待处理任务队列是一种先入先出队列。提取模块501提取的待处理任务是先存入任务队列中的待处理任务。
在本实施例中,上述加锁数据库可以是任何形式的数据库,只要该数据库中存储的数据在该数据库中是唯一的。例如,可以存储在Redis数据库,该数据库是每次只有一个请求能执行成功,相当于保证把锁分配给唯一的申请者,这样也有助于保证分配任务不重复。
在本实施例中,选择分发模块502在提取模块501提取待处理任务后,根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择负载低的作为目标任务处理端,并将所提取的待处理任务发送给该目标任务处理端。
在本实施例的一些可选的实现方式中,分布式任务处理装置还包括接收模块601、存储模块602和发送模块603。其中,接收模块601,配置用于接收监控信息。监控信息是任务处理端发送的信息。监控信息包括:任务处理端的负载情况和任务执行进程信息。任务处理端在任务执行进程出现异常情况,该任务执行进程终止,上述任务处理端将该任务执行进程的监控进程生成的监控信息发送给任务分发端。上述装置中接收模块601接收上述监控信息,存储模块602保存接收到的上述监控信息;发送模块603将所保存的任务执行进程信息发送给上述任务处理端发送所保存的上述任务执行进程信息,以供任务处理端使用重新启动任务执行进程。
在本实施例的一些可选的实现方式中,也可以是在任务处理端任务执行进程正常运行时,需要对任务逻辑做改,上述任务执行进程被终止,任务处理端监控进程生成的监控信息发送给任务分发端,任务分发端接收模块601接收上述监控信息,并将任务执行进程信息保存,当任务处理端修改任务逻辑后,任务分发端发送模块603将保存的监控信息中的任务执行进程信息发送给任务处理端,任务处理端可以根据任务执行进程信息新创建一个任务执行进程并启动。
下面参考图7,其示出了适于用来实现本申请实施例的服务器的计算机***700的结构示意图。图7示出的终端设备/服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括提取模块、选择分发模块和生成模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,提取模块还可以被描述为“提取待处理任务的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:从待处理任务队列中提取待处理任务;根据所连接的至少一个任务处理端的负载情况,从上述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供上述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的任务执行进程,并且启动对上述任务执行进程进行监控的监控进程,以及返回上述监控进程所生成的监控信息;根据上述监控信息生成上述所提取的待处理任务的处理结果。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (9)
1.一种分布式任务处理***,其特征在于,所述***包括:
任务分发端,用于基于每个待处理任务对应的锁从加锁数据库存储的待处理任务队列中提取待处理任务,并根据所连接的至少一个任务处理端的负载情况,从所述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,其中,所述负载情况包括任务的历史处理速率,所述目标任务处理端为至少一个任务处理端中任务的历史处理速 率高的任务处理端;
任务处理端,用于接收所述任务分发端发送的待处理任务,启动所接收的待处理任务的任务执行进程,并且启动对所述任务执行进程进行监控的监控进程,以及将所述监控进程所生成的监控信息发送给所述任务分发端,所述监控进程是实时监控所述任务执行进程状况的进程,所述监控信息包括所述任务处理端的实时负载情况和任务执行进程信息;
所述任务处理端还用于响应于所述任务执行进程的异常终止,向所述任务分发端发送所述监控进程所生成的监控信息;
所述任务分发端还用于接收所述监控信息,并保存所述任务执行进程信息;
所述任务处理端还用于在接收到所述任务分发端发送的所述任务执行进程信息之后,使用接收到的所述任务执行进程信息,根据所述任务执行进程信息对应的实际情况重新启动任务执行进程。
2.根据权利要求1所述的分布式任务处理***,其特征在于,
所述任务分发端还用于根据所述监控信息,确定所述待处理任务是否完成,并且在确定所述待处理任务已完成的情况下,根据所述监控信息生成任务处理结果。
3.根据权利要求1-2之一所述的分布式任务处理***,其特征在于,
所述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率。
4.一种分布式任务处理方法,其特征在于,所述方法包括:
基于每个待处理任务对应的锁从加锁数据库存储的待处理任务队列中提取待处理任务;
根据所连接的至少一个任务处理端的负载情况,从所述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供所述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的任务执行进程,并且启动对所述任务执行进程进行监控的监控进程,以及返回所述监控进程所生成的监控信息,其中,所述负载情况包括任务的历史处理速率,所述目标任务处理端为至少一个任务处理端中任务的历史处理速 率高的任务处理端,所述监控进程是实时监控所述任务执行进程状况的进程,所述监控信息包括所述任务处理端的实时负载情况和任务执行进程信息;
根据所述监控信息生成所述所提取的待处理任务的处理结果;
接收监控信息,其中,所述监控信息是所述目标任务处理端响应于所述任务执行进程的异常终止而发送的所述监控进程生成的监控信息;
响应于接收到所述监控信息,保存所述任务执行进程信息;
发送所述任务执行进程信息给所述目标任务处理端,以供所述目标任务处理端使用接收到的所述任务执行进程信息,根据所述任务执行进程信息对应的实际情况重新启动任务执行进程。
5.根据权利要求4所述的分布式任务处理方法,其特征在于,所述根据所述监控信息生成所述所提取的待处理任务的处理结果,包括:
根据所述监控信息,确定所述待处理任务是否完成,并且在确定所述待处理任务已完成的情况下,根据所述监控信息生成任务处理结果。
6.根据权利要求4所述的分布式任务处理方法,其特征在于,
所述负载情况包括以下至少一项:任务处理端的内存占用率、网络速率。
7.一种分布式任务处理装置,其特征在于,所述装置包括:
提取模块,用于基于每个待处理任务对应的锁从加锁数据库存储的待处理任务队列中提取待处理任务;
选择分发模块,用于根据所连接的至少一个任务处理端的负载情况,从所述至少一个任务处理端中选择目标任务处理端发送所提取的待处理任务,以供所述目标任务处理端在接收到待处理任务后,启动所接收的待处理任务的任务执行进程,并且启动对所述任务执行进程进行监控的监控进程,以及返回所述监控进程所生成的监控信息,其中,所述负载情况包括任务的历史处理速率,所述目标任务处理端为至少一个任务处理端中任务的历史处理速 率高的任务处理端,所述监控进程是实时监控所述任务执行进程状况的进程,所述监控信息包括所述任务处理端的实时负载情况和任务执行进程信息;
生成模块,用于根据所述监控信息生成所述所提取的待处理任务的处理结果;
接收模块,用于接收监控信息,其中,所述监控信息是所述任务处理端响应于所述任务执行进程的异常终止,发送所述监控进程的监控信息,监控信息包括所述目标任务处理端的负载情况、任务执行进程信息;
存储模块,用于响应于所述监控信息,保存所述任务执行进程信息;
发送模块,用于向所述目标任务处理端发送所保存的所述任务执行进程信息,以供所述目标任务处理端使用接收到的所述任务执行进程信息,根据所述任务执行进程信息对应的实际情况重新启动任务执行进程。
8.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求4-6中任一所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求4-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710166286.4A CN108628677B (zh) | 2017-03-20 | 2017-03-20 | 分布式任务处理***、方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710166286.4A CN108628677B (zh) | 2017-03-20 | 2017-03-20 | 分布式任务处理***、方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628677A CN108628677A (zh) | 2018-10-09 |
CN108628677B true CN108628677B (zh) | 2022-12-02 |
Family
ID=63687178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710166286.4A Active CN108628677B (zh) | 2017-03-20 | 2017-03-20 | 分布式任务处理***、方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108628677B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656694A (zh) * | 2018-11-02 | 2019-04-19 | 国网青海省电力公司 | 一种储能监控数据的分布式处理方法及*** |
CN109886327B (zh) * | 2019-02-12 | 2021-11-19 | 北京奇艺世纪科技有限公司 | 一种分布式***中Java数据的处理***及方法 |
CN110187971B (zh) * | 2019-05-30 | 2020-08-04 | 口碑(上海)信息技术有限公司 | 业务请求处理方法及装置 |
CN113127158B (zh) * | 2019-12-30 | 2023-07-14 | 百度在线网络技术(北京)有限公司 | 用于执行数据处理任务的方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360923A (zh) * | 2014-11-03 | 2015-02-18 | 中国银行股份有限公司 | 批量应用进程的监控方法及监控*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941805B2 (en) * | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
CN103246592B (zh) * | 2013-05-13 | 2016-12-28 | 北京搜狐新媒体信息技术有限公司 | 一种监控采集***及方法 |
CN104184823B (zh) * | 2014-09-05 | 2017-11-14 | 北京京东尚科信息技术有限公司 | 一种自动化任务调度的方法和*** |
CN106406983B (zh) * | 2015-07-27 | 2021-01-08 | 创新先进技术有限公司 | 一种集群中的任务调度方法及装置 |
CN105893147A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 多任务队列管理方法、设备及*** |
CN106227596A (zh) * | 2016-07-13 | 2016-12-14 | 百度在线网络技术(北京)有限公司 | 用于任务调度服务器的任务监控方法和装置 |
-
2017
- 2017-03-20 CN CN201710166286.4A patent/CN108628677B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360923A (zh) * | 2014-11-03 | 2015-02-18 | 中国银行股份有限公司 | 批量应用进程的监控方法及监控*** |
Also Published As
Publication number | Publication date |
---|---|
CN108628677A (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628677B (zh) | 分布式任务处理***、方法和装置 | |
CN111078396B (zh) | 一种基于多任务实例的分布式数据接入方法和*** | |
CN108829512B (zh) | 一种云中心硬件加速计算力的分配方法、***和云中心 | |
CN111182061B (zh) | 任务分发处理方法、***、计算机设备和存储介质 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
CN111209110A (zh) | 一种实现负载均衡的任务调度管理方法、***和存储介质 | |
CN110659131A (zh) | 任务处理方法、电子装置、计算机设备及存储介质 | |
CN113703997A (zh) | 集成多种消息代理的双向异步通信中间件***及实现方法 | |
CN109257396B (zh) | 一种分布式锁调度方法及装置 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN114518974A (zh) | 数据处理任务的检查点恢复方法、装置、设备及介质 | |
CN114579323A (zh) | 一种线程处理方法、装置、设备及介质 | |
CN111522630B (zh) | 基于批次调度中心的计划任务执行方法以及*** | |
CN113760522A (zh) | 一种任务处理方法和装置 | |
CN111258741B (zh) | 仓库任务执行的方法、分布式服务器集群及计算机设备 | |
CN110888739B (zh) | 延迟任务的分布式处理方法与装置 | |
CN105550025A (zh) | 分布式基础设施即服务(IaaS)调度方法及*** | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN112600842A (zh) | 集群shell方法、装置、电子设备及计算机可读存储介质 | |
CN113791876A (zh) | 用于处理任务的***、方法和装置 | |
CN110807058B (zh) | 一种导出数据的方法和*** | |
CN111767122A (zh) | 分布式任务调度管理方法和装置 | |
CN112115118B (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 |