CN113391896B - 任务处理方法及装置、存储介质及电子设备 - Google Patents

任务处理方法及装置、存储介质及电子设备 Download PDF

Info

Publication number
CN113391896B
CN113391896B CN202110660462.6A CN202110660462A CN113391896B CN 113391896 B CN113391896 B CN 113391896B CN 202110660462 A CN202110660462 A CN 202110660462A CN 113391896 B CN113391896 B CN 113391896B
Authority
CN
China
Prior art keywords
task
tasks
thread
buffer queue
execution
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
Application number
CN202110660462.6A
Other languages
English (en)
Other versions
CN113391896A (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.)
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information 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 Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN202110660462.6A priority Critical patent/CN113391896B/zh
Publication of CN113391896A publication Critical patent/CN113391896A/zh
Application granted granted Critical
Publication of CN113391896B publication Critical patent/CN113391896B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本公开提供了一种任务处理方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:获取缓冲队列中待处理任务的任务数;当任务数小于缓冲队列的长度阈值时,从任务池中获取一批待转移任务;从一批待转移任务中确定待存储任务,以将待存储任务存储至缓冲队列;监控空闲通知消息,根据空闲通知消息确定执行装置中的目标执行线程,以使目标执行线程从缓冲队列中获取待处理任务进行处理。该方法可以在批量接收任务后,先从这些任务中确定待存储任务以存入缓冲队列,再基于接收到的空闲通知消息驱动各个执行线程执行任务,使得各个执行线程不再需要同时开始执行任务,执行效率不再受到耗时较长任务的影响,从而提高任务处理的整体效率。

Description

