本发明实施例涉及信息处理技术领域,特别是涉及一种定时任务处理系统及方法。
背景技术:
在许多业务系统中都需要设置定时任务,通过定时任务能够实现自动提醒的功能。目前,为了使定时任务可以定时执行,通常将定时任务作为待执行任务部署在服务器中,当待执行任务到达开始执行时间时,由服务器执行该待执行任务。服务器在处理定时任务的方式通常是将定时任务存储在内存中,通过调用与定时任务对应的脚本来执行相应的定时任务。
但是现有方式中,由于定时任务是存储在内存中的,如果服务器发生故障,如突然断电或者崩溃,那么就会导致定时任务消息丢失,给业务系统造成很大的影响,且在定时任务中存在用户设置的定时任务时,会给用户带来很不好的使用体验。
技术实现要素:
有鉴于此,本发明实施例提供了一种定时任务处理系统及方法,能够提升定时任务处理的可靠性,提高使用体验。
为了解决上述问题,本发明实施例主要提供如下技术方案:
第一方面,本发明实施例提供了一种定时任务处理系统,该系统包括消息中间件集群,消息中间件集群包括通信连接的第一消息中间件服务器和第二消息中间件服务器,第一消息中间件服务器用于存储待处理定时任务,第一消息中间件服务器包括一个主服务器和至少一个备份服务器;
主服务器,用于监控主服务器中存储的待处理定时任务,在待处理定时任务到达处理时间时,对到达处理时间的待处理定时任务进行相应的处理;
第二消息中间件服务器,用于监控主服务器的状态,在主服务器故障时,通知备份服务器作为主服务器。
第二方面,本发明实施例还提供一种定时任务处理方法,该方法包括:
主服务器监控主服务器中存储的待处理定时任务,在待处理定时任务到达处理时间时,对到达处理时间的待处理定时任务进行相应的处理;
第二消息中间件服务器监控主服务器的状态,在主服务器故障时,通知备份服务器作为主服务器。
第三方面,本发明实施例还提供了一种电子设备,包括处理器、存储器、通信接口和总线;其中,
处理器、存储器、通信接口通过总线完成相互间的通信;
通信接口用于该测试设备与显示装置的通信设备之间的信息传输;
处理器用于调用存储器中的程序指令,以执行第二方面中任一消息中间件服务器所执行的方法步骤,其中,任一消息中间件服务器为第一消息中间件服务器或第二消息中间件服务器。
第四方面,本发明实施例还提供了一种非暂态计算机存储介质,该非暂态计算机存储介质存储计算机指令,计算机指令使计算机执行第二方面中任一消息中间件服务器所执行的方法步骤,其中,任一消息中间件服务器为第一消息中间件服务器或第二消息中间件服务器。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明实施例提供的定时任务处理系统及方法,由于在第一消息中间件服务器对到期的定时任务进行相应的处理时,备份消息中间件中也会存储有待处理定时任务,这样当第一消息中间件服务器发生故障时,还可以由备份服务器作为主服务器来处理待处理定时任务,因此,采用本发明实施例的方案,即使一个处理定时任务的一个服务器发生故障,也能够保证定时任务的正常处理,从而在保证了定时任务不会丢失的基础上,提升了定时任务处理的可靠性,更好的满足了实际应用需求。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种定时任务处理系统的系统示意图;
图2示出了本发明实施例提供的一种定时任务处理方法的流程示意图;
图3示出了本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为使本发明的目的、技术方案和优点更加清楚,首先对本发明实施例中涉及到的专业名词进行相应的解释。
消息中间件:是一类特定的中间件,它利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分部环境下扩展进程间的通信,并支持多通信协议,语言,应用程序、硬件和软件平台。
消息中间件集群:若干个松耦合的消息中间件构成的集合就是集群,集群把单个消息中间件扩展到消息中间件的环境,构成的消息中间件集群能够提供分布式的消息服务。
消息中间服务器:内部包含消息中间件的服务器。
如图1所示,本发明实施例提供一种定时任务处理系统,该系统包括消息中间件集群,消息中间件集群包括通信连接的第一消息中间件服务器和第二消息中间件服务器,第一消息中间件服务器用于存储待处理定时任务,第一消息中间件服务器包括一个主服务器和至少一个备份服务器;
主服务器,用于监控主服务器中存储的待处理定时任务,在待处理定时任务到达处理时间时,对到达处理时间的待处理定时任务进行相应的处理;
第二消息中间件服务器,用于监控主服务器的状态,在主服务器故障时,通知备份服务器作为主服务器。
本发明实施例中,待处理定时任务到达处理时间是指当前时间与待处理定时任务的到期时间的时间间隔等于预设的网络延迟时长。
其中,待处理定时任务的到期时间指的是真正需要执行该定时任务的时间,网络延迟时长指的是从开始通知执行该定时任务到真正告知电子设备需要执行该定时任务的时间间隔。也就是说,主服务器对每一个待处理定时任务进行监控时,需要判断当前时间与待处理定时任务的到期时间的间隔时长是否等于预设的网络延迟时长,在确定等于预设的网络延迟时长时,就认为该待处理定时任务到达处理时间,此时就需要对该待处理定时任务进行相应的处理。
在一示例中,网络延迟时长为5秒钟,待处理定时任务a的定时时间为早晨8点。主服务器存储该定时任务a后会对该定时任务a进行监控,在当前时间为早晨7点59分55秒时,定时任务a的到期时间与当前时间的差值为5秒钟,等于网络延迟时长,此时主服务器就会认为该定时任务a到达处理时间,并会对该定时任务a进行相应的处理。
在实际应用中,第二消息中间件服务器具体采用什么方式监控主服务器的状态,本发明实施例不做限定。一种可选的方式为:通过发送用于检测主服务器状态的消息(如心跳信号)获知主服务器的状态。
比如,可以提前预设检测的时间间隔,在到达时间间隔时第二消息中间件服务器向主服务器发送用于检测主服务器状态的消息,若在预设时长内收到该主服务器返回的响应消息,则确定主服务器当前处于正常状态,若在预设时长内未收到返回的响应消息,则说明主服务器当前发生故障。
相应的,在确定主服务器故障时,第二消息中间件服务器通知备份服务器作为主服务器,此时备份服务器将作为主服务器对待处理定时任务进行处理。这是因为备份服务器和主服务器均会保存待处理定时任务,因此可以在备份服务器接收到第二消息中间件服务器通知作为主服务器的消息时,开始处理备份服务器中所存储的待处理定时任务,也就是,此时由被通知到的备份服务器作为主服务器来处理待处理定时任务。
在本发明实施例中,第二消息中间件服务器还用于:
在发生故障的主服务器恢复正常时,通知当前的主服务器向恢复正常的主服务器同步待处理定时任务;其中,恢复正常的主服务器作为备份服务器。
也就是说,当第二消息中间件服务器监控到主服务器恢复正常后,会通知当前的主服务器向恢复正常的主服务器同步待处理定时任务,并且将恢复正常的主服务器作为备份服务器。
在实际应用中,备份服务器的具体数量不局限于一个,当存在多个备份服务器时,可以提前配置主服务器故障时哪个备份服务器可以作为主服务器,此时第二消息中间件服务器向配置的备份服务器通知其作为主服务器。
在本发明实施例中,第二消息中间件服务器,还用于接收第二电子设备发送的待处理定时任务,并将待处理定时任务发送至第一消息中间件服务器,以使第一消息中间件服务器存储处待处理定时任务。
其中,第二电子设备指的是配置定时任务的电子设备,具体是什么电子设备本发明实施例不做限定,比如第二电子设备可以是终端设备或者服务器等,当第二电子设备为终端设备时,可以通过定时任务的软件,或者通信接口接收配置的定时任务。
在实际应中,第二电子设备存在待处理定时任务时,会将待处理定时任务发送至第二消息中间件服务器,第二消息中间件服务器接收到待处理定时任务后,将待处理定时任务发送至第一消息中间件服务器,第一消息中间件服务器接收到待处理定时任务后存储该待处理定时任务。
在本发明实施例中,待处理定时任务存储在第一消息中间件服务器的消息队列中。
其中,在消息队列具体中基于什么规则存储接收到的待处理定时任务,本发明实施例不做限定,比如可基于接收到的先后顺序依次存储待处理定时任务,或者,按照待处理任务的到期时间先后对待处理定时任务进行存储,或者针对定时任务的类型分别配置存储的位置,当接收到定时任务后,按照该定时任务的类型确定存储的位置。
在本发明实施例中,主服务器对到达处理时间的待处理定时任务进行相应的处理时,具体用于;
将到达处理时间的待处理定时任务发送至第二消息中间件服务器;
第二消息中间件服务器,还用于接收并存储主服务器发送的到达处理时间的待处理定时任务,在存储的待处理定时任务到达任务的到期时间时,将到达到期时间的定时任务发送至对应的第一电子设备。
在实际应用中,主服务器在监控到其存储的待处理定时任务到达处理时间时,可以将到达处理时间的定时任务发送至第二消息中间件服务器,第二消息中间件服务器在接收到主服务器发送的到达处理时间的定时任务后,先暂时存储至自身的消息队列中,当到达该定时任务的到期时间时,将该定时任务发送至对应的第一电子设备,第一电子设备接收到该定时任务后,执行该定时任务。
在一示例中,第一消息中间件服务器存储了待处理定时任务a,该定时任务a的到期时间为早晨8点,网络延迟时长为5秒。若获取到当前时间为早晨7点59分55秒,即主服务器监控发现该定时任务a已经到达处理时间,主服务器将该定时任务a发送至第二消息中间件服务器,第二消息中间件服务器在接收到主服务器发送的定时任务a后,先将定时任务a暂时存储至自身的消息队列中,当到达定时任务a的到期时间时,即到达早晨8点时,将所定时任务a发送至对应的第一电子设备,第一电子设备接收到定时任务a后,执行定时任务a。
当然,在实际应用中,主服务器还可以监控其存储的待处理定时任务是否到达到期时间,当到达到期时间后,直接将到达到期时间的定时任务发送至第一电子设备,第一电子设备接收到该到达到期时间的定时任务后,执行该到达到期时间的定时任务。
在本发明实施例中,第二消息中间件服务器,还用于:
在将到达到期时间的定时任务发送至对应的第一电子设备之后,向第一消息中间件服务器发送删除到达到期时间的定时任务的通知消息;
第一消息中间件服务器,还用于:
在接收到第二消息中间件服务器发送的通知消息后,将到达到期时间的定时任务删除。
在实际应用中,当到达到期时间的定时任务发送至对应的第一电子设备后,说明此时该任务已经执行过了,不再属于待执行的定时任务,为了保证执行过的定时任务不再占用存储资源,第二消息中间件服务器会向第一消息中间件服务器发送删除到达到期时间的定时任务的通知消息,也就是向主服务器和至少一个备份服务器发送删除到达到期时间的定时任务的通知消息。
相应的,当主服务器和至少一个备份服务器接收到删除到达到期时间的定时任务的通知消息后,会将到达到期时间的定时任务删除,来释放存储空间。
需要说明的是,当待处理定时任务为多次重复执行的定时任务时,如10号到12号早晨8点的定时任务,此时会作为3个待处理定时任务,即10号早晨8点的定时任务、11号早晨8点的定时任务以及12号早晨8点的定时任务,并将这3个定时任务存储至主服务器,主服务器对这3个定时任务分别监控,当任意一个定时任务到达处理时间时,就会对到达处理时间的定时任务进行相应的处理。
基于与图1所示的定时任务处理系统相同的原理,本发明的可选实施例中还提供了一种定时任务处理方法,如图2所示,该方法包括:
步骤s210,主服务器监控主服务器中存储的待处理定时任务,在待处理定时任务到达处理时间时,对到达处理时间的待处理定时任务进行相应的处理;
步骤s220,第二消息中间件服务器监控主服务器的状态,在主服务器故障时,通知备份服务器作为主服务器。
本发明的可选实施例中,待处理定时任务到达处理时间是指当前时间与待处理定时任务的到期时间的时间间隔等于预设的网络延迟时长。
本发明的可选实施例中,主服务器对到达处理时间的待处理定时任务进行相应的处理,包括;
将到达处理时间的待处理定时任务发送至第二消息中间件服务器,以使第二消息中间件服务器在接收到主服务器发送的到达处理时间的待处理定时任务,在存储的待处理定时任务到达任务的到期时间时,将到达到期时间的定时任务发送至对应的第一电子设备。
本发明的可选实施例中,主服务器监控存储的待处理定时任务之前,还包括:
第二消息中间件服务器接收第二电子设备发送的待处理定时任务并将待处理定时任务发送至第一消息中间件服务器。
本发明的可选实施例中,第二消息中间件服务器在将到达到期时间的定时任务发送至对应的第一电子设备之后,还包括:
向第一消息中间件服务器发送删除到达到期时间的定时任务的通知消息,以使第一消息中间件服务器在接收到通知消息后,将到达到期时间的定时任务删除。
本发明的可选实施例中,该方法还包括:
在发生故障的主服务器恢复正常时,第二消息中间件服务器通知当前的主服务器向恢复正常的主服务器发送待处理定时任务,并将恢复正常的主服务器作为备份服务器。
本发明的可选实施例中,待处理定时任务存储在第一消息中间件服务器的消息队列中。
本发明的实施例中的方案,由于在第一消息中间件服务器对到期的定时任务进行相应的处理时,备份消息中间件中也会存储有待处理定时任务,这样当第一消息中间件服务器发生故障时,还可以由备份服务器作为主服务器来处理待处理定时任务,因此,采用本发明实施例的方案,即使一个处理定时任务的一个服务器发生故障,也能够保证定时任务的正常处理,从而在保证了定时任务不会丢失的基础上,提升了定时任务处理的可靠性,更好的满足了实际应用需求。
可以理解的是,由于本实施例所介绍的定时任务处理方法为可以执行本发明实施例中定时任务处理系统中的具体步骤,故而基于本发明实施例中所介绍的定时任务处理系统,本领域所属技术人员能够了解本实施例的定时任务处理方法的具体实施方式以及其各种变化形式,所以在此对于该定时任务处理方法如何实现不再详细介绍。只要本领域所属技术人员实施本发明实施例中定时任务处理系统,都属于本发明所欲保护的范围。
本发明实施例提供了一种电子设备,如图3所示,处理器41、存储器42、通信接口43和总线44;其中,
处理器41、存储器42、通信接口43通过总线44完成相互间的通信;
通信接口43用于该电子设备与显示装置的通信设备之间的信息传输;
处理器41用于调用存储器42中的程序指令,以执行上述方法实施例中任一消息中间件服务器所执行的方法步骤,其中,任一消息中间件服务器为第一消息中间件服务器或第二消息中间件服务器。
本实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述方法实施例中任一消息中间件服务器所执行的方法步骤,其中,任一消息中间件服务器为第一消息中间件服务器或第二消息中间件服务器。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。