一种分布式定时的方法、服务器以及系统与流程

文档序号:15828908发布日期:2018-11-03 00:14阅读:122来源:国知局

本发明涉及通信技术领域,尤其涉及的是一种分布式定时的方法、服务器以及系统。

背景技术

多实例定时任务的概念是指同一种定时任务可以同时运行多个实例,多实例定时任务在业务系统中应用特别广泛,比如定时计算报表、定时通知相关系统处理事务、定时从一个队列中消费消息并做对应的处理等一系列异步后台处理任务的场景。在具体应用多实例定时任务的过程中,管理好这些多实例定时任务就会是一个很大的问题,比如一种任务可以同时最大执行多少个实例、一个任务执行时间超过执行周期如何处理、任务异常退出如何处理、以及一种任务在多台机器上执行如何管控等一系列问题。

现有技术可采用单机系统实现对多实例定时任务的管理,单机系统包括代理节点,代理节点常驻后台循环检查任务是否到期,若任务到期,则代理节点会进行任务的执行,在具体应用中,可将单机系统部署到多个机器上实现多实例执行。

现有技术所提供的单机系统中的一个机器发生宕机,则已宕机的机器上的任务无法自动进行迁移,虽然可将单机系统部署到多个机器上,但是严重依赖人工去实现任务的迁移,降低了任务执行的效率以及任务迁移的效率,对单个任务的执行实例情况不可控,管理起来比较困难。



技术实现要素:

本发明实施例提供了一种能够实现任务自动迁移的分布式定时的方法、服务器以及系统。

本发明实施例第一方面提供了一种分布式定时的方法,包括:

确定第一目标任务执行节点,所述第一目标任务执行节点为已接收到任务锁的任务执行节点,所述任务锁用于指示所述第一目标任务执行节点执行当前任务;

在满足预设条件的情况下,确定第二目标任务执行节点,所述第一目标任务执行节点和所述第二目标任务执行节点为互不相同的任务执行节点,所述预设条件为目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息,所述目标时长为当前时刻和目标起始时间点的差,所述目标起始时间点为发送所述任务锁的时间点,所述任务锁释放请求信息用于指示所述第一目标任务执行节点已执行完成所述当前任务;

将所述任务锁发送给所述第二目标任务执行节点,所述任务锁用于指示所述第二目标任务执行节点执行所述当前任务。

本发明实施例第二方面提供了一种分布式定时的方法,包括:

接收任务分发中心发送的当前任务执行时间信息;

根据所述当前任务执行时间信息配置定时器,所述定时器用于对执行所述当前任务的起始时间进行计时;

若所述定时器所计时间已到,则向任务分布式锁服务节点发送任务锁请求信息,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送任务锁,所述任务锁用于指示执行当前任务;

若接收到所述任务锁,则根据所述任务锁执行所述当前任务。

本发明实施例第三方面提供了一种服务器,包括:

第一确定单元,用于确定第一目标任务执行节点,所述第一目标任务执行节点为已接收到任务锁的任务执行节点,所述任务锁用于指示所述第一目标任务执行节点执行当前任务;

第二确定单元,用于在满足预设条件的情况下,确定第二目标任务执行节点,所述第一目标任务执行节点和所述第二目标任务执行节点为互不相同的任务执行节点,所述预设条件为目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息,所述目标时长为当前时刻和目标起始时间点的差,所述目标起始时间点为发送所述任务锁的时间点,所述任务锁释放请求信息用于指示所述第一目标任务执行节点已执行完成所述当前任务;

第一发送单元,用于将所述任务锁发送给所述第二目标任务执行节点,所述任务锁用于指示所述第二目标任务执行节点执行所述当前任务。

本发明实施例第四方面提供了一种服务器,包括:

第一接收单元,用于接收任务分发中心发送的当前任务执行时间信息;

配置单元,用于根据所述当前任务执行时间信息配置定时器,所述定时器用于对执行所述当前任务的起始时间进行计时;

第一发送单元,用于若所述定时器所计时间已到,则向任务分布式锁服务节点发送任务锁请求信息,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送任务锁,所述任务锁用于指示执行当前任务;

第二接收单元,用于若接收到所述任务锁,则根据所述任务锁执行所述当前任务。

本发明实施例第五方面提供了一种分布式定时系统,包括:配置中心,监控中心、任务分发中心、任务分布式锁服务节点以及多个任务执行节点;

所述配置中心用于将配置信息发送给所述任务分发中心,所述配置信息包括当前任务执行时间信息以及任务执行节点列表,所述任务执行节点列表包括多个用于执行所述当前任务的所述任务执行节点;

所述任务分发中心用于将所述配置信息发送给所述任务分布式锁服务节点以及所述多个任务执行节点;

所述监控中心用于对所述任务分布式锁服务节点以及所述多个任务执行节点进行监控;

所述任务分布式锁服务节点用于执行本发明实施例第一方面所示的方法,所述任务执行节点用于执行本发明实施例第二方面所示的方法。

本发明实施例第六方面提供了一种服务器,包括:

一个或多个处理器、存储器、总线系统、以及一个或多个程序,所述处理器和所述存储器通过所述总线系统相连;

其中所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,所述指令当被所述服务器执行时使所述服务器执行如本发明实施例第一方面所示的方法。

本发明实施例第七方面提供了一种服务器,包括:

一个或多个处理器、存储器、总线系统、以及一个或多个程序,所述处理器和所述存储器通过所述总线系统相连;

其中所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,所述指令当被所述服务器执行时使所述服务器执行如本发明实施例第二方面所示的方法。

本发明实施例提供了一种分布式定时的方法、服务器以及系统,所述方法包括:确定第一目标任务执行节点,在满足预设条件的情况下,确定第二目标任务执行节点,所述预设条件为目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息,将所述任务锁发送给所述第二目标任务执行节点,所述任务锁用于指示所述第二目标任务执行节点执行所述当前任务。可见,所述任务分布式锁服务节点可确定出所述第一目标任务执行节点出现宕机,则所述任务分布式锁服务节点即可将所述第一目标任务执行节点上的任务迁移至所述第二目标任务执行节点,从而可对当前任务的全局执行实例进行控制,提升了对各任务执行节点进行管理的效率。

附图说明

图1为本发明所提供的分布式定时系统的一种实施例结构示意图;

图2为本发明所提供的服务器的一种实施例结构示意图;

图3为本发明所提供的分布式定时的方法的一种实施例步骤流程图;

图4为本发明所提供的分布式定时的方法的另一种实施例步骤流程图;

图5为本发明所提供的分布式定时的方法的另一种实施例步骤流程图;

图6为本发明所提供的任务分布式锁服务节点的一种实施例结构示意图;

图7为本发明所提供的任务执行节点的一种实施例结构示意图。

具体实施方式

本发明实施例提供了一种能够提升任务迁移效率且便于管理的分布式定时的方法,为更好的理解本发明实施例所示的方法,以下首先对应用本发明实施例所示的方法的分布式定时系统的具体结构进行说明:

如图1所示,本实施例所示的分布式定时系统包括:

配置中心101、监控中心102、任务分发中心103(英文全称:taskdistributeserver,英文简称:tds),任务分布式锁服务节点104(英文全称:tasklockserver,英文简称:tls,多个任务执行节点105(英文全称:taskexecagent,英文简称:tea)。

本实施例所示的所述分布式定时系统用于执行本实施例所示的分布式定时的方法,其中,所述分布式定时系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。

其中,任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。

本实施例所示的所述配置中心101、所述监控中心102、所述任务分发中心103、所述任务分布式锁服务节点104以及所述任务执行节点105可部署至服务器上。

例如,将与所述配置中心101对应的配置信息配置到服务器上,则该服务器即可在所述分布式定时系统作为所述配置中心101。

又如,将与所述监控中心102对应的配置信息配置到服务器上,则该服务器即可在所述分布式定时系统作为所述监控中心102。

需明确的是,本实施例所示的所述配置中心101以及所述监控中心102可配置在不同的服务器上,或可配置到相同的服务器上,具体在本实施例中不做限定。

同样的,可将与所述任务分发中心103对应的配置信息配置到服务器上,则该服务器即可在所述分布式定时系统作为所述任务分发中心103。

又如,将与所述任务分布式锁服务节点104对应的配置信息配置到服务器上,则该服务器即可在所述分布式定时系统作为所述任务分布式锁服务节点104。

需明确的是,本实施例所示的所述任务分发中心103以及所述任务分布式锁服务节点104可配置在不同的服务器上,或可配置到相同的服务器上,具体在本实施例中不做限定。

同样的,可将与所述任务执行节点105对应的配置信息配置到服务器上,则该服务器即可在所述分布式定时系统作为所述任务执行节点105。

在本实施例中,不同的所述任务执行节点105配置在不同的服务器上,从而使得作为所述任务执行节点105的不同的服务器用于执行同一任务的不同实例。

以下对本实施例所示的服务器的具体结构进行详细说明:

以下结合图2所示对本实施例所示的服务器的具体结构进行说明,其中,图2为本发明所提供的服务器的一种实施例结构示意图。

所述服务器包括输入单元205、处理器203、输出单元201、通信单元207、存储器204、射频电路208等组件。

这些组件通过一条或多条总线进行通信。本领域技术人员可以理解,图2中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

所述服务器包括:

输出单元201,用于输出待显示的图像。

具体的,所述输出单元201包括但不限于影像输出单元2011和声音输出单元2012。

所述影像输出单元2011用于输出文字、图片和/或视频。所述影像输出单元2011可包括显示面板,例如采用液晶显示器(英文全称:liquidcrystaldisplay,英文简称:lcd)、有机发光二极管(英文全称:organiclight-emittingdiode,英文简称:oled)、场发射显示器(英文全称:fieldemissiondisplay,英文简称fed)等形式来配置的显示面板。或者所述影像输出单元2011可以包括反射式显示器,例如电泳式(electrophoretic)显示器,或利用光干涉调变技术(英文全称:interferometricmodulationoflight)的显示器。

所述影像输出单元2011可以包括单个显示器或不同尺寸的多个显示器。在本发明的具体实施方式中,触摸屏亦可同时作为输出单元201的显示面板。

例如,当触摸屏检测到在其上的触摸或接近的手势操作后,传送给处理器203以确定触摸事件的类型,随后处理器203根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图2中,输入单元205与输出单元201是作为两个独立的部件来实现服务器的输入和输出功能,但是在某些实施例中,可以将触摸屏与显示面板集成一体而实现服务器的输入和输出功能。例如,所述影像输出单元2011可以显示各种图形化用户接口(英文全称:graphicaluserinterface,英文简称gui)以作为虚拟控制组件,包括但不限于窗口、卷动轴、图标及剪贴簿,以供用户通过触控方式进行操作。

在本发明具体实施方式中,所述影像输出单元2011包括滤波器及放大器,用来将处理器203所输出的视频滤波及放大。声音输出单元2012包括数字模拟转换器,用来将处理器203所输出的音频信号从数字格式转换为模拟格式。

处理器203,用于运行相应的代码,对接收信息进行处理,以生成并输出相应的界面。

具体的,所述处理器203为服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行服务器的各种功能和/或处理数据。所述处理器203可以由集成电路(英文全称:integratedcircuit,英文简称:ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。

举例来说,所述处理器203可以仅包括中央处理器(英文全称:centralprocessingunit,英文简称:cpu),也可以是图形处理器(英文全称:graphicsprocessingunit,英文简称:gpu),数字信号处理器(英文全称:digitalsignalprocessor,英文简称:dsp)、及通信单元中的控制芯片(例如基带芯片)的组合。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。

存储器204,用于存储代码和数据,代码供处理器203运行。

具体的,存储器204可用于存储软件程序以及模块,处理器203通过运行存储在存储器204的软件程序以及模块,从而执行服务器的各种功能应用以及实现数据处理。存储器204主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序,比如声音播放程序、图像播放程序等等;数据存储区可存储根据服务器的使用所创建的数据(比如音频数据、电话本等)等。

在本发明具体实施方式中,存储器204可以包括易失性存储器,例如非挥发性动态随机存取内存(英文全称:nonvolatilerandomaccessmemory,英文简称nvram)、相变化随机存取内存(英文全称:phasechangeram,英文简称pram)、磁阻式随机存取内存(英文全称:magetoresistiveram,英文简称mram)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(英文全称:electricallyerasableprogrammableread-onlymemory,英文简称eeprom)、闪存器件,例如反或闪存(英文全称:norflashmemory)或是反及闪存(英文全称:nandflashmemory)。

非易失存储器储存处理器203所执行的操作系统及应用程序。所述处理器203从所述非易失存储器加载运行程序与数据到内存并将数字内容储存于大量储存装置中。所述操作系统包括用于控制和管理常规系统任务,例如内存管理、存储设备控制、电源管理等,以及有助于各种软硬件之间通信的各种组件和/或驱动器。

在本发明实施方式中,所述操作系统可以是google公司的android系统、apple公司开发的ios系统或microsoft公司开发的windows操作系统等,或者是vxworks这类的嵌入式操作系统。

所述应用程序包括安装在服务器上的任何应用,包括但不限于浏览器、电子邮件、即时消息服务、文字处理、键盘虚拟、窗口小部件(widget)、加密、数字版权管理、语音识别、语音复制、定位(例如由全球定位系统提供的功能)、音乐播放等等。

输入单元205,用于实现用户与服务器的交互和/或信息输入到服务器中。

例如,所述输入单元205可以接收用户输入的数字或字符信息,以产生与用户设置或功能控制有关的信号输入。在本发明具体实施方式中,输入单元205可以是触摸屏,也可以是其他人机交互界面,例如实体输入键、麦克风等,还可是其他外部信息撷取装置,例如摄像头等。

本发明实施例所示的触摸屏,可收集用户在其上触摸或接近的操作动作。比如用户使用手指、触笔等任何适合的物体或附件在触摸屏上或接近触摸屏的位置的操作动作,并根据预先设定的程式驱动相应的连接装置。可选的,触摸屏可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸操作,并将检测到的触摸操作转换为电信号,以及将所述电信号传送给触摸控制器;触摸控制器从触摸检测装置上接收所述电信号,并将它转换成触点坐标,再送给所述处理器203。

所述触摸控制器还可以接收处理器203发来的命令并执行。此外,所述触摸屏可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触摸屏。

在本发明的其他实施方式中,所述输入单元205所采用的实体输入键可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。麦克风形式的输入单元205可以收集用户或环境输入的语音并将其转换成电信号形式的、处理器203可执行的命令。

在本发明的其他一些实施方式中,所述输入单元205还可以是各类传感器件,例如霍尔器件,用于侦测服务器的物理量,例如力、力矩、压力、应力、位置、位移、速度、加速度、角度、角速度、转数、转速以及工作状态发生变化的时间等,转变成电量来进行检测和控制。其他的一些传感器件还可以包括重力感应计、三轴加速计、陀螺仪、电子罗盘、环境光传感器、接近传感器、温度传感器、湿度传感器、压力传感器、心率传感器、指纹识别器等。

通信单元207,用于建立通信信道,使服务器通过所述通信信道以连接至远程服务器,并从所述远程服务器下媒体数据。所述通信单元207可以包括无线局域网(英文全称:wirelesslocalareanetwork,英文简称:wirelesslan)模块、蓝牙模块、基带模块等通信模块,以及所述通信模块对应的射频(英文全称:radiofrequency,英文简称:rf)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(英文全称:widebandcodedivisionmultipleaccess,英文简称:w-cdma)及/或高速下行封包存取(英文全称:highspeeddownlinkpacketaccess,英文简称hsdpa)。所述通信模块用于控制服务器中的各组件的通信,并且可以支持直接内存存取。

在本发明的不同实施方式中,所述通信单元207中的各种通信模块一般以集成电路芯片(英文全称:integratedcircuitchip)的形式出现,并可进行选择性组合,而不必包括所有通信模块及对应的天线组。例如,所述通信单元207可以仅包括基带芯片、射频芯片以及相应的天线以在一个蜂窝通信系统中提供通信功能。经由所述通信单元207建立的无线通信连接,例如无线局域网接入或wcdma接入,所述服务器可以连接至蜂窝网(英文全称:cellularnetwork)或因特网。在本发明的一些可选实施方式中,所述通信单元207中的通信模块,例如基带模块可以集成到处理器203中,典型的如高通(qualcomm)公司提供的apq+mdm系列平台。

射频电路208,用于信息收发或通话过程中接收和发送信号。例如,将基站的下行信息接收后,给处理器203处理;另外,将设计上行的数据发送给基站。通常,所述射频电路208包括用于执行这些功能的公知电路,包括但不限于天线系统、射频收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、编解码(codec)芯片组、用户身份模块(sim)卡、存储器等等。此外,射频电路208还可以通过无线通信与网络和其他设备通信。

所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:globalsystemofmobilecommunication,英文简称:gsm)、通用分组无线服务(英文全称:generalpacketradioservice,英文简称:gprs)、码分多址(英文全称:codedivisionmultipleaccess,英文简称:cdma)、宽带码分多址(英文全称:widebandcodedivisionmultipleaccess,英文简称:wcdma)、高速上行行链路分组接入技术(英文全称:highspeeduplinkpacketaccess,英文简称:hsupa)、长期演进(英文全称:longtermevolution,英文简称:lte)、电子邮件、短消息服务(英文全称:shortmessagingservice,英文简称:sms)等。

电源209,用于给服务器的不同部件进行供电以维持其运行。作为一般性理解,所述电源209可以是内置的电池,例如常见的锂离子电池、镍氢电池等,也包括直接向服务器供电的外接电源,例如ac适配器等。在本发明的一些实施方式中,所述电源209还可以作更为广泛的定义,例如还可以包括电源管理系统、充电系统、电源故障检测电路、电源转换器或逆变器、电源状态指示器(如发光二极管),以及与服务器的电能生成、管理及分布相关联的其他任何组件。

基于图1所示的分布式定时系统以及图2所示的服务器,以下结合图3所示,对本发明实施例所示的分布式定时的方法的具体执行流程进行详细说明:

步骤301、配置中心对当前任务进行配置以生成配置信息。

具体的,开发人员可通过所述配置中心实现对当前任务的配置。

更具体的,开发人员可向所述配置中心输入所述配置信息所包括的当前任务的执行参数以及当前任务执行时间信息等参数信息。

其中,所述当前任务的执行参数用于指示所述任务执行节点105如何执行所述当前任务。

所述当前任务执行时间信息用于指示各所述任务执行节点105执行所述当前任务的时间。

本实施例所示的所述配置信息还包括任务执行节点列表,所述任务执行节点列表包括多个用于执行所述当前任务的所述任务执行节点。

即本实施例所示的所述任务执行节点列表建立了当前任务和用于执行所述当前任务的任务执行节点的对应关系。

以下对如何配置所述任务执行节点列表进行说明:

首先确定执行当前任务所需要的实例的最大数目n1;

确定所述任务执行节点列表所包括的任务执行列表的数目为n2,为保障即便所述任务执行节点列表中用于执行当前任务的任一任务执行节点宕机,能够保障已宕机的该任务执行节点上所执行的当前任务的实例能够迁移,则本实施例所示的所述任务执行节点列表所包括的任务执行列表的数目n2需要大于执行当前任务所需要的实例的最大数目n1,从而使得即便所述任务执行节点列表中任一执行所述当前任务的任务执行节点出现宕机,则用于执行当前任务的任务执行节点能够迅速将任务迁移至所述任务执行节点列表中另一任务执行节点上,具体任务迁移过程请详见下述所示,具体在本步骤中不做赘述。

以下对如何将任务执行节点配置到所述任务执行节点列表中进行详细说明:

确定目标任务执行节点,所述目标任务执行节点为需要配置到所述任务执行节点列表中的任务执行节点。

可选的,可由所述任务分发中心确定所述目标任务执行节点;

具体的,可由所述任务分发中心获取配置有所述目标任务执行节点的服务器的ip地址,并将已获取到的服务器的ip地址发送至所述配置中心。

可选的,可由任务执行节点向所述任务分发中心发送请求任务配置信息以请求成为所述目标任务执行节点。

具体的,所述任务执行节点向所述任务分发中心所发送的所述请求任务配置信息中可包括所述任务执行节点的ip地址,以使所述任务分发中心将已获取到的服务器的ip地址发送至所述配置中心。

所述目标任务执行节点将其ip地址发送给所述任务分发中心之后,所述目标任务执行节点可向所述任务分发中心进行注册,所述任务分发中心再将注册成功的目标任务执行节点的ip地址发送给所述配置中心,以使所述配置中心能够创建所述任务执行节点列表。

需明确的是,本实施例对所述任务执行节点列表的创建方式的说明为可选示例,不做限定,在具体应用中,也可采用其他方式进行创建,例如,可由开发人员直接将任务执行节点的ip地址输入至所述配置中心等。

还需明确的是,本实施例对所述配置信息所包括的内容的说明为可选的示例,不做限定,只要本实施例所示的所述分布式定时系统各节点能够根据所述配置信息实现分布式定时的方法的执行即可,例如,所述配置信息还可包括任务脚本信息等。

步骤302、所述配置中心将所述配置信息发送给所述任务分发中心。

步骤303、所述任务分发中心将所述配置信息发送给所述任务分布式锁服务节点。

本实施例中,所述任务分发中心在接收到所述配置信息后,即可将已接收到的所述配置信息发送给所述任务分布式锁服务节点。

步骤304、所述任务分布式锁服务节点检查所述任务分布式锁服务节点所存储的配置信息与所述任务分发中心所存储的配置信息是否同步,若否,则执行步骤305,若是,则执行步骤306。

本实施例中,所述任务分布式锁服务节点在执行本实施例所示的流程的过程中,需要对所述任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息是否同步进行判断;

若所述任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息已同步,则直接执行本实施例所示的步骤306,若任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息未同步,则执行步骤305。

步骤305、所述任务分布式锁服务节点更新所述配置信息。

本实施例中,在所述任务分布式锁服务节点确定出任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息未同步的情况下,则所述任务分布式锁服务节点向所述任务分发中心获取最新的所述配置信息,则使得所述任务分布式锁服务节点与所述任务分发中心同步。

步骤306、所述任务分布式锁服务节点配置任务锁资源。

在所述任务分布式锁服务节点所存储的配置信息与所述任务分发中心所存储的配置信息同步的情况下,执行本实施例所示的步骤306。

本实施例中,由以上所示可知,本实施例所示的所述配置信息包括指定数目,其中,所述指定数目用于指示执行所述当前任务的实例的数目。

例如,本实施例所示的配置信息所包括的指定数目为10,则说明用于执行当前任务的实例的数目为10个,即通过10个实例执行所述当前任务。

本实施例所示的所述任务分布式锁服务节点可根据所述指定数目配置任务锁资源。

具体的,本实施例所示的所述任务锁资源包括至少一个所述任务锁,且所述任务锁资源所包括的所述任务锁的数目与所述实例的数目相等。

本实施例所示的任务锁保障了所述当前任务的一个实例只会在一个任务执行节点执行,采用本实施例所示的任务锁保障了所述当前任务的一个实例在同一时间,只会在一个任务执行节点执行。

例如,若用于执行当前任务的实例的数目为10个,则本实施例所示的所述任务锁资源所包括的所述任务锁的数目为10个。

需明确的是,本实施例对用于执行当前任务的实例的数目的说明为可选的示例,不做限定。

本实施例所示的所述任务锁资源包括任务实例数原子,所述任务实例数原子用于对所述任务锁资源所包括的任务锁进行计数。

本实施例所示的所述任务实例数原子在初始状态下,即所述任务分布式锁服务节点未向所述任务执行节点发送任务锁的情况下,则任务实例数原子所计的数目与所述实例的数目相等。

步骤307、所述任务分发中心将所述配置信息发送给各任务执行节点。

本实施例所示的所述配置信息中包括有当前任务执行时间信息,所述当前任务执行时间信息的具体说明请详见上述步骤所示,具体在本步骤中不做赘述。

具体的,本实施例所示的所述任务分发中心确定所述任务执行节点列表,所述任务分发中心可将所述配置信息分别发送给所述任务执行节点列表上的各任务执行节点。

步骤308、所述任务执行节点载入定时器。

具体的,各所述任务执行节点在获取到所述当前任务执行时间信息后,即可根据所述当前任务执行时间信息配置所述定时器。

其中,所述定时器用于对执行所述当前任务的起始时间进行计时。

具体的,若所述定时器计时时间已到,则说明所述任务执行节点所执行的当前任务到期,则所述任务执行节点需要执行所述当前任务。

若所述定时器计时时间未到,则说明所述任务执行节点所执行的当前任务未到期,则所述任务执行节点不需要执行所述当前任务。

步骤309、所述任务执行节点向任务分布式锁服务节点发送任务锁请求信息。

本实施例中,若所述定时器所计时间已到,则所述任务执行节点即可确定所述任务执行节点所执行的当前任务到期,在本实施例中,在所述任务执行节点确定需要执行所述当前任务的情况下,本实施例所示的所述任务执行节点不会直接执行所述当前任务,而是首先执行本实施例所示的步骤309。

其中,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送所述任务锁,所述任务锁用于指示所述任务执行节点执行当前任务。

可见,采用本实施例所示的方法,所述任务执行节点在确定所述定时器到时,则需要向所述任务分布式锁服务节点获取任务锁,若所述任务执行节点没有获取到所述任务锁,则所述任务执行节点不会执行所述当前任务,只有在所述任务执行节点已接收到所述任务锁,才会执行所述当前任务。

步骤310、所述任务分布式锁服务节点接收所述任务锁请求信息。

步骤311、所述任务分布式锁服务节点向第一目标任务执行节点发送任务锁。

具体的,本实施例所示的所述任务分布式锁服务节点根据所述任务锁请求信息确定所述任务锁资源中剩余的所述任务锁的数目是否大于或等于1。

由上述步骤所示可知,本实施例所示的所述任务实例数原子用于对任务锁进行计数,具体说明请详见上述步骤所示,具体在本步骤中不做赘述。

所述任务实例数原子所计的数目说明了执行所述当前任务所需要的任务执行节点的数目。

本实施例所示的所述任务分布式锁服务节点在接收到所述任务锁请求信息后,首先确定所述任务实例数原子所计的数目是否大于或等于1,若所述任务实例数原子所计的数目是否大于或等于1,则说明执行所述当前任务还需要至少一个任务执行节点,若所述任务实例数原子所计的数目小于1,则说明执行所述当前任务已不需要任务执行节点。

在本实施例中,若所述任务实例数原子所计的数目大于或等于1,即所述任务锁资源中剩余的所述任务锁的数目大于或等于1,则所述任务分布式锁服务节点确定第一目标任务执行节点。

以下对所述任务分布式锁服务节点确定所述第一目标任务执行节点的具体过程进行详细说明:

可选的,若所述任务分布式锁服务节点接收到一个任务执行节点发送的任务锁请求信息,则在所述任务实例数原子所计的数目大于或等于1的情况下,所述任务分布式锁服务节点即可确定发送所述任务锁请求信息的所述任务执行节点为所述第一目标任务执行节点。

可选的,若所述任务分布式锁服务节点接收到多个任务执行节点发送的任务锁请求信息,则所述任务分布式锁服务节点可创建排序列表。

其中,所述排序列表包括多个已发送所述任务锁请求信息的所述任务执行节点。

具体的,所述排序列表为按接收到的所述任务锁请求信息的先后顺序对多个所述任务执行节点进行排序的列表。

更具体的,所述任务分布式锁服务节点确定排序在所述排序列表中最高优先级的任务执行节点为所述第一目标任务执行节点。

可选的,所述任务分布式锁服务节点也可确定所述排序列表中随机的一个任务执行节点为所述第一目标任务执行节点。

本实施例对确定所述第一目标任务执行节点的具体方式的说明为可选的示例,不做限定,只要所述第一目标任务执行节点为发送所述任务锁请求信息的任务执行节点即可。

所述任务分布式锁服务节点在确定出所述第一目标任务执行节点后,即可向所述第一目标任务执行节点发送所述任务锁资源的中的任一任务锁。

需明确的是,本实施例对所述排序列表基于接收到所述任务锁请求信息的先后顺序进行排序的说明为可选的示例,不做限定,在具体应用中,所述排序列表也可基于其他排序顺序对所述任务执行节点进行排序,例如,基于执行节点剩余的内存容量等。

步骤312、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目减一。

具体的,本实施例所示的所述任务分布式锁服务节点控制所述任务实例数原子所计的数目减一。

可见,只要本实施例所示的所述任务分布式锁服务节点向所述第一目标任务执行节点发送一个任务锁,则所述任务分布式锁服务节点即可控制所述任务实例数原子所计的数目减一。

在所述任务分布式锁服务节点将所述任务锁发送给所述第一目标任务执行节点后,可能的执行流程有两种,一种如步骤313至步骤315所示,另一种,如步骤316至步骤317所示。

步骤313、所述任务分布式锁服务节点将所述任务锁发送给所述第二目标任务执行节点。

具体的,所述任务分布式锁服务节点将所述锁资源发送给所述第一目标任务执行节点后,即可对目标时长进行计时。

更具体的,所述任务分布式锁服务节点可配置有计时器,所述计时器用于对所述目标时长进行计时。

所述目标时长为当前时刻和目标起始时间点的差,所述目标起始时间点为所述任务分布式锁服务节点发送所述任务锁的时间点。

所述任务分布式锁服务节点判断在所述目标时长内是否接收到所述第一目标任务执行节点发送的任务锁释放请求信息,其中,所述第一目标任务执行节点在确定出所述第一目标任务执行节点已将对应的当前任务的实力执行完成后,会向所述任务分布式锁服务节点发送所述任务锁释放请求信息,以使所述任务分布式锁服务节点根据所述任务锁释放请求信息会确定出所述第一目标任务执行节点已将对应的当前任务的实力执行完成。

本步骤中,若所述任务分布式锁服务节点判断出满足预设条件的情况下,则确定所述第二目标任务执行节点。

其中,所述预设条件为所述计时器在所述目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息。

可选的,本实施例所示开发人员可直接向所述任务分布式锁服务节点输入所述预置时长,或所述开发人员可向配置中心101或所述任务分发中心103发送所述预置时长,具体在本实施例中不做限定,只要所述任务分布式锁服务节点能够获取到所述预置时长即可。

在满足所述预设条件的情况下,则说明所述第一目标任务执行节点长时间的没有执行完成所述当前任务,则说明所述第一目标任务执行节点已发生宕机,即所述第一目标任务执行节点已无法继续进行当前任务的执行。

本实施例所示的所述任务分布式锁服务节点在确定满足所述预设条件的情况下,为了所述当前任务的正常执行,则确定第二目标任务执行节点。

由上述所示可知,本实施例所示的所述任务分布式锁服务节点与所述任务分发中心同步配置有所述配置信息,即所述任务分布式锁服务节点与所述任务分发中心均配置有所述配置信息所包括的所述任务执行节点列表。

在所述任务分布式锁服务节点确定出位于所述任务执行节点列表中的第一目标任务执行节点宕机时,则所述任务分布式锁服务节点即可在所述任务执行节点列表中确定第二目标任务执行节点。

本实施例对如何在所述任务执行节点列表中确定所述第二目标任务执行节点的不做限定,只要所述第一目标任务执行节点和所述第二目标任务执行节点为互不相同的任务执行节点即可。

可选的,本实施例所示的所述任务分布式锁服务节点可根据所述排序列表确定所述第二目标任务节点,所述排序列表的具体说明请详见上述步骤所示,具体在本步骤中不做赘述。

在确定所述第一目标任务执行节点的过程中,所述任务分布式锁服务节点已确定出所述排序列表中的最高优先级的任务执行节点为所述第一目标任务执行节点时,则所述任务分布式锁服务节点可将所述第一目标任务执行节点删除,则在本步骤中,所述任务分布式锁服务节点可确定出所述排序列表中最高优先级的所述任务执行节点为所述第二目标任务执行节点。

具体的,本实施例所示的所述任务分布式锁服务节点在确定出满足所述预设条件的情况下,则控制所述任务锁资源所包括的所述任务锁的数目加一。

更具体的,本实施例所示的所述任务分布式锁服务节点将所述任务锁资源所包括的任一所述任务锁发送给所述第二目标任务执行节点。

步骤314、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目减一。

本实施例中,在所述任务分布式锁服务节点将所述任务所发送给所述第二目标任务执行节点后,即可控制所述任务实例数原子所计的数目减一。

可见,只要本实施例所示的所述任务分布式锁服务节点向所述第二目标任务执行节点发送一个任务锁,则所述任务分布式锁服务节点即可控制所述任务实例数原子所计的数目减一。

步骤315、所述第二目标任务节点执行所述当前任务。

本实施例中,在所述第二任务节点接收到所述任务锁的情况下,则所述第二目标任务执行节点即可根据已接收到的所述配置信息执行当前任务。

步骤316、所述第一目标任务执行节点向所述任务分布式锁服务节点发送任务锁释放请求信息。

本实施例中,所述第一目标任务执行节点在接收到所述任务锁的情况下,即可判断所述当前任务是否执行完成。

可选的,所述第一目标任务执行节点在接收到所述任务锁的情况下,可周期性的判断所述当前任务是否执行完成。

若所述第一目标任务执行节点判断出所述当前任务执行完成,则所述第一目标任务执行节点即可生成所述任务锁释放请求信息。

所述第一目标任务执行节点即可将所述任务锁释放请求信息发送给所述任务分布式锁服务节点,以使所述任务分布式锁服务节点根据所述任务锁释放请求信息确定出所述第一目标任务执行节点执行所述当前任务完成。

其中,本实施例所示的所述第一目标任务执行节点可将状态信息发送给所述任务分发中心和监控中心,所述状态信息用于指示所述第一目标任务执行节点执行所述当前任务的状态,从而使得所述监控中心能够根据所述第一目标任务执行节点上报的所述状态信息就可以做相应的告警以及观察任务的执行情况。

步骤317、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目加一。

具体的,本实施例所示的所述任务分布式锁服务节点在接收到所述任务锁释放请求信息时,即可确定出所述第一目标任务执行节点已执行完成所述当前任务,则本实施例所示的所述任务分布式锁服务节点控制所述任务实例数原子所计的数目加一。

本实施例中,当拥有执行所述当前任务的所有任务执行节点均将所述任务锁释放请求信息发送给所述任务分布式锁服务节点时,则所述任务分布式锁服务节点的所述任务实例数原子所计的数目等于所述实例的数目,所述实例的数目的具体说明请详见上述步骤所示,具体在本实施例中不做赘述。

本实施例对本实施例所示的方法的应用场景不做限定,例如,本实施例所示的方法可适应于复杂的业务系统中,比如需要后台大量的批处理任务,无法在单台服务器上直接完成的任务,任务之间执行有依赖关系的,或者多个任务同时去抢占消费消息队列中的消息等定时任务,业务方在是用本实施例所示的方法,可应对这些大量的多实例任务。

在具体应用本实施例所示的方法的应用场景中,能够承载上百个任务种类稳定的运营,其中包括企点业务和boss业务背后的数据相关的业务定时任务,无论是对多实例任务转移以及监控做到完美的解决,开发人员只需要关注业务逻辑的实现以及对实例的数量进行配置,无需关注监控以及动态迁移。

采用本实施例所示的方法的有益效果在于:

本实施例所示的各用于执行当前任务的所述任务执行节点之间不是相互孤立的,所述任务分布式锁服务节点可对各所述任务执行节点进行管理,所述任务分布式锁服务节点可将任务锁发生给当前需要进行当前任务执行的第一目标任务执行节点,则所述第一目标任务执行节点在接收到所述任务锁的情况下,则进行当前任务的执行,若所述任务分布式锁服务节点超过所述预置时长没有接收到所述第一目标任务节点发送的所述任务锁释放请求信息,则所述任务分布式锁服务节点即可直接确定出所述第一目标任务执行节点出现宕机,则本实施例所示的所述任务分布式锁服务节点即可将所述第一目标任务执行节点上的任务可迁移至所述第二目标任务执行节点,从而可对当前任务的全局执行实例进行控制,提升了对各任务执行节点进行管理的效率,且本实施例所示的方法能够在当前任务按照正常周期执行的情况下,若出现宕机,则能够重新调整定时频率,保障多实例的正常执行,且能够对实例数量进行灵活配置,更高效。

以下结合图4所示对所述任务分布式锁服务节点执行所述分布式定时的方法的具体流程进行详细说明:

步骤401、所述任务分布式锁服务节点接收任务分发中心发送的配置信息。

所述配置信息包括当前任务的执行参数以及当前任务执行时间信息等参数信息,且所述配置信息还包括任务执行节点列表,所述任务执行节点列表包括多个用于执行所述当前任务的所述任务执行节点,本实施例所示的所述任务执行节点列表建立了当前任务和用于执行所述当前任务的任务执行节点的对应关系。

步骤402、所述任务分布式锁服务节点检查所述任务分布式锁服务节点所存储的配置信息与所述任务分发中心所存储的配置信息是否同步,若否,则执行步骤403,若是,则执行步骤404。

本实施例中,所述任务分布式锁服务节点在执行本实施例所示的流程的过程中,需要对所述任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息是否同步进行判断;

若所述任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息已同步,则直接执行本实施例所示的步骤404,若任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息未同步,则执行步骤403。

步骤403、所述任务分布式锁服务节点更新所述配置信息。

本实施例中,在所述任务分布式锁服务节点确定出任务分布式锁服务节点自身所存储的配置信息与所述任务分发中心所存储的配置信息未同步的情况下,则所述任务分布式锁服务节点向所述任务分发中心获取最新的所述配置信息,则使得所述任务分布式锁服务节点与所述任务分发中心同步。

步骤404、所述任务分布式锁服务节点配置任务锁资源。

在所述任务分布式锁服务节点所存储的配置信息与所述任务分发中心所存储的配置信息同步的情况下,执行本实施例所示的步骤404。

本实施例中,由以上所示可知,本实施例所示的所述配置信息包括指定数目,其中,所述指定数目用于指示执行所述当前任务的实例的数目。

具体的,本实施例所示的所述任务锁资源包括至少一个所述任务锁,且所述任务锁资源所包括的所述任务锁的数目与所述实例的数目相等。

本实施例所示的任务锁保障了所述当前任务的一个实例只会在一个任务执行节点执行,采用本实施例所示的任务锁保障了所述当前任务的一个实例在同一时间,只会在一个任务执行节点执行。

本实施例所示的所述任务锁资源包括任务实例数原子,所述任务实例数原子用于对所述任务锁资源所包括的任务锁进行计数。

本实施例所示的所述任务实例数原子在初始状态下,即所述任务分布式锁服务节点未向所述任务执行节点发送任务锁的情况下,则任务实例数原子所计的数目与所述实例的数目相等。

步骤405、所述任务分布式锁服务节点接收任务锁请求信息。

具体的,各所述任务执行节点在获取到所述当前任务执行时间信息后,即可根据所述当前任务执行时间信息配置所述定时器。

其中,所述定时器用于对执行所述当前任务的起始时间进行计时。

具体的,若所述定时器计时时间已到,则说明所述任务执行节点所执行的当前任务到期,则所述任务执行节点需要执行所述当前任务。

若所述定时器计时时间未到,则说明所述任务执行节点所执行的当前任务未到期,则所述任务执行节点不需要执行所述当前任务。

本实施例中,若所述定时器所计时间已到,则所述任务执行节点即可确定所述任务执行节点所执行的当前任务到期,在本实施例中,在所述任务执行节点确定需要执行所述当前任务的情况下,本实施例所示的所述任务执行节点不会直接执行所述当前任务,而是首先将所述任务锁请求信息发送给所述任务分布式锁服务节点。

其中,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送所述任务锁,所述任务锁用于指示所述任务执行节点执行当前任务。

可见,采用本实施例所示的方法,所述任务执行节点在确定所述定时器到时,则需要向所述任务分布式锁服务节点获取任务锁,若所述任务执行节点没有获取到所述任务锁,则所述任务执行节点不会执行所述当前任务,只有在所述任务执行节点已接收到所述任务锁,才会执行所述当前任务。

步骤406、所述任务分布式锁服务节点判断所述任务锁资源中剩余的任务锁的数目是否大于或等于1,若是,则执行步骤407,若否,则执行步骤409。

具体的,本实施例所示的所述任务实例数原子用于对任务锁进行计数,具体说明请详见上述步骤所示,具体在本步骤中不做赘述。

所述任务实例数原子所计的数目说明了执行所述当前任务所需要的任务执行节点的数目。

本实施例所示的所述任务分布式锁服务节点在接收到所述任务锁请求信息后,首先确定所述任务实例数原子所计的数目是否大于或等于1,若所述任务实例数原子所计的数目是否大于或等于1,则说明执行所述当前任务还需要至少一个任务执行节点,若所述任务实例数原子所计的数目小于1,则说明执行所述当前任务已不需要任务执行节点。

步骤407、所述任务分布式锁服务节点确定第一目标任务执行节点。

以下对所述任务分布式锁服务节点确定所述第一目标任务执行节点的具体过程进行详细说明:

可选的,若所述任务分布式锁服务节点接收到一个任务执行节点发送的任务锁请求信息,则在所述任务实例数原子所计的数目大于或等于1的情况下,所述任务分布式锁服务节点即可确定发送所述任务锁请求信息的所述任务执行节点为所述第一目标任务执行节点。

可选的,若所述任务分布式锁服务节点接收到多个任务执行节点发送的任务锁请求信息,则所述任务分布式锁服务节点可创建排序列表。

其中,所述排序列表包括多个已发送所述任务锁请求信息的所述任务执行节点。

具体的,所述排序列表为按接收到的所述任务锁请求信息的先后顺序对多个所述任务执行节点进行排序的列表。

更具体的,所述任务分布式锁服务节点确定排序在所述排序列表中最高优先级的任务执行节点为所述第一目标任务执行节点。

可选的,所述任务分布式锁服务节点也可确定所述排序列表中随机的一个任务执行节点为所述第一目标任务执行节点。

本实施例对确定所述第一目标任务执行节点的具体方式的说明为可选的示例,不做限定,只要所述第一目标任务执行节点为发送所述任务锁请求信息的任务执行节点即可。

步骤408、所述任务分布式锁服务节点将任务锁发送给所述第一目标任务执行节点。

本实施例所示的所述任务分布式锁服务节点通过所述任务锁指示所述第一目标任务执行节点可执行所述当前任务。

步骤409、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目减一。

具体的,本实施例所示的所述任务分布式锁服务节点控制所述任务实例数原子所计的数目减一。

可见,只要本实施例所示的所述任务分布式锁服务节点向所述第一目标任务执行节点发送一个任务锁,则所述任务分布式锁服务节点即可控制所述任务实例数原子所计的数目减一。

步骤410、所述任务分布式锁服务节点确定任务锁分配失败。

具体的,在所述任务分布式锁服务节点确定出所述任务锁资源中剩余的任务锁的数目小于1的情况下,则说明所述用于执行所述当前任务的任务执行节点已分配完成,则无需调用新的任务执行节点进行当前任务的执行,则所述任务分布式锁服务节点确定任务锁分配失败。

具体的,所述任务分布式锁服务节点可将任务锁分配失败的情况,上报给监控中心。

步骤411、所述任务分布式锁服务节点判断是否满足预设条件,若是,则执行步骤412。

体的,所述任务分布式锁服务节点将所述锁资源发送给所述第一目标任务执行节点后,即可对目标时长进行计时。

更具体的,所述任务分布式锁服务节点可配置有计时器,所述计时器用于对所述目标时长进行计时。

所述目标时长为当前时刻和目标起始时间点的差,所述目标起始时间点为所述任务分布式锁服务节点发送所述任务锁的时间点。

所述任务分布式锁服务节点判断在所述目标时长内是否接收到所述第一目标任务执行节点发送的任务锁释放请求信息,其中,所述第一目标任务执行节点在确定出所述第一目标任务执行节点已将对应的当前任务的实力执行完成后,会向所述任务分布式锁服务节点发送所述任务锁释放请求信息,以使所述任务分布式锁服务节点根据所述任务锁释放请求信息会确定出所述第一目标任务执行节点已将对应的当前任务的实力执行完成。

其中,所述预设条件为所述计时器在所述目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息。

可选的,本实施例所示开发人员可直接向所述任务分布式锁服务节点输入所述预置时长,或所述开发人员可向配置中心101或所述任务分发中心103发送所述预置时长,具体在本实施例中不做限定,只要所述任务分布式锁服务节点能够获取到所述预置时长即可。

在满足所述预设条件的情况下,则说明所述第一目标任务执行节点长时间的没有执行完成所述当前任务,则说明所述第一目标任务执行节点已发生宕机,即所述第一目标任务执行节点已无法继续进行当前任务的执行。

步骤412、所述任务分布式锁服务节点确定所述第二目标任务执行节点。

本实施例所示的所述任务分布式锁服务节点在确定满足所述预设条件的情况下,为了所述当前任务的正常执行,则确定第二目标任务执行节点。

由上述所示可知,本实施例所示的所述任务分布式锁服务节点与所述任务分发中心同步配置有所述配置信息,即所述任务分布式锁服务节点与所述任务分发中心均配置有所述配置信息所包括的所述任务执行节点列表。

在所述任务分布式锁服务节点确定出位于所述任务执行节点列表中的第一目标任务执行节点宕机时,则所述任务分布式锁服务节点即可在所述任务执行节点列表中确定第二目标任务执行节点。

本实施例对如何在所述任务执行节点列表中确定所述第二目标任务执行节点的不做限定,只要所述第一目标任务执行节点和所述第二目标任务执行节点为互不相同的任务执行节点即可。

可选的,本实施例所示的所述任务分布式锁服务节点可根据所述排序列表确定所述第二目标任务节点,所述排序列表的具体说明请详见上述步骤所示,具体在本步骤中不做赘述。

在确定所述第一目标任务执行节点的过程中,所述任务分布式锁服务节点已确定出所述排序列表中的最高优先级的任务执行节点为所述第一目标任务执行节点时,则所述任务分布式锁服务节点可将所述第一目标任务执行节点删除,则在本步骤中,所述任务分布式锁服务节点可确定出所述排序列表中最高优先级的所述任务执行节点为所述第二目标任务执行节点。

步骤413、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目加一。

具体的,本实施例所示的所述任务分布式锁服务节点在确定出满足所述预设条件的情况下,则控制所述任务锁资源所包括的所述任务锁的数目加一。

步骤414、所述任务分布式锁服务节点向所述第二目标任务执行节点发送任务锁。

本实施例所示的所述任务分布式锁服务节点将所述任务锁资源所包括的任一所述任务锁发送给所述第二目标任务执行节点。

步骤415、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目减一。

本实施例中,在所述任务分布式锁服务节点将所述任务所发送给所述第二目标任务执行节点后,即可控制所述任务实例数原子所计的数目减一。

可见,只要本实施例所示的所述任务分布式锁服务节点向所述第二目标任务执行节点发送一个任务锁,则所述任务分布式锁服务节点即可控制所述任务实例数原子所计的数目减一。

步骤416、所述任务分布式锁服务节点接收所述第一目标任务执行节点发送的任务锁释放请求信息。

本实施例中,所述第一目标任务执行节点在接收到所述任务锁的情况下,即可判断所述当前任务是否执行完成。

可选的,所述第一目标任务执行节点在接收到所述任务锁的情况下,可周期性的判断所述当前任务是否执行完成。

若所述第一目标任务执行节点判断出所述当前任务执行完成,则所述第一目标任务执行节点即可生成所述任务锁释放请求信息。

所述第一目标任务执行节点即可将所述任务锁释放请求信息发送给所述任务分布式锁服务节点,以使所述任务分布式锁服务节点根据所述任务锁释放请求信息确定出所述第一目标任务执行节点执行所述当前任务完成。

其中,本实施例所示的所述第一目标任务执行节点可将状态信息发送给所述任务分发中心和监控中心,所述状态信息用于指示所述第一目标任务执行节点执行所述当前任务的状态,从而使得所述监控中心能够根据所述第一目标任务执行节点上报的所述状态信息就可以做相应的告警以及观察任务的执行情况。

步骤417、所述任务分布式锁服务节点控制所述任务锁资源所包括的所述任务锁的数目加一。

具体的,本实施例所示的所述任务分布式锁服务节点在接收到所述任务锁释放请求信息时,即可确定出所述第一目标任务执行节点已执行完成所述当前任务,则本实施例所示的所述任务分布式锁服务节点控制所述任务实例数原子所计的数目加一。

本实施例中,当拥有执行所述当前任务的所有任务执行节点均将所述任务锁释放请求信息发送给所述任务分布式锁服务节点时,则所述任务分布式锁服务节点的所述任务实例数原子所计的数目等于所述实例的数目,所述实例的数目的具体说明请详见上述步骤所示,具体在本实施例中不做赘述。

采用本实施例所示的方法的有益效果在于:

本实施例所示的各用于执行当前任务的所述任务执行节点之间不是相互孤立的,所述任务分布式锁服务节点可对各所述任务执行节点进行管理,所述任务分布式锁服务节点可将任务锁发生给当前需要进行当前任务执行的第一目标任务执行节点,则所述第一目标任务执行节点在接收到所述任务锁的情况下,则进行当前任务的执行,若所述任务分布式锁服务节点超过所述预置时长没有接收到所述第一目标任务节点发送的所述任务锁释放请求信息,则所述任务分布式锁服务节点即可直接确定出所述第一目标任务执行节点出现宕机,则本实施例所示的所述任务分布式锁服务节点即可将所述第一目标任务执行节点上的任务可迁移至所述第二目标任务执行节点,从而可对当前任务的全局执行实例进行控制,提升了对各任务执行节点进行管理的效率,且本实施例所示的方法能够在当前任务按照正常周期执行的情况下,若出现宕机,则能够重新调整定时频率,保障多实例的正常执行,且能够对实例数量进行灵活配置,更高效。

以下结合图5所示对所述任务执行节点执行所述分布式定时的方法的具体流程进行详细说明:

步骤501、任务执行节点接收任务分发中心发送的配置信息。

其中,所述配置信息所包括的当前任务的执行参数以及当前任务执行时间信息等参数信息。

其中,所述当前任务的执行参数用于指示所述任务执行节点105如何执行所述当前任务。

所述当前任务执行时间信息用于指示各所述任务执行节点105执行所述当前任务的时间。

步骤502、任务执行节点配置定时器。

具体的,本实施例所示的所述任务执行节点根据所述当前任务执行时间信息配置定时器,所述定时器用于对执行所述当前任务的起始时间进行计时。

具体的,各所述任务执行节点在获取到所述当前任务执行时间信息后,即可根据所述当前任务执行时间信息配置所述定时器。

其中,所述定时器用于对执行所述当前任务的起始时间进行计时。

具体的,若所述定时器计时时间已到,则说明所述任务执行节点所执行的当前任务到期,则所述任务执行节点需要执行所述当前任务。

若所述定时器计时时间未到,则说明所述任务执行节点所执行的当前任务未到期,则所述任务执行节点不需要执行所述当前任务。

步骤503、所述任务执行节点向任务分布式锁服务节点发送任务锁请求信息。

若所述定时器所计时间已到,则向所述任务分布式锁服务节点发送任务锁请求信息,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送任务锁,所述任务锁用于指示执行当前任务。

步骤504、所述任务执行节点判断任务锁是否请求成功,若是,则执行步骤505,若否,则返回步骤502。

本实施例中,若所述任务执行节点能够接收到所述任务锁,则说明所述任务锁请求成功,若所述任务执行节点不能够接收到所述任务锁,则说明所述任务锁请求失败。

步骤505、所述任务执行节点执行所述当前任务。

所述任务执行节点若接收到所述任务锁,则根据所述任务锁执行所述当前任务。

以下对所述任务执行节点执行所述当前任务的具体过程进行详细说明。

具体的,本实施例所示的所述任务执行节点可fork子进程以进行所述当前任务的执行。

更具体的,可通过fork()函数进行所述当前任务的执行。

fork()函数用于从已存在的一个进程中创建一个新的进程,新进程称为子进程,而原进程称为父进程。所述子进程用于执行本实施例所示的当前任务。

使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等,而子进程所独有的只有它的进程号、资源使用和计时器等。

步骤506、所述任务执行节点判断所述当前任务是否执行完成,若是,则执行步骤507。

步骤507、所述任务执行节点向所述任务分布式锁服务节点发送任务锁释放请求信息。

具体的,所述任务执行节点若判断出所述当前任务已执行完成,则向所述任务分布式锁服务节点发送任务锁释放请求信息,所述任务锁释放请求信息用于指示所述当前任务已执行完成,以使所述任务分布式锁服务节点根据所述任务锁请求信息控制所述任务锁的数目加一。

步骤508、所述任务执行节点将状态信息进行上报。

具体的,本实施例所示的所述任务执行节点将所述状态信息上报至所述任务分发中心和所述监控中心。

本实施例所示的状态信息可用于指示所述任务执行节点执行所述当前任务已成功。

本实施例所示的各所述任务执行节点在接收到所述配置信息时,不会进行当前任务的执行,而是首先将任务锁请求信息发送给任务分布式锁服务节点,只有在接收到所述任务分布式锁服务节点发送的任务锁的情况下,才会进行当前任务的执行,从而使得任务分布式锁服务节点可对当前任务的全局执行实例进行控制,提升了对各任务执行节点进行管理的效率,且本实施例所示的方法能够在当前任务按照正常周期执行的情况下,若出现宕机,则能够重新调整定时频率,保障多实例的正常执行,且能够对实例数量进行灵活配置,更高效。

基于图6所示,本发明实施例还提供一种服务器,具体的,图6所提供的为本实施例所示的服务器的任务分布式锁服务节点的具体结构;

本实施例所示的所述服务器的任务分布式锁服务节点用于执行分布式定时的方法,本实施例所示所述服务器的任务分布式锁服务节点执行所述分布式定时的方法的具体说明请详见上述实施例所示,具体在本实施例中不做赘述。

所述服务器包括:

第三接收单元601,用于接收所述任务分发中心发送的任务执行节点列表,所述任务执行节点列表包括多个用于执行所述当前任务的所述任务执行节点,且所述任务执行节点列表所包括的所述任务执行节点的数目大于所述任务锁资源所包括的所述任务锁的数目,所述第一目标任务执行节点位于所述任务执行节点列表中。

第一接收单元602,用于接收任务分发中心发送的指定数目,所述指定数目用于指示执行所述当前任务的实例的数目;

第一配置单元603,用于根据所述指定数目配置任务锁资源,所述任务锁资源包括至少一个所述任务锁,且所述任务锁资源所包括的所述任务锁的数目与所述实例的数目相等。

第一确定单元604,用于确定第一目标任务执行节点,所述第一目标任务执行节点为已接收到任务锁的任务执行节点,所述任务锁用于指示所述第一目标任务执行节点执行当前任务;

可选的,所述第一确定单元604包括:

第一接收模块6041,用于接收任务执行节点发送的任务锁请求信息;

第一确定模块6042,用于根据所述任务锁请求信息确定所述任务锁资源中剩余的所述任务锁的数目是否大于或等于1;

第二确定模块6043,用于若所述第一确定模块确定出所述任务锁资源中剩余的所述任务锁的数目大于或等于1,则确定所述第一目标任务执行节点,所述第一目标任务执行节点为发送所述任务锁请求信息的任务执行节点;

发送模块6044,用于将所述任务锁资源的中的任一任务锁发送给所述第一目标任务执行节点;

可选的,所述第一确定单元604包括:

第二接收模块6045,用于接收多个所述任务执行节点分别发送的任务锁请求信息;

创建模块6046,用于创建排序列表,所述排序列表包括多个所述任务执行节点,所述排序列表为按接收到的所述任务锁请求信息的先后顺序对多个所述任务执行节点进行排序的列表;

第三确定模块6047,用于确定排序在所述排序列表中最高优先级的任务执行节点为所述第一目标任务执行节点。

第二配置单元605,用于控制所述任务锁资源所包括的所述任务锁的数目减一。

第二接收单元606,用于接收所述第一目标任务执行节点发送的所述任务锁释放请求信息;

第三配置单元607,用于根据所述任务锁请求信息控制所述任务锁资源所包括的所述任务锁的数目加一。

第二确定单元608,用于在满足预设条件的情况下,确定第二目标任务执行节点,所述第一目标任务执行节点和所述第二目标任务执行节点为互不相同的任务执行节点,所述预设条件为目标时长大于或等于预置时长,且在所述目标时长内未接收到所述第一目标任务执行节点发送的任务锁释放请求信息,所述目标时长为当前时刻和目标起始时间点的差,所述目标起始时间点为发送所述任务锁的时间点,所述任务锁释放请求信息用于指示所述第一目标任务执行节点已执行完成所述当前任务;

所述第二确定单元608还用于,在所述任务执行节点列表中确定所述第二目标任务执行节点,所述第一目标任务执行节点和所述第二目标任务执行节点位于所述任务执行节点列表中;

第四配置单元609,用于在满足所述预设条件的情况下,则控制所述任务锁资源所包括的所述任务锁的数目加一;

第一发送单元610,用于将所述任务锁发送给所述第二目标任务执行节点,所述任务锁用于指示所述第二目标任务执行节点执行所述当前任务。

第五配置单元611,用于控制所述任务锁资源所包括的所述任务锁的数目减一。

本实施例所示所述服务器的任务分布式锁服务节点执行所述分布式定时的方法的有益效果的说明请详见上述实施例所示,具体在本实施例中不做赘述。

基于图7所示,本发明实施例还提供一种服务器,具体的为所述服务器的任务执行节点,所述服务器的任务执行节点用于执行分布式定时的方法,本实施例所示所述服务器的任务执行节点执行所述分布式定时的方法的具体说明请详见上述实施例所示,具体在本实施例中不做赘述。

所述服务器包括:

第一接收单元701,用于接收任务分发中心发送的当前任务执行时间信息;

配置单元702,用于根据所述当前任务执行时间信息配置定时器,所述定时器用于对执行所述当前任务的起始时间进行计时;

第一发送单元703,用于若所述定时器所计时间已到,则向任务分布式锁服务节点发送任务锁请求信息,所述任务锁请求信息用于请求所述任务分布式锁服务节点发送任务锁,所述任务锁用于指示执行当前任务;

第二接收单元704,用于若接收到所述任务锁,则根据所述任务锁执行所述当前任务。

判断单元705,用于判断所述当前任务是否执行完成;

第二发送单元706,用于若所述判断单元判断出所述当前任务已执行完成,则向所述任务分布式锁服务节点发送任务锁释放请求信息,所述任务锁释放请求信息用于指示所述当前任务已执行完成,以使所述任务分布式锁服务节点根据所述任务锁请求信息控制所述任务锁的数目加一。

本实施例所示所述任务执行节点执行所述分布式定时的方法的有益效果的说明请详见上述实施例所示,具体在本实施例中不做赘述。

基于图2所示的服务器,一个或多个程序被存储在所述存储器204中,所述一个或多个程序包括指令,所述指令当被所述服务器执行时使所述服务器执行如上述实施例所示的分布式定时的方法,具体执行过程,请详见上述实施例所示,具体在本实施例中不做赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1