任务处理方法及装置、存储介质及电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种任务处理方法及装置、存储介质及电子设备。
背景技术
在计算机化的作业环境下,常常使用任务调度系统来执行其他业务系统下发的任务,如使用基于clover框架或elastic-job框架的任务调度系统来执行任务,该过程中常常是先接收固定数量的一批任务,再使任务执行线程执行任务。
相关技术中在接收到固定数量的一批任务后,通常是所有任务执行线程同时开始执行任务,当确认所有任务执行线程都完成任务后才统一接收下一批任务,使任务执行线程再同时开始执行任务。故而在相关技术中,由于一批任务中任务完成时长通常不完全一致,一批任务执行完成的时长取决于这批任务中耗时最长的任务,使得有的执行线程处理完任务后出现等待空闲状态,从而导致任务处理整体效率低下。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种任务处理方法、装置、电子设备及存储介质,以解决在批量接收任务后任务处理效率低下的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种任务处理方法,包括:
获取缓冲队列中待处理任务的任务数;所述任务数小于所述缓冲队列的长度阈值时,从任务池中获取一批待转移任务;从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列;监控空闲通知消息,根据所述空闲通知消息确定执行装置中的目标执行线程,以使所述目标执行线程从所述缓冲队列中获取待处理任务进行处理。
在本公开一个实施例中,在确认所述任务数小于所述缓冲队列的长度阈值后,还包括:唤醒所述执行装置的任务抓取线程;以及,当所述任务数为所述缓冲队列的长度阈值时,使所述执行装置的任务抓取线程沉睡。
在本公开一个实施例中,上述任务处理方法还包括:利用所述任务抓取线程从任务池中获取一批待转移任务;以及利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列。
在本公开一个实施例中,利用所述任务抓取线程从任务池中获取一批待转移任务,包括:基于所述任务池中任务的任务生成时间,从所述任务池中确定出任务生成时间最早的预设数量个任务,作为所述一批待转移任务;以及,利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,包括:获取所述缓冲队列中的待处理任务数与所述缓冲队列的长度阈值之间的差值数量;当所述预设数量大于所述差值数量时,从所述一批待转移任务中确定出任务生成时间最早的差值数量个待转移任务,以作为所述待存储任务;当所述预设数量小于等于所述差值数量时,将所述一批待转移任务作为所述待存储任务。
在本公开一个实施例中,在监控空闲通知消息之前,还包括:确认所述任务数大于0,进而启动执行装置;以及,所述监控空闲通知消息,包括:在所述执行装置启动的状态下监控所述执行装置中执行线程的执行状态;当监控到存在执行状态为空闲的空闲执行线程时,基于所述空闲执行线程的线程标识生成空闲通知消息。
在本公开一个实施例中,根据所述空闲通知消息确定执行装置中的目标执行线程,包括:获取所述空闲通知消息中的线程标识;根据所述线程标识确定所述目标执行线程。
在本公开一个实施例中,上述任务处理方法还包括:当所述任务数为0,使执行装置等待。
根据本公开的另一个方面,提供一种任务处理装置,包括:
获取模块,用于获取缓冲队列中待处理任务的任务数;所述获取模块还用于当所述任务数小于所述缓冲队列的长度阈值时,从任务池中获取一批待转移任务;存储模块,用于从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列;执行模块,用于监控空闲通知消息,根据所述空闲通知消息确定执行装置中的目标执行线程,以使所述目标执行线程从所述缓冲队列中获取待处理任务进行处理。
在本公开一个实施例中,所述获取模块在确认所述任务数小于所述缓冲队列的长度阈值后,还包括:唤醒所述执行装置的任务抓取线程;以及,当所述任务数为所述缓冲队列的长度阈值时,使所述执行装置的任务抓取线程沉睡。
在本公开一个实施例中,获取模块还用于:利用所述任务抓取线程从任务池中获取一批待转移任务;以及存储模块还用于:利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列。
在本公开一个实施例中,获取模块利用所述任务抓取线程从任务池中获取一批待转移任务,包括:基于所述任务池中任务的任务生成时间,从所述任务池中确定出任务生成时间最早的预设数量个任务,作为所述一批待转移任务;以及,存储模块利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,包括:获取所述缓冲队列中的待处理任务数与所述缓冲队列的长度阈值之间的差值数量;当所述预设数量大于所述差值数量时,从所述一批待转移任务中确定出任务生成时间最早的差值数量个待转移任务,以作为所述待存储任务;当所述预设数量小于等于所述差值数量时,将所述一批待转移任务作为所述待存储任务。
在本公开一个实施例中,执行模块在监控空闲通知消息之前,还用于:确认所述任务数大于0,进而启动执行装置;以及,执行模块监控空闲通知消息,包括:在所述执行装置启动的状态下监控所述执行装置中执行线程的执行状态;当监控到存在执行状态为空闲的空闲执行线程时,基于所述空闲执行线程的线程标识生成空闲通知消息;监控空闲通知消息。
在本公开一个实施例中,执行模块根据所述空闲通知消息确定执行装置中的目标执行线程,包括:获取所述空闲通知消息中的线程标识;根据所述线程标识确定所述目标执行线程。
在本公开一个实施例中,上述执行模块还用于:当所述任务数为0,使执行装置等待。
根据本公开的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的任务处理方法。
根据本公开的再一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的任务处理方法。
本公开的实施例所提供的任务处理方法,能够在批量接收任务后,先从这些任务中确定待存储任务以存入缓冲队列,再基于接收到的空闲通知消息驱动各个执行线程执行任务,使得各个执行线程不再需要同时开始执行任务,执行效率不再受到耗时较长任务的影响,从而提高任务处理的整体效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的任务处理方法的示例性系统架构的示意图;
图2示出了本公开一个实施例的任务处理方法的流程图;
图3示出了本公开一个实施例的任务处理方法中确定待存储任务方法的流程图;
图4示出了本公开一个实施例的任务处理方法执行线程获取待处理任务的方法流程图;
图5示出了本公开一个实施例的任务处理方法示意图;
图6示出了本公开一个实施例的任务处理装置的框图;和
图7示出了本公开实施例中一种任务处理计算机设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
针对上述相关技术中存在的技术问题,本公开实施例提供了一种任务处理方法,以用于至少解决上述技术问题中的一个或者全部。
图1示出了可以应用本公开实施例的任务处理方法的示例性系统架构的示意图;如图1所示:
该系统架构可以包括服务器101、网络102和客户端103。网络102用以在客户端103和服务器101之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器101可以是提供各种服务的服务器,例如能够接收业务系统下的任务并统一存放至任务池、能够将任务池中的任务存储至缓冲队列、能够接收空闲通知消息并基于空闲通知消息驱动执行线程的后台管理服务器。后台管理服务器还可以将执行线程对任务的处理结果返回给统一的客户端103或存在于各业务系统中的客户端103。
客户端103可以是手机、游戏主机、平板电脑、电子书阅读器、智能眼镜、智能家居设备、AR(Augmented Reality,增强现实)设备、VR(Virtual Reality,虚拟现实)设备等移动终端,或者,客户端103也可以是个人计算机,比如膝上型便携计算机和台式计算机等等。
在一些可选的实施例中,服务器101可以在接收到业务系统下发的任务后先存放至任务池,在固定时间或基于预设频率获取缓冲队列中待处理任务的任务数,并在任务数小于缓冲队列的长度阈值的情况下批量从任务池中获取固定数量的任务,进而从中选出可以存放至缓冲队列的任务。服务器101还可以监控执行装置中执行线程的空闲通知消息,并根据空闲通知消息将当前空闲的执行线程确定为目标执行线程,进而使目标执行线程从缓冲队列中获取任务进行处理,并在处理完成后将执行结果发送至客户端103的界面中进行显示,以供查看或导出、分析等操作。
应该理解,图1中的客户端、网络和服务器的数目仅仅是示意性的,服务器101可以是一个实体的服务器,还可以为多个服务器组成的服务器集群,还可以是云端服务器,根据实际需要,可以具有任意数目的客户端、网络和服务器。
下面,将结合附图及实施例对本公开示例实施例中的任务处理方法的各个步骤进行更详细的说明。
图2示出了本公开一个实施例的任务处理方法的流程图。本公开实施例提供的方法可以由如图1所示的服务器或客户端中执行,但本公开并不限定于此。
在下面的举例说明中,以服务器集群101为执行主体进行示例说明。
如图2所示,本公开实施例提供的任务处理方法可以包括以下步骤:
步骤S201,获取缓冲队列中待处理任务的任务数。可以在固定时间或基于预设频率获取缓冲队列中待处理任务的任务数,如:可以每30秒获取一次缓冲队列中待处理任务的任务数;也可以区分“忙时”或“闲时”,在“忙时”每10秒获取一次缓冲队列中待处理任务的任务数,在“闲时”每1分钟获取一次缓冲队列中待处理任务的任务数。可以根据具体的应用场景或者所对接的业务系统进行分类设置。其中,缓冲队列可以具有长度阈值,即缓冲队列最多可存放的任务数(如:20、100等),可以根据运行环境或设备的配置信息等条件因素进行设置。
在步骤S201执行之前,可以由图1所示的服务器先接收业务系统发送的各种任务(如:不同系统的生成账单的任务、生成工作单的任务、业务中涉及到的计算任务等),并可以将这些任务统一存放至任务池。在一些实际应用中,可以使用数据表记录任务池中的任务,将任务按照任务生成时间由早到晚的顺序存在数据表中,以供在后续步骤中取用。
步骤S203,当任务数小于缓冲队列的长度阈值时,从任务池中获取一批待转移任务。当判断出任务数小于缓冲队列的长度阈值时,可以认为此时缓冲队列有空余空间用于存放任务,于是可以从任务池中获取一批待转移任务,例如:一批待转移任务包括预定数量的任务。缓冲队列可以是先进先出的,先被存放进来的任务可以先被处理。
步骤S205,从一批待转移任务中确定待存储任务,以将待存储任务存储至缓冲队列。由于缓冲队列具有长度阈值,不同情况下缓冲队列中可用于存放任务的空间不同,故而可以先根据缓冲队列的可存储空间从固定数量的一批待转移任务中确定出将要存储至缓冲队列的待存储任务,确定好之后再实现待存储任务的存储。这一步中对于待存储任务的确定,可以考虑任务的生成时间信息或任务的处理优先级信息,尽量使任务池中生成时间更早或优先级更高的任务先被存储至缓冲队列以在后续步骤中被执行线程处理,从而使得对任务的处理尽量可以满足用户对任务处理的时间需求。
步骤S207,监控空闲通知消息,根据空闲通知消息确定执行装置中的目标执行线程,以使目标执行线程从缓冲队列中获取待处理任务进行处理。本公开中执行装置中的执行线程数量可以根据运行环境或设备的配置信息进行设置,如:若cpu处理核数为8,则可以设置8个执行线程以用于同时处理任务。
使用本公开中的任务处理方法,能够在批量接收任务后,先从这些任务中确定待存储任务以存入缓冲队列,再基于接收到的空闲通知消息驱动各个执行线程执行任务,使得各个执行线程不再需要同时开始执行任务,执行效率不再受到耗时较长任务的影响,从而提高任务处理的整体效率。
在本公开一个实施例中,在确认任务数小于缓冲队列的长度阈值后,还包括:唤醒执行装置的任务抓取线程;以及,当任务数为缓冲队列的长度阈值时,使执行装置的任务抓取线程沉睡。进一步地,在本公开一个实施例中,可以利用上述任务抓取线程从任务池中获取一批待转移任务;以及利用上述任务抓取线程从一批待转移任务中确定待存储任务,以将待存储任务存储至缓冲队列。
在一些实际应用中,可以通过如下方法唤醒任务抓取线程或使其沉睡:设置计数器,当检测到缓冲队列中有任务存进来时,使计数器加1;当检测到有执行线程执行完成一个任务时,使计数器减1;当计数器的计数大于等于缓冲队列的长度阈值时,使任务抓取线程沉睡;当计数器的计数大小于缓冲队列的长度阈值时,唤醒任务抓取线程,进而通过任务抓取线程将任务池中的任务推送存储(push)至缓冲队列。在将任务池中的任务存储至缓冲队列的过程中,由于缓冲队列的存储空间有限,在缓冲队列中存满任务的情况下是可以暂停从任务池中获取任务的,故通过设置任务抓取线程使得只有在缓冲队列未存满任务时才从任务池中获取任务,可以避免不必要的资源占用。
在本公开一个实施例中,从任务池中获取一批待转移任务,包括:基于任务池中任务的任务生成时间,从任务池中确定出任务生成时间最早的预设数量个任务,作为一批待转移任务。
可以利用任务抓取线程完成上述过程;其中,预设数量是提前设置好的,如:可以一次获取任务池中的10个任务。在一些实际应用中,可以使用上述记录任务的数据表,如:对于数据表中已经按照任务生成时间排好序的任务,可以在每次获取任务时直接获取排序在前的10个任务作为这一批待转移任务。
在本公开一个实施例中,从一批待转移任务中确定待存储任务,包括:获取缓冲队列中的待处理任务数与缓冲队列的长度阈值之间的差值数量;当预设数量大于差值数量时,从一批待转移任务中确定出任务生成时间最早的差值数量个待转移任务,以作为待存储任务;当预设数量小于等于差值数量时,将一批待转移任务作为待存储任务。
可以利用任务抓取线程完成上述过程。如:若此时缓冲队列中待处理任务数为17,缓冲队列的长度阈值为20,则差值数量为3;在获取到一批数量为10的待转移任务后,可以只将其中任务生成时间排在前3的任务作为待存储任务,以将这3个待存储任务存储至缓冲队列。又如:若此时缓冲队列中待处理任务数为4,缓冲队列的长度阈值为20,则差值数量为16;在获取到一批数量为10的待转移任务后,可以将这10个待转移任务全部作为待存储任务,以存储至缓冲队列。
在一些实际应用中,当将一整批待转移任务作为待存储任务存储至缓冲队列后,可以立即获取当前的缓冲队列中的待处理任务数,进而继续判断是否从任务池中获取任务存储至缓冲队列,也可以在下一个获取任务数的时间点再获取缓冲队列中的待处理任务数,进而继续判断是否从任务池中获取任务存储至缓冲队列。
当从任务池中获取到一批任务后,由于在相关技术中缺少上述方法中的缓冲队列以及任务抓取线程的应用,因此在相关技术中只能对这一批任务同时处理,如:当cpu处理核数为4,则执行线程数量为4,则在相关技术中可以在获取一批数量为4的任务后使这4个执行线程同时开始处理,并且只能在这4个执行线程都处理完之后,才可以获取下一批任务再开始进行处理。
而通过本公开中的方法,可以通过任务抓取线程获取一批待转移任务,再基于当前缓冲队列中所存储任务的数量从这一批待转移任务中确定出待存储任务,进而将确定出的待存储任务存储至缓冲队列;并在后续步骤中可以基于空闲通知消息使执行线程可以从缓冲队列中获取任务进行处理,进而使得各个执行线程不再需要统一开始处理任务,使得各个执行线程处理任务所花费的时长不再互相影响,从而提升任务处理的整体效率。
图3示出了本公开一个实施例的任务处理方法中确定待存储任务的方法流程图,如图3所示,包括:
步骤S301,获取缓冲队列中待处理任务的任务数。可以在固定时间或基于预设频率获取缓冲队列中待处理任务的任务数。步骤S301与图2中的步骤S201类似,在此不再赘述。
步骤S303,当任务数小于缓冲队列的长度阈值时,基于任务池中任务的任务生成时间,从任务池中确定出任务生成时间最早的预设数量个任务,作为一批待转移任务。确认任务数小于缓冲队列的长度阈值可以认为是确认此时缓冲队列未存满,进而可以从任务池中获取一批待转移任务。步骤S303与图2中的步骤S203类似,在此不再赘述。
步骤S305,获取缓冲队列中的待处理任务数与缓冲队列的长度阈值之间的差值数量。差值数量可以用于确定将一批待转移任务中的具体多少个任务存储至缓冲队列。
步骤S307,判断预设数量是否大于所差值数量;若是,则执行步骤S309;若否,则执行步骤S311。
步骤S309,从一批待转移任务中确定出任务生成时间最早的差值数量个待转移任务,以作为待存储任务。
步骤S311,将一批待转移任务作为待存储任务。
上述方法中,在确认缓冲队列中的任务数小于缓冲队列的长度阈值后,可以通过任务抓取线程实现从任务池中抓取任务存储至缓冲队列,实现任务从任务池到缓冲池的自动转移存储。
在本公开一个实施例中,在监控空闲通知消息之前,还包括:确认任务数大于0,进而启动执行装置;以及,监控空闲通知消息,包括:在执行装置启动的状态下监控执行装置中执行线程的执行状态;当监控到存在执行状态为空闲的空闲执行线程时,基于空闲执行线程的线程标识生成空闲通知消息;监控空闲通知消息。
当监控到存在执行状态为空闲的空闲执行线程时,可以认为该空闲执行线程可以继续处理任务,可以为该空闲执行线程生成空闲通知消息,当监控到该空闲通知消息时,可以使对应的执行线程从缓冲队列中获取(pull)任务进行处理。
在本公开一个实施例中,当任务数为0,使执行装置等待。
可以基于缓冲队列中的待处理任务数来控制执行装置的执行或是等待,若缓冲队列中的待处理任务数大于0,则使执行装置启动;若缓冲队列中的待处理任务数等于0,则使执行装置等待。当缓冲队列中的待处理任务数大于0,则认为此时需要执行线程处理任务,于是可以使执行装置启动;当缓冲队列中的待处理任务数等于0,则认为此时暂不需要执行线程处理任务,于是可以使执行装置等待。通过缓冲队列中的任务数是否大于0来确定是否启动执行装置,可以使只有在缓冲队列中存在任务时才启动执行装置使其中的执行线程从缓冲队列中拉取任务以执行,进而可以避免不必要的资源浪费。
用于判断执行装置是否启动的缓冲队列中的待处理任务数,可以在另外设定的固定时间点或基于另外的频率进行获取;另外设定的固定时间点,可以与获取用于判断是否从任务池中获取任务的待处理任务数所使用的获取时间不同。
在本公开一个实施例中,根据空闲通知消息确定执行装置中的目标执行线程,包括:获取空闲通知消息中的线程标识;根据线程标识确定目标执行线程。
空闲通知消息中可以指示线程标识,线程标识可以用于确定出可执行任务的目标执行线程。
图4示出了本公开一个实施例的任务处理方法中执行线程获取待处理任务的方法流程图,如图4所示,包括:
步骤S401,监控执行装置中执行线程的执行状态。执行线程在处理任务时其执行状态可以是“正在执行”,执行线程在处理完一个任务时其执行状态可以是“空闲”。
步骤S403,当监控到存在执行状态为空闲的空闲执行线程时,基于空闲执行线程的线程标识生成空闲通知消息。空闲通知消息中可以包含空闲执行线程的线程标识信息。
步骤S405,当监控到空闲通知消息,获取空闲通知消息中的线程标识。
步骤S407,根据线程标识确定目标执行线程。
步骤S409,使目标执行线程从缓冲队列中获取(pull)任务进行处理。
通过上述方法,当监控到存在执行状态为空闲的空闲执行线程时,可以认为该空闲执行线程可以继续处理任务,则可以为该空闲执行线程生成空闲通知消息;当监控到空闲通知消息时,可以使对应的执行线程从缓冲队列中获取(pull)任务进行处理,进而使得各个执行线程不再需要统一开始处理任务,使得各个执行线程处理任务所花费的时长不再互相影响,从而提升任务处理的整体效率。
图5示出了本公开一个实施例的任务处理方法示意图,如图5所示,包括:任务501、任务502、任务503、任务504、缓冲队列505、执行线程506、执行线程507、执行线程508;
其中,可以一次获取一批任务(任务501、任务502、任务503、任务5040),通过本公开中的方法从中确定出待存储任务以推送存储(push)至先进先出的缓冲队列505中;当监控到与执行线程506和执行线程507对应的空闲通知消息时,可以使执行线程506和执行线程507从缓冲队列505中拉取(pull)任务进行处理。
需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图6示出了本公开一个实施例的任务处理装置600的框图;如图6所示,包括:
获取模块601,用于获取缓冲队列中待处理任务的任务数;获取模块还用于当任务数小于缓冲队列的长度阈值时,从任务池中获取一批待转移任务;存储模块602,用于从一批待转移任务中确定待存储任务,以将待存储任务存储至缓冲队列;执行模块603,用于监控空闲通知消息,根据空闲通知消息确定执行装置中的目标执行线程,以使目标执行线程从缓冲队列中获取待处理任务进行处理。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
图7示出本公开实施例中一种任务处理计算机设备的结构框图。需要说明的是,图示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
下面参照图7来描述根据本发明的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730。
其中,存储单元存储有程序代码,程序代码可以被处理单元710执行,使得处理单元710执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元710可以执行如图2中所示的步骤S201、获取缓冲队列中待处理任务的任务数;步骤S202、当任务数小于缓冲队列的长度阈值时,从任务池中获取一批待转移任务;步骤S203、从一批待转移任务中确定待存储任务,以将待存储任务存储至缓冲队列;步骤S204、监控空闲通知消息,根据空闲通知消息确定执行装置中的目标执行线程,以使目标执行线程从缓冲队列中获取待处理任务进行处理。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备装置600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (8)

