本发明涉及分布式文件系统领域,特别是涉及一种控制分布式文件系统的客户端高可用的方法、装置及介质。
背景技术
分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户端/服务端模式。对于用户场景中客户端成功挂载分布式文件系统后,如果在运行过程中遭遇到人为或客户端系统本身因素的干扰时,客户端相应的进程会异常退出,导致客户端挂载点不可用,正在处理的任务中断,严重影响任务运行进度。
现有技术中,当出现上述问题时,需要重新将该客户端挂载至分布式文件系统,使挂载点恢复可用。但是,由于任务已经中断,重新挂载之后,无法恢复原理已经处理完毕的任务,需要对全部任务重新运行,严重影响任务运行进度。
由此可见,在客户端异常退出后,如何确保客户端的任务不受中断的影响是本领域技术人员亟待解决的问题。
技术实现要素:
本发明的目的是提供一种控制分布式文件系统的客户端高可用的方法、装置及介质,在分布式文件系统的客户端由于异常原因退出后,其上运行的任务能够转移到其它客户端,确保客户端的任务正常运行。
为解决上述技术问题,本发明提供一种控制分布式文件系统的客户端高可用的方法,包括:
在检测到主客户端挂载至分布式文件系统后,按照所述主客户端的挂载点信息对备客户端进行初始化;
判断所述主客户端的任务处理进程是否退出;
如果是,则拦截所述主客户端调用退出接口,同时控制所述主客户端调用自定义接口以将所述主客户端未处理完的任务加入到所述备客户端的任务队列中,并唤醒所述备客户端以执行所述主客户端未处理完的任务。
优选地,所述按照所述主客户端的挂载点信息对备客户端进行初始化具体包括:
获取所述主客户端的挂载信息、所述主客户端与内核通信的通信信息以及任务队列信息;
将所述挂载信息、所述通信信息和所述任务队列信息复制给所述备客户端,并控制所述备客户端处于休眠模式。
优选地,在判断出所述主客户端的所述任务处理进程退出之后,还包括:
判断所述备客户端是否处于正常休眠模式,如果是,则唤醒所述备客户端。
优选地,还包括:
在检测到所述备客户端执行完所述主客户端未处理完的任务后输出任务处理完毕信息。
优选地,还包括:统计所述主客户端的任务处理量和所述备客户端的任务处理量。
优选地,在所述唤醒所述备客户端之后,还包括:
按照所述备客户端的初始化方法初始化所述主客户端以将所述主客户端作为新的备客户端。
为解决上述技术问题,本发明还提供一种控制分布式文件系统的客户端高可用的装置,包括:
初始化单元,用于在检测到主客户端挂载至分布式文件系统后,按照所述主客户端的挂载点信息对备客户端进行初始化;
判断单元,用于判断所述主客户端的任务处理进程是否退出;
控制单元,用于在所述判断单元的判断结果为是时,拦截所述主客户端调用退出接口,同时控制所述主客户端调用自定义接口以将所述主客户端未处理完的任务加入到所述备客户端的任务队列中,并唤醒所述备客户端以执行所述主客户端未处理完的任务。
优选地,所述初始化单元具体包括:
获取模块,用于获取所述主客户端的挂载信息、所述主客户端与内核通信的通信信息以及任务队列信息;
复制模块,用于将所述挂载信息、所述通信信息和所述任务队列信息复制给所述备客户端,并控制所述备客户端处于休眠模式。
为解决上述技术问题,本发明还提供一种控制分布式文件系统的客户端高可用的装置,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的控制分布式文件系统的客户端高可用的方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的控制分布式文件系统的客户端高可用的方法的步骤。
本发明所提供的控制分布式文件系统的客户端高可用的方法,采用主客户端和备客户端的冗余模式实现任务的处理,首先,按照主客户端的挂载信息对备客户端进行初始化,初始化之后,备客户端就能够与主客户端共享任务数据,主客户端正常处理任务,当检测到主客户端的任务处理进程退出时,则拦截主客户端调用退出接口,并且控制主客户端调用自定义接口从而将未处理完的任务加入到备客户端的任务队列,最后唤醒备客户端,从而执行主客户端未处理完的任务。由此可见,本方法能够在主客户端出现异常时,通过备客户端实现任务的继续执行,提高了客户端的可用性和稳定性。
此外,本发明所提供的控制分布式文件系统的客户端高可用的装置及介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图;
图2为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图;
图3为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图;
图4为本发明实施例提供的一种控制分布式文件系统的客户端高可用的装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种控制分布式文件系统的客户端高可用的方法、装置及介质,在分布式文件系统的客户端由于异常原因退出后,其上运行的任务能够转移到其它客户端,确保客户端的任务正常运行。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图。如图1所示,该方法包括:
s10:在检测到主客户端挂载至分布式文件系统后,按照主客户端的挂载点信息对备客户端进行初始化。
需要说明的是,本发明中的主客户端和备客户端是相对的,也就是说,在一段时间内,一个客户端是主客户端,另一端时间也可能是备客户端。主客户端是当前需要执行任务的客户端,除了主客户端外,其余的客户端都可以成为备客户端,也可以是其中的一个或几个成为备客户端。通常情况下,备客户端设置成一个。
在执行任务时,主客户端预先挂载至分布式文件系统中,该节点也称之为挂载点,与现有技术不同的是,本实施例中,增加了备客户端,备客户端需要按照主客户端的挂载点信息进行初始化。由于是按照主客户端的挂载点信息进行初始化,因此,备客户端能够实现与主客户端的信息共享。
作为优选地实施方式,按照主客户端的挂载点信息对备客户端进行初始化具体包括:
获取主客户端的挂载信息、主客户端与内核通信的通信信息以及任务队列信息;
将挂载信息、通信信息和任务队列信息复制给备客户端,并控制备客户端处于休眠模式。
可以理解的是,之所以将备客户端控制在休眠模式是为了降低备客户端的资源消耗,换句话说,不考虑资源消耗的话,也可以将备客户端处于运行模式。
s11:判断主客户端的任务处理进程是否退出,如果是,则进入s12。
在具体实施中,主客户端中的内核自带有检测程序用于检测任务处理进程是否退出,本步骤中其实通过该检测程序进行判断的。
s12:拦截主客户端调用退出接口,同时控制主客户端调用自定义接口以将主客户端未处理完的任务加入到备客户端的任务队列中,并唤醒备客户端以执行主客户端未处理完的任务。
在现有技术中,一旦任务处理进程退出,则主客户端就要调用退出接口,从而实现任务的卸载。一旦任务卸载,则任务就无法恢复。因此,本实施例中,首先是拦截主客户端调用退出接口,避免主进程退出;同时,通过自定义接口将主客户端未处理完成的任务加入到备客户端的任务队列中,可以理解的是,由于主客户端未调用退出接口,任务数据都还存在,因此,备客户端能够接收到主客户端未处理完的任务。需要说明的是,对于主客户端的自定义接口需要预先设置。在具体实施中,是通过linux内核hook技术实现接口的调用。
本实施例提供的控制分布式文件系统的客户端高可用的方法,采用主客户端和备客户端的冗余模式实现任务的处理,首先,按照主客户端的挂载信息对备客户端进行初始化,初始化之后,备客户端就能够与主客户端共享任务数据,主客户端正常处理任务,当检测到主客户端的任务处理进程退出时,则拦截主客户端调用退出接口,并且控制主客户端调用自定义接口从而将未处理完的任务加入到备客户端的任务队列,最后唤醒备客户端,从而执行主客户端未处理完的任务。由此可见,本方法能够在主客户端出现异常时,通过备客户端实现任务的继续执行,提高了客户端的可用性和稳定性。
图2为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图。如图2所示,在上一实施例的基础上,在判断出主客户端的任务处理进程退出之后,还包括:
s20:判断备客户端是否处于正常休眠模式,如果是,则进入s12。
对于步骤s10-s12的实施例,本实施例不再赘述,参见上文的描述。在具体实施中,备客户端应该处于正常休眠模式,一旦备客户端出现故障,例如断电或其他异常,进入非正常休眠模式后,及时将主客户端未处理完的任务加入到备客户端的任务队列中,也无法实现任务的继续执行。因此,本实施例中,在唤醒备客户端之前,首先要确定备客户端的状态。在其他实施例中,如果有多个备客户端,则可以启用下一个备客户端,直到找到一个正常休眠模式的备客户端为止,如果只有一个备客户端,则可以发送告警信息进行告警。
如图2所示,在上一实施例的基础上,还包括:
s21:在检测到备客户端执行完主客户端未处理完的任务后输出任务处理完毕信息。
输出任务处理完毕信息可以方便地确定当前任务是否完成,避免长时间的等待。在具体实施中,如果任务被全部完成,可以释放主客户端和备客户端,不再占用客户端的进程。
如图2所示,作为一种优选地实施方式,还包括:
s22:统计主客户端的任务处理量和备客户端的任务处理量。
为了方便后续查阅,本步骤中统计主客户端的任务处理量和备客户端的任务处理量,具体可以通过主客户端的日志信息和备客户端的日志信息得到。
图3为本发明实施例提供的一种控制分布式文件系统的客户端高可用的方法的流程图。如图3所示,在另一种实施例中,在唤醒备客户端之后,还包括:
s30:按照备客户端的初始化方法初始化主客户端以将主客户端作为新的备客户端。
在具体实施中,备客户端也有可能出现异常,如果只有一个主客户端和一个备客户端的话,则一旦备客户端在进行任务处理时出现异常,仍然无法完成任务处理。为了避免上述情况,本实施例中,将主客户端(经过修复)作为新的备客户端,如果当前备客户端(实际上此时就是主客户端)出现异常,则按照上述的方法可以将当前备客户端未处理完的任务加入到新的备客户端的任务队列中,从而进一步提高客户端的可用性,。
上文中对于控制分布式文件系统的客户端高可用的方法的实施例进行了详细说明,本发明还提供与该方法对应的控制分布式文件系统的客户端高可用的装置。该装置具体是从功能模块的角度进行说明。图4为本发明实施例提供的一种控制分布式文件系统的客户端高可用的装置的结构图。如图4所示,该装置具体包括:
初始化单元10,用于在检测到主客户端挂载至分布式文件系统后,按照主客户端的挂载点信息对备客户端进行初始化;
判断单元11,用于判断主客户端的任务处理进程是否退出;
控制单元12,用于在判断单元的判断结果为是时,拦截主客户端调用退出接口,同时控制主客户端调用自定义接口以将主客户端未处理完的任务加入到备客户端的任务队列中,并唤醒备客户端以执行主客户端未处理完的任务。
作为优选地实施方式,初始化单元10具体包括:
获取模块,用于获取主客户端的挂载信息、主客户端与内核通信的通信信息以及任务队列信息;
复制模块,用于将挂载信息、通信信息和任务队列信息复制给备客户端,并控制备客户端处于休眠模式。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例提供的分布式文件系统的客户端高可用的装置,采用主客户端和备客户端的冗余模式实现任务的处理,首先,按照主客户端的挂载信息对备客户端进行初始化,初始化之后,备客户端就能够与主客户端共享任务数据,主客户端正常处理任务,当检测到主客户端的任务处理进程退出时,则拦截主客户端调用退出接口,并且控制主客户端调用自定义接口从而将未处理完的任务加入到备客户端的任务队列,最后唤醒备客户端,从而执行主客户端未处理完的任务。由此可见,本装置能够在主客户端出现异常时,通过备客户端实现任务的继续执行,提高了客户端的可用性和稳定性。
此外,本发明还提供一种与上述方法对应的控制分布式文件系统的客户端高可用的装置,与上一实施例中的装置不同的是,本实施例主要从硬件角度说明。该装置包括存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述实施例所述的控制分布式文件系统的客户端高可用的方法的步骤。
可以理解的是,处理器和存储器可通过总线或其它方式连接。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例提供的分布式文件系统的客户端高可用的装置,包括存储器和处理器,处理器能够实现如下方法:首先,按照主客户端的挂载信息对备客户端进行初始化,初始化之后,备客户端就能够与主客户端共享任务数据,主客户端正常处理任务,当检测到主客户端的任务处理进程退出时,则拦截主客户端调用退出接口,并且控制主客户端调用自定义接口从而将未处理完的任务加入到备客户端的任务队列,最后唤醒备客户端,从而执行主客户端未处理完的任务。由此可见,本装置采用主客户端和备客户端的冗余模式实现任务的处理,能够在主客户端出现异常时,通过备客户端实现任务的继续执行,提高了客户端的可用性和稳定性。
在上述实施例的基础上,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例所述的控制分布式文件系统的客户端高可用的方法的步骤。
在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,在读取该介质时执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供的计算机可读存储介质能够实现存储有计算机程序,计算机程序被执行时能够实现如下方法:首先,按照主客户端的挂载信息对备客户端进行初始化,初始化之后,备客户端就能够与主客户端共享任务数据,主客户端正常处理任务,当检测到主客户端的任务处理进程退出时,则拦截主客户端调用退出接口,并且控制主客户端调用自定义接口从而将未处理完的任务加入到备客户端的任务队列,最后唤醒备客户端,从而执行主客户端未处理完的任务。由此可见,本方法采用主客户端和备客户端的冗余模式实现任务的处理,能够在主客户端出现异常时,通过备客户端实现任务的继续执行,提高了客户端的可用性和稳定性。
以上对本发明所提供的控制分布式文件系统的客户端高可用的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。