CN110096340A - 定时任务处理方法及装置 - Google Patents
定时任务处理方法及装置 Download PDFInfo
- Publication number
- CN110096340A CN110096340A CN201810084155.6A CN201810084155A CN110096340A CN 110096340 A CN110096340 A CN 110096340A CN 201810084155 A CN201810084155 A CN 201810084155A CN 110096340 A CN110096340 A CN 110096340A
- Authority
- CN
- China
- Prior art keywords
- timed task
- task
- thread
- queue
- timed
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/466—Transaction processing
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种定时任务处理方法及装置,其中,定时任务处理方法包括:通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;在监听到新的定时任务后,通过I/O多路复用模型激活队列维护线程;读取定时任务的数据,并写入激活的队列维护线程,其中,定时任务的数据包括:定时任务的任务数据、定时任务的定时时间;根据定时任务的定时时间,将定时任务加入队列维护线程维护的定时任务队列,其中,定时任务队列中的定时任务按照定时时间从小到大排列;在定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。通过本发明实施例,实现了定时任务触发时间的精确匹配和处理。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种定时任务处理方法及装置。
背景技术
定时任务是在到达设定的时间后即被触发执行的任务,定时任务可以是周期性的任务,如每隔5分钟执行一次,也可以是一次性的任务,如在某年某月某日13:00:00执行,执行完任务即结束,不再重复执行。
随着计算机和互联网技术的发展,定时任务被越来越多地应用到多种场景中,例如,每到达一定时间推送消息,每到达一定时间进行作业提醒,等等。目前,一种定时任务处理方案是将定时任务存储到数据库中,通过定时或者常态下执行检测脚本定期拉取数据库中的定时任务,来检测定时任务是否到达触发时间点。
但是,这种定时任务处理方案中,因定时检测存在检测间隔,使得定时任务无法在精确的设定时间被执行,即使为常态下进行检测(如每隔100毫秒检测),这种被动检测的方案也无法精确匹配到定时任务的触发时间,存在定时任务执行延时的问题。
发明内容
有鉴于此,本发明实施例提供了一种定时任务处理方案,以解决现有技术中,无法实现定位任务在精确的触发时间被触发执行的问题。
根据本发明实施例的第一方面,提供了一种定时任务处理方法,包括:通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;在监听到新的定时任务后,通过所述I/O多路复用模型激活所述队列维护线程;读取所述定时任务的数据,并写入激活的所述队列维护线程,其中,所述定时任务的数据包括:所述定时任务的任务数据、所述定时任务的定时时间;根据所述定时任务的定时时间,将所述定时任务加入所述队列维护线程维护的定时任务队列,其中,所述定时任务队列中的定时任务按照定时时间从小到大排列;在所述定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
根据本发明实施例的第二方面,还提供了一种定时任务处理装置,包括:监听模块,用于通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;激活模块,用于在监听到新的定时任务后,通过所述I/O多路复用模型激活所述队列维护线程;读写模块,用于读取所述定时任务的数据,并写入激活的所述队列维护线程,其中,所述定时任务的数据包括:所述定时任务的任务数据、所述定时任务的定时时间;队列模块,用于根据所述定时任务的定时时间,将所述定时任务加入所述队列维护线程维护的定时任务队列,其中,所述定时任务队列中的定时任务按照定时时间从小到大排列;分发模块,用于在所述定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
根据本发明实施例提供的方案,通过I/O多路复用模型对定时任务进行实时监听,并在监听到有新的定时任务到来时,读取该定时任务数据并写入相应的队列维护线程的定时任务队列中,以在定时时间到达时进行该定时任务的分发。其中,I/O多路复用模型是一种使用I/O多路复用机制进行任务处理的模型,可以监视多个描述符,一旦某个描述符就绪(可以是读就绪或者写就绪),即可通知相应的进程或线程进行读写操作。本发明实施例中,I/O多路复用模型可以对产生、发送或转发定时任务的线程或进程通过这些线程或进程的描述符进行监听,一旦有定时任务到达,即可进行处理。因此,通过本发明实施例提供的方案,可以实时对定时任务进行监听,并在定时时间到达时即时对定时任务进行处理,实现了定时任务触发时间的精确匹配和处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一的一种定时任务处理方法的步骤流程图;
图2是根据本发明实施例二的一种定时任务处理方法的步骤流程图;
图3是图2所示实施例中的一种处理定时任务的线程之间的时序示意图;
图4是根据本发明实施例三的一种定时任务处理装置的结构框图;
图5是根据本发明实施例四的一种定时任务处理装置的结构示意图;
图6是使用图5所示定时任务处理装置进行定时任务处理的流程示意图。
具体实施方式
当然,实施本发明实施例的任一技术方案必不一定需要同时达到以上的所有优点。
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
实施例一
参照图1,示出了根据本发明实施例一的一种定时任务处理方法的步骤流程图。
本实施例的定时任务处理方法包括以下步骤:
步骤S102:通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听。
定时任务在具体执行时通常由操作系统分配给相应的进程完成,该进程再通过多个线程实现定时任务的具体执行。本发明实施例中,从线程层面对定时任务的执行进行说明。
本实施例中,队列维护线程用于以队列形式维护定时任务,该队列维护线程对应有一个I/O多路复用模型。I/O多路复用模型是一种使用I/O多路复用机制进行任务处理的模型,可以监视多个描述符,一旦某个描述符就绪(可以是读就绪或者写就绪),即可通知相应的进程或线程进行读写操作。本实施例中,队列维护线程通过对应的I/O多路复用模型对其它线程或其它进程进行定时任务监听,以在有定时任务到达时,加入队列维护线程中维护的定时任务队列。
在一种可行方式中,队列维护线程可以由主线程创建,实现定时任务的队列维护。
步骤S104:在监听到新的定时任务后,通过所述I/O多路复用模型激活队列维护线程。
在无定时任务需要处理时,队列维护维护可以处于去激活状态,以节省系统开销。但在监听到有定时任务需要处理时,如本实施例中监听到有新的定时任务,或者定时任务队列中有定时任务的定时时间到达时,队列维护线程都会被激活,以对相应的定时任务进行处理。本发明实施例中,通过队列维护线程自身的I/O多路复用模型进行队列维护线程的激活。如前所述,I/O多路复用模型可以监视多个描述符,一旦某个描述符就绪(可以是读就绪或者写就绪),即可通知相应的进程或线程进行读写操作。因此,I/O多路复用模型可以在监听到有新的定时任务时,即时激活队列维护线程,避免处理延时。
步骤S106:读取定时任务的数据,并写入激活的队列维护线程。
其中,定时任务的数据包括:定时任务的任务数据、定时任务的定时时间。定时任务的任务数据用于描述定时任务自身所需执行的任务,定时任务的定时时间用于指示该任务应当被执行的时间。
步骤S108:根据定时任务的定时时间,将所述定时任务加入队列维护线程维护的定时任务队列。
其中,定时任务队列中的定时任务按照定时时间从小到大排列。队列维护线程中维护有定时任务队列,在某一时刻,该定时任务队列可能为空,也可能非空。当为空时,直接将定时任务加入定时任务队列即可;当为非空时,需要根据定时任务的定时时间,将该定时任务加入队列,在该队列中,该定时任务之前的任务的定时时间早于或等于该定时任务的定时时间,该定时任务之后的任务的定时时间晚于该定时任务的定时时间。或者,在该队列中,该定时任务之前的任务的定时时间早于该定时任务的定时时间,该定时任务之后的任务的定时时间等于或晚于该定时任务的定时时间。
步骤S110:在定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
其中,任务分发线程用于将定时任务分发至相应的执行对象,如,用于执行该定时任务的执行进程或线程,或者,用于执行该定时任务的设备,等等。
当定时任务的定时时间到达时,任务分发线程即将相应的定时任务发送至相应的执行对象,以实现定时任务的最终执行。
根据本实施例,通过I/O多路复用模型对定时任务进行实时监听,并在监听到有新的定时任务到来时,读取该定时任务数据并写入相应的队列维护线程的定时任务队列中,以在定时时间到达时进行该定时任务的分发。其中,I/O多路复用模型是一种使用I/O多路复用机制进行任务处理的模型,可以监视多个描述符,一旦某个描述符就绪(可以是读就绪或者写就绪),即可通知相应的进程或线程进行读写操作。本发明实施例中,I/O多路复用模型可以对产生、发送或转发定时任务的线程或进程通过这些线程或进程的描述符进行监听,一旦有定时任务到达,即可进行处理。因此,通过本发明实施例提供的方案,可以实时对定时任务进行监听,并在定时时间到达时即时对定时任务进行处理,实现了定时任务触发时间的精确匹配和处理。
本实施例的定时任务处理方法可以由任意适当的具有数据处理功能的设备或装置实现,包括但不限于各种终端及服务器等。
实施例二
参照图2,示出了根据本发明实施例二的一种定时任务处理方法的步骤流程图。
本实施例的定时任务处理方法包括以下步骤:
步骤S202:为定时任务处理建立进程,并建立所述进程的多个线程。
本实施例中,首先由操作系统为定时任务建立相应的进程以进行定时任务处理,该进程包括多个线程,本实施例中分别为:主线程、请求分发线程、队列维护线程和任务分发线程。
其中,请求分发线程、队列维护线程和任务分发线程由主线程创建。在一种可行方式中,主线程负责其它各个线程的初始化和管理,以及,接收产生定时任务的进程或线程的定时任务处理请求,并将该请求转发给请求分发线程;请求分发线程用于在接收到定时任务处理请求后,获取定时任务的数据并进行格式校验,在格式校验通过后,将定时任务的数据发送给队列维护线程,可选地,请求分发线程还可以用于存储和/或同步定时任务的数据;队列维护线程在接收到定时任务的数据后将其加入定时任务队列并进行监听,待定时时间到达时,将对应的定时任务发送给任务分发线程;任务分发线程将该定时任务发送给执行对象,以在定时时间执行该定时任务。
在一种可行方式中,主线程、请求分发线程、队列维护线程和任务分发线程中的每个线程都有自身的I/O多路复用模型,以实现对相关线程的实时任务监听和对自身任务的实时处理。但不限于此,在实际应用中,本领域技术人员也可以根据实际需求,只为部分线程设置I/O多路复用模型。I/O多路复用模型为一种I/O模型,其对数据的获取和发送通过数据读写实现。
可选地,本发明实施例中,在Linux操作系统下,I/O多路复用模型采用EPOLL模型。EPOLL模型是Linux下的一种多路复用IO接口模型,其是select模型和poll模型的增强版本。其具有(1)没有最多监听的描述符上限的限制;(2)只对“活跃”的套接字socket进行操作,每次被唤醒时返回的是所有“ready”的描述符,同时还带有“ready”的类型;(3)内核态与用户态共享内存,不需要数据COPY。因此,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。但不限于EPOLL模型,其它可实现相同或相似功能的模型,或者,其它操作系统下的类似模型可同样适用本发明实施例提供的方案。
步骤S204:启动主线程并为主线程建立第一套接字和主线程套接字对,将主线程的第一套接字与设定的监听地址绑定。
其中,主线程通过第一套接字对监听地址进行实时任务监听;通过主线套接字对与本进程内部的其它线程,如请求分发线程、队列维护线程和任务分发线程,进行通信。在Linux环境下,可以使用socket pair函数创造一对未命名的、相互连接的UNIX域套接字socket pair,以实现主线程与其它线程间的通信。
本步骤中,将主线程的第一套接字与设定的监听地址绑定,该监听地址为产生定时任务的进程或线程的地址,通过将主线程的第一套接字与设定的监听地址绑定,实现对监听地址的定时任务监听,以在监听到生成的定时任务到达时,将第一套接字的信息传递给请求分发线程,由请求分发线程从第一套接字获取该定时任务的数据。
在主线程具有I/O多路复用模型时,其对定时任务的监听以及将定时任务发送给请求分发线程均由该I/O多路复用模型实现。
步骤S206:通过主线程对请求分发线程、队列维护线程和任务分发线程进行初始化并分别建立对应的套接字对。
其中,如前所述,套按字对用于线程之间的I/O通信;请求分发线程、队列维护线程和任务分发线程由主线程创建、初始化及管理。
主线程对上述各个线程的初始化可以采用常规的初始化方式实现,以为各个线程分配资源并建立套接字对,等等。
步骤S208:通过主线程的第一套接字对监听地址进行定时任务监听,并在监听到有定时任务到达时,通过建立的主线程套接字对将第一套接字传递给请求分发线程,由请求分发线程从第一套接字接收定时任务。
其中,主线程和请求分发线程通过套接字对相互通信,在请求分发线程也具有I/O多路复用模型时,请求分发线程通过其I/O多路复用模型对主线程进行定时任务监听;主线程在有定时任务到达时,将第一套接字传递给请求分发线程;请求分发线程接收主线程传递的第一套接字,并通过第一套接字获取定时任务的数据并进行数据写入操作。
在一种可行方式中,请求分发线程对定时任务的处理不限于写入操作,还可以对写入的定时任务进行格式校验,其中,所述格式校验用于校验以下数据:定时任务的执行对象的地址数据、定时任务的定时时间、定时任务的失败重试次数、定时任务的失败重试间隔、定时任务的任务数据。其中,具体的校验实现方式可以由本领域技术人员根据实际情况采用任意适当方式实现,本发明实施例对此不作限制。
在所述格式校验通过后,请求分发线程将所述定时任务存储至本地磁盘,同时,还将所述定时任务发送给队列维护线程。
除此之外,在一种可行方式中,还可以通过请求分发线程接收定时任务同步请求,根据同步请求将本地磁盘中保存的定时任务的数据同步至备份设备。以实现定时任务的存储和备份,以及定时任务的恢复,进一步提高了定时任务处理的安全性。
步骤S210:通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听。
在设置有请求分发线程时,可以通过定时任务的队列维护线程对应的I/O多路复用模型对请求分发线程进行定时任务监听。队列维护线程的I/O多路复用模型在监听到请求分发线程在进行过所述格式校验后发送的定时任务到达信号时,就会从请求分发线程获取定时任务。
步骤S212:在监听到新的定时任务后,通过队列维护线程的I/O多路复用模型激活队列维护线程。
在设置有请求分发线程时,队列维护线程的I/O多路复用模型在监听到请求分发线程发出定时任务到达指令后,激活队列维护线程。
但队列维护线程的激活不限于监听到新的定时任务时进行激活,还可以在有定时任务队列中有定时任务到达定时时间时触发激活。也即,通过队列维护线程的I/O多路复用模型监听队列维护线程的定时任务队列;根据监听结果,确定定时任务队列中的至少一个队列任务到达其定时时间时,激活队列维护线程将至少一个队列任务写入任务分发线程进行定时任务分发。
步骤S214:读取新的定时任务的数据,并写入激活的队列维护线程。
其中,新的定时任务的数据包括:定时任务的任务数据、定时任务的定时时间。
在设置有请求分发线程时,从请求分发线程读取新的定时任务的数据,并写入激活的队列维护线程。
步骤S216:根据新的定时任务的定时时间,将新的定时任务加入队列维护线程维护的定时任务队列。
其中,定时任务队列中的定时任务按照定时时间从小到大排列。也即,按照距离当前时间的时间远近排列定时任务,距离当前时间最近的定时任务排在队列头部。
在一种可行方式中,定时任务队列根据定时任务的定时时间,通过最小堆算法生成。最小堆是一棵完全二叉树,每一个子节点都大于或等于其父节点,最小堆完全二叉树在实现时可以使用链表或者数组,通过堆排序算法生成。最小堆算法中插入一个定时任务的时间复杂度为O(logN),可见,当有较多定时任务时,最小堆算法可以有效提升排序效率。
但不限于此,在定时任务的总体数量较少,且加入的定时任务的定时时间总是很短的情况下,也可以采用插入排序算法来维护定时任务队列。若选择插入排序算法维护定时任务队列,新插入一个定时任务的时间复杂度最坏情况为O(N),最好情况下只需要一次即可插入(插入的定时任务比定时任务队列头结点的定时任务的定时时间小),因此可以获得比最小堆算法更高的插入效率。
步骤S218:在定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
当定时任务队列中的有定时任务的定时时间到达时,队列维护线程发出定时任务到达信号,任务分发线程监听到该到达信号,从队列维护线程中获取相应的定时任务进行分发至定时任务的执行对象。
至此,实现了从监听到产生的定时任务至将定时任务分发出去的过程。
基于以上描述,以下以一个实例的形式对包括上述过程的整个定时任务的处理过程进行示例性说明。
本实例中,包括:定时任务生产进程、定时任务队列进程、定时任务执行进程、主备同步进程。其中,定时任务队列进程包括上述主线程、请求分发线程、队列维护线程和任务分发线程。
定时任务生产进程需要按照一定的协议生成格式化的定时任务,跟定时任务队列进程所在的机器发起TCP三次握手建立连接,利用socket模型进行通信,将定时任务的数据传输到定时任务队列进程。定时任务生产进程根据实际需求可部署在主机、备机、或者其他机器上。
在主机上启动定时任务队列进程,创建并初始化本进程的多个线程,即:主线程、请求分发线程、队列维护线程、任务分发线程。
上述各线程之间的时序关系如图3所示,由图3可见,在定时任务的处理过程中:
主线程在启动时建立socket地址和socket pair(图中未示出),并将socket地址与监听地址绑定,同时初始化其它各线程。若本地磁盘中存在未成功发送的定时任务,则加载本地磁盘中的定时任务的数据,读取未成功发送的定时任务的数据并创建定时任务,将这些定时任务转发给任务队列线程入队。最后,进入监听循环,接收定时任务生产进程发起的连接。建立好连接后,主线程将定时任务的处理请求转发至请求分发线程。
请求分发线程在初始化时,建立socket pair,并等待主线程的定时任务处理请求。在接收到主线程转发的定时任务处理请求后,读取定时任务的数据,并对定时任务进行格式校验,包括:按照定义的协议格式,定时任务的数据需要包含定时任务的执行对象的地址数据、定时任务的定时时间(精确到毫秒)、定时任务的失败重试次数、定时任务的失败重试间隔、定时任务的任务数据等。格式校验通过后,请求分发线程首先将定时任务的数据持久化存储到本地磁盘,磁盘文件记录定时任务所有的细节数据。持久化存储定时任务的数据成功执行后,请求分发线程将定时任务分发给队列维护线程。此外,请求分发线程还用来跟主备同步进程进行定时任务的数据同步,请求分发线程识别为主备同步进程发起的定时任务同步请求后,会发送一定数量的定时任务的数据给备机。其中,一定数量由本领域技术人员根据实际需要适当设置,本发明实施例对此不作限制,如每次同步2M的定时任务的数据。
队列维护线程维护一个定时任务队列,对定时任务队列的管理采用最小堆算法,按照定时任务的定时时间与当前时间的差值进行排序,保证队列头部为最近待分发执行的定时任务。
队列维护线程在初始化时会初始化一对socket pair,作为对外通信的手段,以在等待定时任务触发时能够激活本线程,并加入新的定时任务。需要说明的是,队列维护线程等待采用epoll wait方法,该方法可以实现最小粒度到毫秒的精确定时;当加入多个定时任务后,epoll wait的时间也只是队列头部任务的定时时间。
当epoll wait返回时队列维护线程会被激活,epoll wait返回的条件为以下两个条件之一:
i.等待超时:即定时任务队列头部的定时任务到了指定的定时时间,通过依次遍历定时任务队列中的定时任务列表(队列头部开始的多个定时任务的定时时间可能相同),将这些到时的定时任务传递给任务分发线程;
ii.socket pair激活本线程:即有新加入的定时任务,需要按照最小堆算法将该定时任务加入到定时任务队列中。
无论哪个条件满足,队列维护线程都会被激活,队列维护线程处理完定时任务后需要获取到最近待触发的定时任务的定时时间,更新epoll_wait的超时时间进入新的等待循环,等待激活。
任务分发线程在初始化时,建立socket pair,等待定时任务的触发。任务分发线程通过解析队列维护线程定时触发传来的定时任务的数据,获取定时任务执行进程所在的机器地址,并通过socket通信协议建立连接,将定时任务的数据发送到定时任务执行进程。如果任务执行失败,可以根据任务重试和重试间隔等设置将定时任务重新推到队列维护线程中等待重试执行。
定时任务执行进程维护一个工作线程池,用于执行各类任务。利用socket通信跟任务队列进程中任务分发线程进行通信。任务分发线程发送定时任务后,定时任务执行进程从线程池中取出一个空闲的线程来执行定时任务,任务类型可以是本地的程序或者是系统命令。针对HTTP请求,任务执行机器上不需要部署本进程,由任务分发线程直接针对指定的任务执行机器和端口发起HTTP请求。
此外,对于主备同步进程,可设置其运行在备机上,启动后定期(可配置)去拉取主机上持久化的定时任务的数据。由主备同步进程主动利用socket通信跟主机发起同步请求,请求中指定上次成功同步后的位置,并由主机从该位置起始处传送一定数量的定时任务的数据到本机,然后持久化到本机的磁盘中。若主机故障,可以启动备机的任务队列进程读取本地磁盘中的定时任务的数据,继续分发定时任务,避免主机故障导致定时任务的数据丢失。
可见,通过本实例,利用多线程和linux epoll多路复用机制来管理定时任务的接收、存储和分发,采用主线程和其它各线程通信的手段规避无法及时唤醒线程导致定时任务不能精确按时执行的问题。另外,将定时任务的数据持久化保存在磁盘中,并定期同步到其他机器,避免了机器损坏导致的定时任务的数据损失。由此,实现了定时任务定时精确触发(时间粒度最小为毫秒)以及机器损坏后定时任务的数据恢复。
此外,本发明实施例中,可被执行的定时任务的任务类型可以为发送HTTP请求、执行用户程序或者系统命令等,可以作为通用的定时任务执行的解决方案。
本实施例的定时任务处理方法可以由任意适当的具有数据处理功能的设备或装置实现,包括但不限于各种终端及服务器等。
实施例三
参照图4,示出了根据本发明实施例三的一种定时任务处理装置的结构框图。
本实施例的定时任务处理装置包括:监听模块302,用于通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;激活模块304,用于在监听到新的定时任务后,通过所述I/O多路复用模型激活所述队列维护线程;读写模块306,用于读取所述定时任务的数据,并写入激活的所述队列维护线程,其中,所述定时任务的数据包括:所述定时任务的任务数据、所述定时任务的定时时间;队列模块308,用于根据所述定时任务的定时时间,将所述定时任务加入所述队列维护线程维护的定时任务队列,其中,所述定时任务队列中的定时任务按照定时时间从小到大排列;分发模块310,用于在所述定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
可选地,分发模块310还用于通过所述I/O多路复用模型监听所述队列维护线程的定时任务队列;根据监听结果,确定所述定时任务队列中的至少一个队列任务到达其定时时间时,激活所述队列维护线程将所述至少一个队列任务写入所述任务分发线程进行定时任务分发。
可选地,所述定时任务队列根据所述定时任务的定时时间,通过最小堆算法生成。
可选地,监听模块302用于通过定时任务的队列维护线程对应的I/O多路复用模型对请求分发线程进行定时任务监听;激活模块304用于监听到所述请求分发线程发出定时任务到达指令后,通过所述I/O多路复用模型激活所述队列维护线程;读写模块306用于从所述请求分发线程读取所述定时任务的数据,并写入激活的所述队列维护线程。
可选地,本实施例的定时任务处理装置还包括:初始化模块312,用于在所述监听模块302通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听之前,通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别建立对应的套接字对;其中,所述套按字对用于线程之间的I/O通信;所述请求分发线程、所述队列维护线程和所述任务分发线程由所述主线程创建。
可选地,初始化模块312还用于在所述通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别生成对应的套接字对之前,启动所述主线程并为所述主线程建立第一套接字和主线程套接字对,将所述主线程的第一套接字与设定的监听地址绑定;在所述通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别生成对应的套接字对之后,通过所述主线程的第一套接字对所述监听地址进行定时任务监听,并在监听到有定时任务到达时,通过建立的所述主线程套接字对将所述第一套接字传递给所述请求分发线程,由所述请求分发线程从所述第一套接字接收所述定时任务。
可选地,读写模块306还用于通过所述请求分发线程对接收的所述定时任务进行格式校验,其中,所述格式校验用于校验以下数据:所述定时任务的执行对象的地址数据、所述定时任务的定时时间、所述定时任务的失败重试次数、所述定时任务的失败重试间隔、所述定时任务的任务数据;在所述格式校验通过后,将所述定时任务存储至本地磁盘,并将所述定时任务发送给所述队列维护线程。
可选地,本实施例的定时任务处理装置还包括:同步模块(图中未示出),用于通过所述请求分发线程接收定时任务同步请求,根据所述同步请求将本地磁盘中保存的定时任务的数据同步至备份设备。
可选地,所述主线程、所述请求分发线程和所述任务分发线程均对应有各自的I/O多路复用模型;其中,所述主线程通过对应的I/O多路复用模型对所述监听地址进行定时任务监听;所述请求分发线程通过对应的I/O多路复用模型对所述主线程进行定时任务监听;所述任务分发线程通过对应的I/O多路复用模型对所述队列维护线程进行定时任务监听,并将从所述队列维护线程接收的定时任务在所述定时任务的定时时间发送至所述定时任务的执行对象。
可选地,当所述方法应用于Linux操作系统中时,所述I/O多路复用模型为EPOLL模型。
本实施例的定时任务处理装置用于实现前述多个方法实施例中相应的定时任务处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。
实施例四
参照图5,示出了根据本发明实施例四的一种定时任务处理装置的结构示意图。
本实施例的定时任务处理装置包括:任务生产模块、任务队列模块、任务执行模块和主备同步模块。其中,任务队列模块可以通过实施例三中的装置实现,包括实施例三中装置所包括的各个模块。
任务生产模块可以实现定时任务生产进程的功能,其按照一定的协议生成格式化的定时任务,跟任务队列模块所在的机器发起TCP三次握手建立连接,利用socket模型进行通信,将定时任务的数据传输到任务队列模块。
任务队列模块可以实现定时任务队列进程的功能,其可以通过主线程、请求分发线程、队列维护线程和任务分发线程,接收和管理任务生产模块提交的定时任务,将定时任务维护在定时任务队列中;同时接收定时任务成功后将定时任务数据持久化到本地磁盘中。任务队列模块运行机器设为主机,其具体实现可参照前述多个实施例中的相关部分,在此不再赘述。
任务执行模块可以实现定时任务执行进程的功能,其运行在执行定时任务的机器上,用来执行具体的定时任务,如执行本机的各种程序或者系统命令等。
主备同步模块可以实现主备同步进程的功能,其可以运行在主机以外的其他机器上(可以多个),这类机器设为备机。备机定期与主机进行通讯,将主机磁盘中的定时任务数据获取到本地磁盘中,防止主机损坏后丢失定时任务数据。
基于上述任务生产模块、任务队列模块、任务执行模块和主备同步模块,使用本实施例的定时任务处理装置进行定时任务处理的简要流程如图6所示。
从图6中可见,任务生产模块生成定时任务后,将与定时任务有关的数据发送给任务队列模块的主线程;主线程向请求分发线程发起转发请求,将定时任务的数据发送给请求分发线程;请求分发线程对定时任务的数据进行校验;如果校验不通过,则向任务生产模块返回任务数据异常的消息;如果校验通过,则一方面,将定时任务存入队列维护线程,另一方面向任务生产模块返回任务正常接收的消息,此外,还通过主备同步模块定期同步定时任务的数据;队列维护线程在将定时任务加入定时任务队列后,按照定时任务队列中的定时任务的定时时间,将定时任务定时出列,交给任务分发线程;任务分发线程将定时任务分发给任务执行模块;任务执行模块在对定时任务进行处理后,向任务分发线程返回执行结果;任务分发线程在接收到执行结果后,对执行结果进行校验,判断是否需要失败重试,如果需要失败重试,则将执行失败的定时任务重新加入队列维护线程维护的定时任务队列;如果不需要失败重试,则表明定时任务已被成功执行。
可见,通过本实例,提高了定时任务的生成、处理和执行的速度和效率。另外,将定时任务的数据持久化保存在磁盘中,并定期同步到其他机器,避免了机器损坏导致的定时任务的数据损失。由此,实现了定时任务定时精确触发(时间粒度最小为毫秒)以及机器损坏后定时任务的数据恢复。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,所述计算机可读记录介质包括用于以计算机(例如计算机)可读的形式存储或传送信息的任何机制。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等,该计算机软件产品包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
本领域的技术人员应明白,本发明实施例的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
Claims (11)
1.一种定时任务处理方法,其特征在于,包括:
通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;
在监听到新的定时任务后,通过所述I/O多路复用模型激活所述队列维护线程;
读取所述定时任务的数据,并写入激活的所述队列维护线程,其中,所述定时任务的数据包括:所述定时任务的任务数据、所述定时任务的定时时间;
根据所述定时任务的定时时间,将所述定时任务加入所述队列维护线程维护的定时任务队列,其中,所述定时任务队列中的定时任务按照定时时间从小到大排列;
在所述定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述I/O多路复用模型监听所述队列维护线程的定时任务队列;
根据监听结果,确定所述定时任务队列中的至少一个队列任务到达其定时时间时,激活所述队列维护线程将所述至少一个队列任务写入所述任务分发线程进行定时任务分发。
3.根据权利要求1或2所述的方法,其特征在于,所述定时任务队列根据所述定时任务的定时时间,通过最小堆算法生成。
4.根据权利要求1或2所述的方法,其特征在于,
所述通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听,包括:通过定时任务的队列维护线程对应的I/O多路复用模型对请求分发线程进行定时任务监听;
所述监听到新的定时任务,包括:监听到所述请求分发线程发出定时任务到达指令;
所述读取所述定时任务的数据,包括:从所述请求分发线程读取所述定时任务的数据。
5.根据权利要求4所述的方法,其特征在于,在所述通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听之前,所述方法还包括:
通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别建立对应的套接字对;
其中,所述套按字对用于线程之间的I/O通信;所述请求分发线程、所述队列维护线程和所述任务分发线程由所述主线程创建。
6.根据权利要求5所述的方法,其特征在于,
在所述通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别生成对应的套接字对之前,所述方法还包括:启动所述主线程并为所述主线程建立第一套接字和主线程套接字对,将所述主线程的第一套接字与设定的监听地址绑定;
在所述通过主线程对所述请求分发线程、所述队列维护线程和所述任务分发线程进行初始化并分别生成对应的套接字对之后,所述方法还包括:通过所述主线程的第一套接字对所述监听地址进行定时任务监听,并在监听到有定时任务到达时,通过建立的所述主线程套接字对将所述第一套接字传递给所述请求分发线程,由所述请求分发线程从所述第一套接字接收所述定时任务。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
通过所述请求分发线程对接收的所述定时任务进行格式校验,其中,所述格式校验用于校验以下数据:所述定时任务的执行对象的地址数据、所述定时任务的定时时间、所述定时任务的失败重试次数、所述定时任务的失败重试间隔、所述定时任务的任务数据;
在所述格式校验通过后,将所述定时任务存储至本地磁盘,并将所述定时任务发送给所述队列维护线程。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
通过所述请求分发线程接收定时任务同步请求,根据所述同步请求将本地磁盘中保存的定时任务的数据同步至备份设备。
9.根据权利要求6所述的方法,其特征在于,所述主线程、所述请求分发线程和所述任务分发线程均对应有各自的I/O多路复用模型;
其中,
所述主线程通过对应的I/O多路复用模型对所述监听地址进行定时任务监听;
所述请求分发线程通过对应的I/O多路复用模型对所述主线程进行定时任务监听;
所述任务分发线程通过对应的I/O多路复用模型对所述队列维护线程进行定时任务监听,并将从所述队列维护线程接收的定时任务在所述定时任务的定时时间发送至所述定时任务的执行对象。
10.根据权利要求1或2所述的方法,其特征在于,当所述方法应用于Linux操作系统中时,所述I/O多路复用模型为EPOLL模型。
11.一种定时任务处理装置,其特征在于,包括:
监听模块,用于通过定时任务的队列维护线程对应的I/O多路复用模型进行定时任务监听;
激活模块,用于在监听到新的定时任务后,通过所述I/O多路复用模型激活所述队列维护线程;
读写模块,用于读取所述定时任务的数据,并写入激活的所述队列维护线程,其中,所述定时任务的数据包括:所述定时任务的任务数据、所述定时任务的定时时间;
队列模块,用于根据所述定时任务的定时时间,将所述定时任务加入所述队列维护线程维护的定时任务队列,其中,所述定时任务队列中的定时任务按照定时时间从小到大排列;
分发模块,用于在所述定时任务队列中的每个定时任务的定时时间,触发任务分发线程分发对应的定时任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810084155.6A CN110096340B (zh) | 2018-01-29 | 2018-01-29 | 定时任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810084155.6A CN110096340B (zh) | 2018-01-29 | 2018-01-29 | 定时任务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096340A true CN110096340A (zh) | 2019-08-06 |
CN110096340B CN110096340B (zh) | 2020-11-17 |
Family
ID=67442676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810084155.6A Active CN110096340B (zh) | 2018-01-29 | 2018-01-29 | 定时任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096340B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694647A (zh) * | 2020-06-08 | 2020-09-22 | 北京百度网讯科技有限公司 | 用于自动驾驶车辆的任务调度方法、设备及存储介质 |
CN112035255A (zh) * | 2020-08-28 | 2020-12-04 | 北京浪潮数据技术有限公司 | 线程池资源管理任务处理方法、装置、设备及存储介质 |
CN112231092A (zh) * | 2020-11-24 | 2021-01-15 | 政采云有限公司 | 一种定时任务管理方法、装置、设备及可读存储介质 |
CN112546617A (zh) * | 2020-12-29 | 2021-03-26 | 珠海金山网络游戏科技有限公司 | 任务处理方法及装置 |
CN112685181A (zh) * | 2020-12-29 | 2021-04-20 | 成都科来网络技术有限公司 | 一种均衡cpu资源的推送任务调度方法及系统 |
CN113342554A (zh) * | 2021-08-02 | 2021-09-03 | 阿里云计算有限公司 | Io多路复用方法、介质、设备和操作系统 |
CN113672358A (zh) * | 2020-05-15 | 2021-11-19 | 北京沃东天骏信息技术有限公司 | 定时任务处理方法及装置、系统、电子设备和存储介质 |
CN113760522A (zh) * | 2020-09-25 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种任务处理方法和装置 |
CN115037702A (zh) * | 2022-05-23 | 2022-09-09 | 北京梧桐车联科技有限责任公司 | 报文分发、数据发送方法及设备 |
CN116192985A (zh) * | 2023-02-08 | 2023-05-30 | 广州市保伦电子有限公司 | 一种数据传输方法、装置及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673222A (zh) * | 2009-11-03 | 2010-03-17 | 东方电子股份有限公司 | VxWorks系统多路选择模式下任务定时器的实现方法 |
US20100162014A1 (en) * | 2008-12-24 | 2010-06-24 | Mazhar Memon | Low power polling techniques |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN104199730A (zh) * | 2014-08-29 | 2014-12-10 | 浪潮集团有限公司 | 一种基于同步i/o复用机制的单线程多任务处理方法 |
CN104281488A (zh) * | 2013-07-08 | 2015-01-14 | 博雅网络游戏开发(深圳)有限公司 | 服务器引擎的实现方法和系统 |
CN104951361A (zh) * | 2014-03-27 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 一种定时任务的触发方法和装置 |
CN105138398A (zh) * | 2015-09-30 | 2015-12-09 | 山东乾云启创信息科技有限公司 | 同步通信模式下socket通信与进程管理通用平台及方法 |
CN105404556A (zh) * | 2015-10-22 | 2016-03-16 | 江苏省电力公司扬州供电公司 | 基于l-qt-p多线程事件触发机制的通信系统及方法 |
CN105760237A (zh) * | 2016-02-05 | 2016-07-13 | 南京贝伦思网络科技股份有限公司 | 一种基于协程机制的通讯方法 |
-
2018
- 2018-01-29 CN CN201810084155.6A patent/CN110096340B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100162014A1 (en) * | 2008-12-24 | 2010-06-24 | Mazhar Memon | Low power polling techniques |
CN101673222A (zh) * | 2009-11-03 | 2010-03-17 | 东方电子股份有限公司 | VxWorks系统多路选择模式下任务定时器的实现方法 |
CN104281488A (zh) * | 2013-07-08 | 2015-01-14 | 博雅网络游戏开发(深圳)有限公司 | 服务器引擎的实现方法和系统 |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN104951361A (zh) * | 2014-03-27 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 一种定时任务的触发方法和装置 |
CN104199730A (zh) * | 2014-08-29 | 2014-12-10 | 浪潮集团有限公司 | 一种基于同步i/o复用机制的单线程多任务处理方法 |
CN105138398A (zh) * | 2015-09-30 | 2015-12-09 | 山东乾云启创信息科技有限公司 | 同步通信模式下socket通信与进程管理通用平台及方法 |
CN105404556A (zh) * | 2015-10-22 | 2016-03-16 | 江苏省电力公司扬州供电公司 | 基于l-qt-p多线程事件触发机制的通信系统及方法 |
CN105760237A (zh) * | 2016-02-05 | 2016-07-13 | 南京贝伦思网络科技股份有限公司 | 一种基于协程机制的通讯方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672358A (zh) * | 2020-05-15 | 2021-11-19 | 北京沃东天骏信息技术有限公司 | 定时任务处理方法及装置、系统、电子设备和存储介质 |
CN111694647A (zh) * | 2020-06-08 | 2020-09-22 | 北京百度网讯科技有限公司 | 用于自动驾驶车辆的任务调度方法、设备及存储介质 |
CN112035255A (zh) * | 2020-08-28 | 2020-12-04 | 北京浪潮数据技术有限公司 | 线程池资源管理任务处理方法、装置、设备及存储介质 |
CN113760522A (zh) * | 2020-09-25 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种任务处理方法和装置 |
CN112231092A (zh) * | 2020-11-24 | 2021-01-15 | 政采云有限公司 | 一种定时任务管理方法、装置、设备及可读存储介质 |
CN112546617A (zh) * | 2020-12-29 | 2021-03-26 | 珠海金山网络游戏科技有限公司 | 任务处理方法及装置 |
CN112685181A (zh) * | 2020-12-29 | 2021-04-20 | 成都科来网络技术有限公司 | 一种均衡cpu资源的推送任务调度方法及系统 |
CN112546617B (zh) * | 2020-12-29 | 2022-08-30 | 珠海金山数字网络科技有限公司 | 任务处理方法及装置 |
CN112685181B (zh) * | 2020-12-29 | 2024-06-04 | 科来网络技术股份有限公司 | 一种均衡cpu资源的推送任务调度方法及系统 |
CN113342554A (zh) * | 2021-08-02 | 2021-09-03 | 阿里云计算有限公司 | Io多路复用方法、介质、设备和操作系统 |
CN113342554B (zh) * | 2021-08-02 | 2022-01-04 | 阿里云计算有限公司 | Io多路复用方法、介质、设备和操作系统 |
CN115037702A (zh) * | 2022-05-23 | 2022-09-09 | 北京梧桐车联科技有限责任公司 | 报文分发、数据发送方法及设备 |
CN115037702B (zh) * | 2022-05-23 | 2024-04-12 | 北京梧桐车联科技有限责任公司 | 报文分发、数据发送方法及设备 |
CN116192985A (zh) * | 2023-02-08 | 2023-05-30 | 广州市保伦电子有限公司 | 一种数据传输方法、装置及系统 |
CN116192985B (zh) * | 2023-02-08 | 2023-11-21 | 广东保伦电子股份有限公司 | 一种数据传输方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110096340B (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096340A (zh) | 定时任务处理方法及装置 | |
US20180270297A1 (en) | Command processing in distributed computing systems | |
WO2019154394A1 (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US10895996B2 (en) | Data synchronization method, system, and apparatus using a work log for synchronizing data greater than a threshold value | |
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
CN100385406C (zh) | 执行与多个代理节点关联的备份节点的计划备份 | |
CN103049317B (zh) | 云环境下基于队列的高并发数据快速写入系统及方法 | |
US9798639B2 (en) | Failover system and method replicating client message to backup server from primary server | |
CN109189595A (zh) | 基于服务器的事件处理方法、装置、设备及介质 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
US20060167951A1 (en) | Semantic management method for logging or replaying non-deterministic operations within the execution of an application process | |
US10075326B2 (en) | Monitoring file system operations between a client computer and a file server | |
CN105912402A (zh) | 一种基于Actor模型的调度方法及装置 | |
CN103795742B (zh) | 异构存储容灾管理系统及方法 | |
CN112311605A (zh) | 提供机器学习服务的云平台及方法 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN105607968A (zh) | 一种增量备份方法及设备 | |
CN114003465A (zh) | 用于金融交易系统的高可靠低时延集中风控系统及方法 | |
CN106383861A (zh) | 一种用于数据库的数据同步方法及装置 | |
CN107528871A (zh) | 存储系统中的数据分析 | |
CN113672452A (zh) | 一种数据采集任务的运行监控方法、系统 | |
Wu et al. | TRANSOM: An efficient fault-tolerant system for training LLMs | |
CN112445860A (zh) | 一种处理分布式事务的方法和装置 | |
CN112825525A (zh) | 用于处理事务的方法和装置 | |
CN106407264A (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 |