1.一种任务处理方法,其特征在于,包括:
获取缓冲队列中待处理任务的任务数;
当所述任务数小于所述缓冲队列的长度阈值时,从任务池中获取一批待转移任务;
从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列;
确认所述任务数大于0,进而启动执行装置;在所述执行装置启动的状态下监控所述执行装置中执行线程的执行状态;当监控到存在执行状态为空闲的空闲执行线程时,基于所述空闲执行线程的线程标识生成空闲通知消息;监控所述空闲通知消息;获取所述空闲通知消息中的线程标识;根据所述线程标识确定目标执行线程,以使所述目标执行线程从所述缓冲队列中获取待处理任务进行处理。
2.根据权利要求1所述的方法,其特征在于,在确认所述任务数小于所述缓冲队列的长度阈值后,还包括:唤醒所述执行装置的任务抓取线程;以及,
当所述任务数为所述缓冲队列的长度阈值时,使所述执行装置的任务抓取线程沉睡。
3.根据权利要求2所述的方法,其特征在于,还包括:
利用所述任务抓取线程从任务池中获取一批待转移任务;以及利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列。
4.根据权利要求3所述的方法,其特征在于,利用所述任务抓取线程从任务池中获取一批待转移任务,包括:基于所述任务池中任务的任务生成时间,从所述任务池中确定出任务生成时间最早的预设数量个任务,作为所述一批待转移任务;以及,
利用所述任务抓取线程从所述一批待转移任务中确定待存储任务,包括:获取所述缓冲队列中的待处理任务数与所述缓冲队列的长度阈值之间的差值数量;当所述预设数量大于所述差值数量时,从所述一批待转移任务中确定出任务生成时间最早的差值数量个待转移任务,以作为所述待存储任务;当所述预设数量小于等于所述差值数量时,将所述一批待转移任务作为所述待存储任务。
5.根据权利要求1所述的方法,其特征在于,还包括:
当所述任务数为0,使执行装置等待。
6.一种任务处理装置,其特征在于,包括:
获取模块,用于获取缓冲队列中待处理任务的任务数;
所述获取模块还用于当所述任务数小于所述缓冲队列的长度阈值时,从任务池中获取一批待转移任务;
存储模块,用于从所述一批待转移任务中确定待存储任务,以将所述待存储任务存储至所述缓冲队列;
执行模块,用于确认所述任务数大于0,进而启动执行装置;在所述执行装置启动的状态下监控所述执行装置中执行线程的执行状态;当监控到存在执行状态为空闲的空闲执行线程时,基于所述空闲执行线程的线程标识生成空闲通知消息;监控所述空闲通知消息;获取所述空闲通知消息中的线程标识;根据所述线程标识确定目标执行线程,以使所述目标执行线程从所述缓冲队列中获取待处理任务进行处理。
7.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至5任一项所述的任务处理方法。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至5任一项所述的任务处理方法。
CN202110660462.6A 2021-06-15 2021-06-15 任务处理方法及装置、存储介质及电子设备 Active CN113391896B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110660462.6A CN113391896B (zh) 2021-06-15 2021-06-15 任务处理方法及装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110660462.6A CN113391896B (zh) 2021-06-15 2021-06-15 任务处理方法及装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN113391896A CN113391896A (zh) 2021-09-14
CN113391896B true CN113391896B (zh) 2023-09-22

