一种状态检查方法、装置及集群系统制造方法及图纸

技术编号:20800934 阅读:25 留言:0更新日期:2019-04-06 14:44
本申请提供一种状态检查方法、装置及集群系统;其中,所述状态检查方法包括:主线程启动后,创建状态检查线程;当执行所述主线程的节点收到用于进行状态探测的消息后,所述状态检查线程对所述用于进行状态探测的消息进行反馈。本申请至少一个实施例可以避免可用性探测结果受到业务状况的影响。

A State Checking Method, Device and Cluster System

The application provides a state checking method, device and cluster system, in which the state checking method includes: creating a state checking thread after the main thread is started; and feedback of the message for state detection is provided by the state checking thread when the node executing the main thread receives the message for state detection. At least one embodiment of the present application can avoid the impact of the usability detection results on the business conditions.

【技术实现步骤摘要】
一种状态检查方法、装置及集群系统
本专利技术涉及计算机领域,尤其涉及一种状态检查方法、装置及集群系统。
技术介绍
计算机系统的可用性是通过系统的可靠性和可维护性来度量的。工程上通常用平均无故障时间来度量系统的可靠性,用平均维修时间来度量系统的可维护性。服务的高可用性目前通常是采用搭建高可用性(HighAvailablity,HA)集群的方式实现的。HA可以指程序、或服务、或系统无中断地执行其功能的能力。一个高可用集群(亦称HA集群)包含多个服务节点,一部分服务节点处于业务的激活状态(可以称之为主节点),一部分服务节点处于业务的备用状态(可以称之为备节点)。当主节点出现故障时,系统激活备节点自动接替主节点提供服务,并将原来的主节点降级成备节点或者重新搭建一个备节点。其中,对主节点的可用性探测是关键步骤之一。对主节点的可用性探测也可称为健康检查,即判断主节点的健康状态,比如判断主节点的程序、或服务、或系统当前是否处于故障状态,或是否处于正常工作状态。误判或者未及时判断出主节点的健康状态,都将大大降低服务的可用性。Redis是一个开源的高性能的Key-Value缓存数据库系统,包括多个服务节点;Redis集群中的服务节点当时收到心跳包时回复指定信息,比如收到“ping”命令时回复“pong”,收到info命令时会回复服务器配置参数和统计数据,比如服务器版本,操作系统,启动时间长度等。利用服务节点的上述特性,Redis集群中的运维系统可以进行Redis可用性探测,一般包括以下技术方案:心跳探测:通过定期向服务节点发送心跳包的方式探测服务节点的健康状态。如果多个心跳包都没有收到回复,则认为服务节点已经故障了。Redis哨兵(Sentinel):每秒发送一个心跳包获取当前服务节点健康状态,每N秒(N为正整数)发送一次info命令获取Redis的节点配置状态用于后续故障处理。上述技术方案都是通过向Redis的服务节点发送ping命令(或其它心跳包)或者info命令,根据Redis服务节点返回的信息来判断当前Redis服务节点的健康状态的。上述技术方案有如下缺点:可用性探测会受到Redis服务当前业务状况的影响,比如Redis服务繁忙时(比如执行某个时长较长的任务时等),Redis的服务节点无法及时响应探测的命令或者心跳消息,容易被误判为故障,或无法及时判断故障。
技术实现思路
本申请提供一种状态检查方法、装置及集群系统,可以避免可用性探测结果受到业务状况的影响。本申请采用如下技术方案。一种状态检查方法,包括:主线程启动后,创建状态检查线程;当执行所述主线程的节点收到用于进行状态探测的消息后,所述状态检查线程对所述用于进行状态探测的消息进行反馈。其中,执行所述主线程的节点可以为集群的主节点。其中,所述创建状态检查线程后还可以包括:所述状态检查线程侦听执行所述主线程的节点的状态检查端口;其中,所述状态检查端口用于接收所述用于进行状态探测的消息。其中,所述状态检查线程对所述用于进行状态探测的消息进行反馈可以包括:所述状态检查线程获取所述节点的状态信息;采用所获取的状态信息对所述用于进行状态探测的消息进行反馈。其中,所述创建状态检查线程后还可以包括:所述状态检查线程周期性对所述节点的状态进行检查,根据检查结果生成所述节点的状态信息。其中,所述状态检查线程周期性对所述节点的状态进行检查可以包括:所述状态检查线程进行以下一项或多项操作:每隔第一时间长度对所述节点进行一次磁盘读写;每隔第二时间长度查看所述节点的目录文件权限,大小,完整性是否正常;每隔第三时间长度查看所述节点中预定的辅助进程是否存在。其中,所述状态检查线程所创建的事件可以包括:端口事件和定时器事件;所述端口事件可以设置成在所述节点收到用于进行状态探测的消息后,获取所述节点的状态信息并反馈;所述定时器可以设置成周期性对所述节点的状态进行检查,根据检查结果生成所述节点的状态信息。其中,所述状态信息可以是用于表示所述节点状态的标识。一种状态检查装置,包括:处理器和存储器;所述存储器用于保存用于提供服务的程序;所述用于提供服务的程序在被所述处理器读取执行时,进行如下操作:启动主线程;所述主线程启动被所述处理器执行时,进行如下操作:创建状态检查线程;所述状态检查线程被所述处理器执行时,进行如下操作:当所述处理器所在的节点收到用于进行状态探测的消息后,对所述用于进行状态探测的消息进行反馈。一种状态检查装置,包括:主服务模块,用于在启动后创建状态检查模块;所述状态检查模块用于当所述状态检查装置所在的节点收到用于进行状态探测的消息后,对所述用于进行状态探测的消息进行反馈。一种状态检查方法,包括:集群中的主节点启动后,执行状态检查进程;当所述主节点收到用于进行状态探测的消息后,所述状态检查进程对所述用于进行状态探测的消息进行反馈。一种集群系统,包括:一个或多个节点;其中,所述一个或多个节点中至少存在一个主节点;状态检查装置;所述主节点启动后,启动所述状态检查装置;所述状态检查装置用于当所述主节点收到用于进行状态探测的消息后,对所述用于进行状态探测的消息进行反馈。本申请至少一个实施例中,在作为探测对象的节点中设置专用的状态检查线程来处理状态探测,可以不受当前业务状况的干扰,能及时响应状态探测,避免延迟和误报情况的发生。本申请实施例的一种实现方式中,采用专用端口侦听状态探测,能进一步避免业务状况的干扰。本申请实施例的一种实现方式中,对状态探测进行反馈时,反馈状态信息,这样更有助于了解节点真实的状态。本申请实施例的一种实现方式中,采用专用的状态检查线程周期性生成状态信息,不会影响业务的正常处理,而且在收到用于进行状态探测的消息时,可以直接返回已生成节点的状态信息,避免临时采集状态信息导致的延迟;其中,生成状态信息时可以依据多项检查结果,因此可以全面的采集节点的各种状态。本申请实施例的一种实现方式中,在状态信息用不同标识表示节点的不同状态,这样可以减少传输状态信息的开销,而且可以将节点的状态细化为多种不同情况。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明图1是实施例一的状态检查方法的流程图;图2是实施例一的例子中主线程和健康检查线程的示意图;图3是实施例一的例子中健康检查线程的工作示意图;图4是实施例三的状态检查装置的示意图;图5是实施例五的集群系统的示意图。具体实施方式下面将结合附图及实施例对本申请的技术方案进行更详细的说明。需要说明的是,如果不冲突,本申请实施例以及实现方式中的不同特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在一种配置中,进行状态检查的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。内存可能包括一个或多个模块。计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可本文档来自技高网
...

