本申请涉及通信技术领域,特别涉及一种网关设备故障处理方法。本申请同时还涉及一种网关设备故障处理装置。
背景技术:
情形1、网关设备发生宕机
在该情况下,网关设备将进行重启,由计算任务分发主控机进行Failover处理。
情形2、网关设备与系统断开网络,但是网关设备本身的进程尚存活:
在该情况下,网关设备需要保证结束已经启动的进程,随后由计算任务分发主控机进行Failover处理。
情形3、网关设备的进程发生崩溃
这种情况下,需要使用一种机制保证能够结束网关设备上的进程,计算任务分发主控机进行Failover处理。
针对上述若干种故障情形,现有技术中所采取的Failover处理方案如图1所示,包括以下步骤:
S101,网关设备发生故障(包括宕机、断网、进程崩溃等);
S102,触发Failover处理;
S103,结束当前网关设备上的计算任务;
S104,结束当前网关设备提交到计算集群的作业;
S105,将计算任务重新调度到另一台网关设备;
S106,计算任务重新运行。
技术实现要素:
本发明提供了一种网关设备故障处理方法,用以在网关设备发生故障时保证已运行计算任务的正常运行,从而节省计算资源以及提高计算任务处理效率。该方法包括以下步骤:
当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务;
根据下发所述计算任务时的参数筛选待分配计算任务,所述参数用于指示所述计算任务是否需要进行失效转移Failover处理;
结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将所述待分配计算任务调度至当前状态为正常的其他网关设备;
恢复所述待分配计算任务的任务状态,并通过所述其他网关设备执行所述待分配计算任务。
优选地,当检测到网关设备发生故障时,获取发生故障的网关设备正在执行的计算任务,具体为:
对当前各网关设备在启动时注册的临时文件进行检测;
当有临时文件被删除时,将与被删除临时文件对应的网关设备作为所述网关设备,并获取所述网关设备当前正在执行的计算任务。
优选地,根据下发所述计算任务时的参数筛选待分配计算任务,具体为:
确定所述参数的Failover处理取值是否为有效状态;
若所述Failover处理取值为有效状态,将所述计算任务作为所述待分配计算任务置于优先级最高的队列;
若所述Failover处理取值为无效状态,将所述计算任务置错。
优选地,结束发生故障的网关设备当前正在运行的计算任务,具体为:
若所述网关设备当前的故障类型为断网,遍历所述网关设备当前所有的进程,并结束所述网关设备的长驻进程;
若所述网关设备当前的故障类型为进程崩溃,将所述网关设备启动的长驻进程结束。
优选地,在通过所述其他网关设备执行所述待分配计算任务之后,还包括:
查询所述待分配计算任务的任务状态,以及所述待分配计算任务是否在所述其他网关设备运行;
若所述待分配计算任务处于运行状态,获取所述待分配计算任务的任务状态和计算任务日志;
若所述待分配计算任务运行失败,重新提交所述待分配计算任务,并获取所述待分配计算任务的任务状态和计算任务日志;
若所述待分配计算任务已运行结束,提交在所述待分配计算任务之后的其他计算任务,并获取所述其他计算任务的任务状态和计算任务日志。
相应地,本申请还提出了一种网关设备故障处理装置,包括:
获取模块,当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务;
筛选模块,根据下发所述计算任务时的参数筛选待分配计算任务,所述参数用于指示所述计算任务是否需要进行Failover处理;
结束模块,结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将所述待分配计算任务调度至当前状态为正常的其他网关设备;
恢复模块,恢复所述待分配计算任务的任务状态,并通过所述其他网关设备执行所述待分配计算任务。
优选地,所述获取模块具体用于:
优选地,所述筛选模块具体用于:
优选地,所述结束模块具体用于:
优选地,还包括:
查询模块,查询所述待分配计算任务的任务状态,以及所述待分配计算任务是否在所述其他网关设备运行;
若所述待分配计算任务处于运行状态,所述查询模块获取所述待分配计算任务的任务状态和计算任务日志;
若所述待分配计算任务运行失败,所述查询模块重新提交所述待分配计算任务,并获取所述待分配计算任务的任务状态和计算任务日志;
若所述待分配计算任务已运行结束,所述查询模块提交在所述待分配计算任务之后的其他计算任务,并获取所述其他计算任务的任务状态和计算任务日志。
由此可见,通过应用本申请的技术方案,当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务,根据下发计算任务时的参数筛选待分配计算任务,结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将待分配计算任务调度至当前状态为正常的其他网关设备,最后恢复待分配计算任务的任务状态,并通过其他网关设备执行待分配计算任务。从而避免了由于网关设备发生故障而导致的计算任务失败问题,提高了整体的计算任务执行效率以及保障了系统的稳定性。
附图说明
图1为现有技术中针对网关设备进行Failover处理的方案示意图;
图2为本申请提出的一种网关设备故障处理方法的流程示意图;
图3为本申请具体实施例中进行Failover和续跑的总体流程图;
图4为本申请具体实施例中进行Failover的状态图;
图5为本申请具体实施例提出的一种网关设备故障处理装置的结构示意图。
具体实施方式
如背景技术所述,现有技术中的数据处理/调度平台往往会因为单台的网关设备发生宕机、断网、进程崩溃等故障而导致计算任务失败的情况发生,此时需要重启计算任务,极大地降低了数据处理效率。为此本申请提出了一种网关设备故障处理方法。该方法可以应用在由网关设备运行数据计算任务的数据处理/调度平台中,具体计算任务类型或是平台类型的不同并不影响本申请的保护范围。
如图2所示,为本申请提出的一种网关设备故障处理方法的流程示意图,包括如下步骤:
S201,当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务。
基于网关设备运行计算任务的特性,在本申请的优选实施例中,将实时地对当前各网关设备在启动时注册的临时文件进行检测;当有临时文件被删除时,将与被删除临时文件对应的网关设备作为所述网关设备,并获取所述网关设备当前正在执行的计算任务。
需要说明的是,以上判断网关设备发生故障的方式仅为本申请提出的一种优选事实方案,技术人员也可以通过额外地设置其他的检测设备或是检测方法对网关设备进行实时检测,在此基础上的其他变型或是改进均属于本申请的保护范围。
S202,根据下发所述计算任务时的参数筛选待分配计算任务,所述参数用于指示所述计算任务是否需要进行失效转移Failover处理。
由于本申请旨在当网络设备发生故障时保证其中的计算任务不发生失败重启。因此本申请预先在向网关设备下发各个计算任务时,将为其配置一额外的参数,该参数与各个计算任务一一对应,用于指示该计算任务在面临网关设备故障的情况时是否需要进行Failover处理。因此在本申请的一个优选实施例中,当需要基于参数筛选待分配计算任务时,可确定参数的Failover处理取值是否为有效状态;若所述Failover处理取值为有效状态,将所述计算任务作为所述待分配计算任务置于优先级最高的队列;若所述Failover处理取值为无效状态,将所述计算任务置错,即针对该计算任务不再进行后续处理。
S203,结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将所述待分配计算任务调度至当前状态为正常的其他网关设备。
在某些故障情况下,网关设备并非是出于完全不能运行的状态,此时其中的某些计算任务尚在运行,因此为了保证后续重新分配任务后不会发生冲突,需要将发生故障的网关设备当前正在运行的计算任务全部进行关闭处理。
在本申请的优选实施例中,基于网关设备故障类型的不同,关闭的方式亦存在以下区别:
(1)若所述网关设备当前的故障类型为断网,遍历所述网关设备当前所有的进程,并结束所述网关设备的长驻进程;
(2)若所述网关设备当前的故障类型为进程崩溃,将所述网关设备启动的长驻进程结束。
以上尽管仅以两种故障情况进行了说明,技术人员可以根据实际的具体故障类型采取相应的进程结束方式。此外调度策略也可以按照实际的情况进行设置,例如通过负载均衡选择其他网关设备,或者是选择备份的正常网关设备,这些都属于本申请的保护范围。
S204,恢复所述待分配计算任务的任务状态,并通过所述其他网关设备执行所述待分配计算任务。
在确定了用于处理待分配计算任务的其他网关设备且将计算任务分配完成后,即恢复待分配计算任务的任务状态以及令其重新运行。该过程可以通过其他网关设备之间的指示信令实现,也可由网关设备自发运行,这些均属于本申请的保护范围。
此外,为了确保待分配计算任务能够正常完成,本申请优选实施例在该步骤之后,主动或是按照周期查询所述待分配计算任务的任务状态,以及所述待分配计算任务是否在所述其他网关设备运行,并基于以下查询结果处理:
(1)若所述待分配计算任务处于运行状态,获取所述待分配计算任务的任务状态和计算任务日志;
(2)若所述待分配计算任务运行失败,重新提交所述待分配计算任务,并获取所述待分配计算任务的任务状态和计算任务日志;
(3)若所述待分配计算任务已运行结束,提交在所述待分配计算任务之后的其他计算任务,并获取所述其他计算任务的任务状态和计算任务日志。
通过采用上述技术方案,可在网关设备出现宕机、断网、进程崩溃等故障后及时的恢复发生故障时的任务状态,避免任务失败,从而提高任务处理效率以及保证系统稳定性。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。在目前的大型数据仓库中,一个典型的Etl任务会包含多条sql(任务),当作业正在运行sql2的时候若网关设备发生宕机将会触发failover机制。如图3所示,为本申请具体实施例在进行failover后续跑任务的总体流程图,包括如下流程:
一、网关设备发生故障(宕机、断网、进程崩溃)
二、Failover机制触发
任务分发平台一直在监控/nodes目录,会感知到临时文件的消失,进而触发网关设备的failover机制。任务分发平台从程序协调平台获取被Failover的网关设备上的所有正在执行的任务。
针对每个任务是否要执行failover操作,是由下发任务的参数决定的:当failover=0,任务分发平台直接把任务置错,并回调给上游系统。当failover=1,任务分发平台把任务重新放到优先级最高的队列(priority=1),等待调度器重新分配。
三、关闭当前网关设备的任务
1)、网关设备宕机,网关设备上的任务自然全部被kill,不需要额外kill
2)、网关设备断网,网关设备上的长驻进程通过程序协调平台感知,然后遍历机器上的所有进程,并且逐个关闭。
3)、网关设备长驻进程crash,长驻进程启动的时候,通过一个脚本杀掉网关设备启动的任务。
四、任务重新调度到新的网关设备
该具体实施例中,根据cpu、内存、带宽等综合情况把任务调度到负载最低的机器。
五、任务状态恢复、续跑
当任务被重新调度到新的网关设备后,新的任务进程被启动。
1)、任务启动后,从程序协调平台查询任务状态,后续以当前正在运行sql2进行说明。
2)、查询sql2是否还在服务器集群运行
从服务器集群获取某个sql的执行状态,从返回结果中可以获取提交sql的网关设备的标识以及sql的运行状态,基于状态不同进行不同的处理:
a)、如果sql2还在继续运行,持续获取任务状态和日志
b)、如果sql2运行失败,重新提交sql2,并获取任务状态和日志
c)、如果sql2已经运行结束(成功结束),提交sql3,并获取任务状态和日志。
通过上述具体实施例的方案,当触发failover机制时,整个任务被迁移到另外一台网关设备时,能够从sql2开始接着运行,保证了重要任务不因设备故障而失败。
为达到以上技术目的,本申请还提出了一种网关设备故障处理装置,如图5所示,包括:
获取模块510,当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务;
筛选模块520,根据下发所述计算任务时的参数筛选待分配计算任务,所述参数用于指示所述计算任务是否需要进行Failover处理;
结束模块530,结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将所述待分配计算任务调度至当前状态为正常的其他网关设备;
恢复模块540,恢复所述待分配计算任务的任务状态,并通过所述其他网关设备执行所述待分配计算任务。
在具体的应用场景中,所述获取模块具体用于:
在具体的应用场景中,所述筛选模块具体用于:
在具体的应用场景中,所述结束模块具体用于:
在具体的应用场景中,还包括:
通过应用本申请的技术方案,当检测到网关设备发生故障时,获取发生故障的网关设备当前正在执行的计算任务,根据下发计算任务时的参数筛选待分配计算任务,结束发生故障的网关设备当前正在运行的计算任务,并根据预设的调度策略将待分配计算任务调度至当前状态为正常的其他网关设备,最后恢复待分配计算任务的任务状态,并通过其他网关设备执行待分配计算任务。从而避免了由于网关设备发生故障而导致的计算任务失败问题,提高了整体的计算任务执行效率以及保障了系统的稳定性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。