Family

ID=77621085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110660462.6A Active CN113391896B (zh) 2021-06-15 2021-06-15 任务处理方法及装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN113391896B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114662964A (zh) * 2022-04-06 2022-06-24 北京京东乾石科技有限公司 环形穿梭车调度方法及装置、电子设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262564A (zh) * 2011-08-16 2011-11-30 天津市天祥世联网络科技有限公司 视频监控平台系统的线程池结构及实现方法
KR101576628B1 (ko) * 2015-05-14 2015-12-10 주식회사 티맥스 소프트 스레드 풀의 사이즈를 동적으로 관리하는 방법, 서버 및 컴퓨터 판독 가능한 기록매체
US9928125B1 (en) * 2017-07-13 2018-03-27 International Business Machines Corporation Message queueing in middleware by a message broker
CN109815007A (zh) * 2018-12-15 2019-05-28 平安科技(深圳)有限公司 基于云监控的线程控制方法、装置、电子设备及存储介质
CN110297711A (zh) * 2019-05-16 2019-10-01 平安科技(深圳)有限公司 批量数据处理方法、装置、计算机设备及存储介质
CN112817745A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种任务处理方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7669081B2 (en) * 2006-09-27 2010-02-23 Raytheon Company Systems and methods for scheduling, processing, and monitoring tasks
CN107885590A (zh) * 2017-11-30 2018-04-06 百度在线网络技术(北京)有限公司 用于智能设备的任务处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262564A (zh) * 2011-08-16 2011-11-30 天津市天祥世联网络科技有限公司 视频监控平台系统的线程池结构及实现方法
KR101576628B1 (ko) * 2015-05-14 2015-12-10 주식회사 티맥스 소프트 스레드 풀의 사이즈를 동적으로 관리하는 방법, 서버 및 컴퓨터 판독 가능한 기록매체
US9928125B1 (en) * 2017-07-13 2018-03-27 International Business Machines Corporation Message queueing in middleware by a message broker
CN109815007A (zh) * 2018-12-15 2019-05-28 平安科技(深圳)有限公司 基于云监控的线程控制方法、装置、电子设备及存储介质
CN110297711A (zh) * 2019-05-16 2019-10-01 平安科技(深圳)有限公司 批量数据处理方法、装置、计算机设备及存储介质
CN112817745A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种任务处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"一种基于层次分割和聚合的大数据流水线任务处理方法";陈天乐等;《科研信息化技术与应用》;第10卷(第1期);第3-11页 *