【技术保护点】
1.一种状态检查方法,包括:主线程启动后,创建状态检查线程;当执行所述主线程的节点收到用于进行状态探测的消息后,所述状态检查线程对所述用于进行状态探测的消息进行反馈。

【技术特征摘要】
1.一种状态检查方法,包括:主线程启动后,创建状态检查线程;当执行所述主线程的节点收到用于进行状态探测的消息后,所述状态检查线程对所述用于进行状态探测的消息进行反馈。2.如权利要求1所述的状态检查方法,其特征在于:执行所述主线程的节点为集群的主节点。3.如权利要求1所述的状态检查方法,其特征在于,所述创建状态检查线程后还包括:所述状态检查线程侦听执行所述主线程的节点的状态检查端口;其中,所述状态检查端口用于接收所述用于进行状态探测的消息。4.如权利要求1所述的状态检查方法,其特征在于,所述状态检查线程对所述用于进行状态探测的消息进行反馈包括:所述状态检查线程获取所述节点的状态信息;采用所获取的状态信息对所述用于进行状态探测的消息进行反馈。5.如权利要求1所述的状态检查方法,其特征在于,所述创建状态检查线程后还包括:所述状态检查线程周期性对所述节点的状态进行检查,根据检查结果生成所述节点的状态信息。6.如权利要求5所述的状态检查方法,其特征在于,所述状态检查线程周期性对所述节点的状态进行检查包括:所述状态检查线程进行以下一项或多项操作:每隔第一时间长度对所述节点进行一次磁盘读写;每隔第二时间长度查看所述节点的目录文件权限,大小,完整性是否正常;每隔第三时间长度查看所述节点中预定的辅助进程是否存在。7.如权利要求5所述的状态检查方法,其特征在于,所述状态检查线程所创建的事件包括:端口事件和定时器事件;所述端口事件设置成在所述...

【专利技术属性】
技术研发人员:鲁振华
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1