Also Published As

Publication number Publication date
CN113391896A (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
CN112100034A (zh) 一种业务监控方法和装置
CN113391896B (zh) 任务处理方法及装置、存储介质及电子设备
CN115525411A (zh) 处理业务请求的方法、装置、电子设备和计算机可读介质
CN115964153A (zh) 一种异步任务处理方法、装置、设备以及存储介质
CN113051055A (zh) 一种任务处理方法和装置
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
CN115981822A (zh) 任务处理方法、介质、装置和计算设备
CN110825342A (zh) 存储调度器件和用于处理信息的系统、方法及装置
CN111767113A (zh) 一种用于实现容器驱逐的方法和装置
CN113779451A (zh) 一种页面加载方法和装置
CN113760176A (zh) 数据存储方法和装置
CN113449938B (zh) 车辆监控的系统和方法
CN114590656B (zh) 电梯控制方法、装置、电子设备和存储介质
CN116010126B (zh) 一种服务聚合方法、装置及系统
CN113127057B (zh) 多任务并行执行的方法和装置
CN116450120B (zh) 实时操作系统内核分析方法、装置、设备及介质
CN117149365A (zh) 任务处理方法、装置、电子设备和存储介质
CN111209103A (zh) 一种进程任务调度方法、装置及设备
CN114168290A (zh) 一种任务处理方法、装置、电子设备及存储介质
CN115190097A (zh) 一种消息推送方法、装置、设备及存储介质
CN116132523A (zh) 消息处理的方法、装置、电子设备和存储介质
CN117176813A (zh) 一种处理业务请求的方法和装置
CN117272077A (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