一种基于主机状态和优先级的主用主机动态选择方法与流程

文档序号:12694411阅读:251来源:国知局
一种基于主机状态和优先级的主用主机动态选择方法与流程
本发明涉及一种基于主机状态和优先级的主用主机动态选择方法,属于通信
技术领域

背景技术
:群组系统是由若干台主机组成的系统。群组系统对外提供文件存储、计算等能力,例如由多台主机组成的HSS等。在由多台主机联合组成的群组系统中,需要选择出管理节点和主用节点。例如在一个典型的存在多台冗余主机的系统中,需要能选择出主用的主机节点。当设置群组向外部提供服务时,由于群组中各主机所能提供的服务有区别,比如吞吐量有大小之分。这时需要在群组中区分出主控主机,以便对整个群组进行管理:也存在这样的场景:一个群组中只有主控主机对外提供服务,而其余主机都是作为备份。典型场景是双机主备,这种场景下,仅有主用主机对外提供服务,而备用主机只作为备份。当主用主机故障时,备用主机才作为主用机对外提供服务。选择出的主用主机,也可称为群组leader。其余的为备用主机,也可称为群组Slave。对这种场景,现有技术通常是根据IP地址做选举方法,群组中IP地址最小的主机自举为主控主机;当群组中有主控主机时,其余主机则自举为普通主机。但目前所用的主机节点选择方法中没有考虑主机的故障态和主机服务能力优先级。所以本设计要解决的问题是选择主用节点的时候,能根据主机的状态及主机优先级动态进行选择。现有技术能选举出群组的主控主机,但无法区分出群组中各主机的状态,也无法根据主机能提供服务的能力进行动态选举。这样就会出现能提供更好服务 的主机长时间不能作为主控主机对,影响整个群组的对外提供服务能力和服务质量。技术实现要素:本发明要解决的技术问题是:如何根据主机的状态实时选择主用主机。为实现上述的发明目的,本发明提供了一种基于主机状态和优先级的主用主机动态选择方法,应用于包括多个主机的群组系统中,所述方法包括:主机向群组系统内的其他主机发送竞争消息进入竞争状态;主机根据竞争消息实时判断并确定当前的竞争状态并发送相应的竞争消息。可选地,所述确定当前的竞争状态并发送相应的竞争消息包括:如果竞争胜利主机进入主用态,则发送主用态竞争消息;如果竞争失败主机进入备用态,则发送备用态竞争消息;如果竞争主机进入故障态,则发送故障竞争消息。可选地,还包括:备用态主机收到主用态主机的故障信息或预定时间未收到主用态主机的主用态信息,则进入竞争状态。可选地,还包括:实时判断接收到的竞争消息优先级的步骤;主用态主机收到优先级比自身优先级高的竞争消息,则将自己置为备用态主机,并则发送备用态竞争消息。可选地,所述竞争消息包括主机优先级、主机地址、主机状态、心跳计数器、消息类别中的任意一种或多种。可选地,所述主机状态包括无效态、竞争阶段、升主阶段、主用态、备用态、故障态之一。可选地,所述消息类别包括竞争消息、升主通告、主用态消息、 备用态消息、故障态消息之一。可选地,所述主机中存储有邻主机列表;所述邻主机列表的每个表项保存邻主机的优先级,主机地址,主机所处状态,以及距最近一次收到该邻主机的消息的周期数。可选地,所述邻主机列表的每个表项是按以下方式更新的:当主机收到其它主机发来的消息,则根据其它主机的消息中携带的优先级寻找到其它主机列表中相应的表项本发明提供的基于主机状态和优先级的主用主机动态选择方法,根据优先级动态地选择出群组内的主控或主用主机,以提高群组对外提供的服务的质量,以及提高群组内主机的管理能力。附图说明图1是本发明实图状态切换示意图;图2是本发明主机动态选择方法流程示意图;图3是本发明主机主用态与备用态竞争流程示意图;图4是本发明主机主用态向备用态切换流程示意图;图5是本发明主机备用态向主用态切换流程示意图。具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不限制本发明的范围。如图1所示,本发明提供一种基于主机状态和优先级的主用主机动态选择方法,应用于包括两个以上主机的群组系统中,所述方法包括:主机向群组系统内的其他主机发送竞争消息进入竞争状态;主机根据竞争消息实时判断并确定当前的竞争状态并发送相应的竞争消息。下面对本发明和提供的基于主机状态和优先级的主用主机动态选择方法展开详细的说明。如图1所示,在群组系统的主机启动后,所有主机都进入初始态,所有主机在初始态进行主备竞争。所有主机竞争时向群组系统内的其 它主机发送竞争消息。在本发明中,如表1所示所述竞争消息包括主机优先级、主机地址、主机状态、心跳计数器、消息类别中的一种或多种。其中,主机优先级表示当前主机的在群组中的优先级,表示主机提供服务的能力优先性。优先级以正整数表示,数值越小,则优先级越高。主机地址表示主机的地址,一般为Ip地址。如表2所示,主机状态表示区分主机所处状态(例如:无效态、竞争阶段、升主阶段、主用状态、备用状态、故障态)。心跳计数器用来统计没有收到某邻主机消息的周期数。若在一个通信周期内未收到该主机的消息,则将心跳计数器增1。如果心跳计数器的值大于常数N,则认为与该主机失去联系。通常情况下,常数N为3。如表3所示,消息类别包括竞争消息、升主通告、主用态消息、备用态消息、故障态消息之一。表1表示竞争消息内容主机优先级主机地址主机状态消息类别心跳计数器表2表示主机状态主机状态0无效态主机状态1竞争阶段主机状态2升主阶段主机状态3主用态主机状态4备用态主机状态5故障态表3表示消息类别消息类别1竞争消息消息类别2升主通告消息类别3主用态消息消息类别4备用态消息消息类别5故障态消息在本发明中,所有主机都对对群组中其他主机维护一个邻主机列 表。该邻主机列表以优先级为主索引,每个表项保存邻主机的优先级,主机地址,主机所处状态,以及距最近一次收到该邻主机的消息的周期数。主机初始化时,该邻主机列表内容都为空,并启动定时器,设置定时器超时时间为1个通信周期。当主机收到其它主机发来的消息,则根据其它主机的消息中携带的优先级寻找到其它主机列表中相应的表项,如果该表项主机地址不为空,则认为该消息是主机状态更新消息,那么就更新该其它主机的主机状态,并更新该其它主机的心跳计数器为0;如果该表项主机地址为空,则认为是第一次收到该主机的消息,则增加该表项的主机地址,主机状态,并记录该邻主机的心跳计数器为0。定时器到期,将会给邻主机列表中所有表项的心跳计数器加1。如图2、图3所示,下面对主机竞争的步骤详细说明。S1:主机开机或者故障恢复,进入初始竞争态。S2:主机发送消息类别为竞争消息的竞争消息,该竞争消息中携带了本机优先级,处于竞争状态的主机状态。并监听群组内其他主机的所发送的消息。该步骤循环3次,持续3个通信周期进入S3。本发明通过等待3个周期,确保收到其他各个主机的真实状态,以判断本机下一步应该进入的状态。是在竞争时间的前提下,保证了主机竞争真实状态的准确性。S3:3个通信周期结束后,扫描接收到其他主机发送的消息中列表所有表项,判断是否存在主机状态为主用态的主机。如有则转S4,否则转S6;S4:判断主机状态为主用态主机的优先级是否比本机优先级更高,如果是,则转S2,否则转S5;S5:将本机状态置为备用态,并开始周期性广播备用态消息,消息类别为备用态消息,携带主机地址,主机优先级,以及设置为备用态的主机状态,并退出。S6:对邻主机列表中状态为非无效态且非故障态的主机进行扫描,判断主机自身优先级是否比所有有效且非故障态的主机的优先级都高,如果不是,则转第S7,否则转第S8;S7:将本机状态置为备用态,并开始周期性广播备用态消息,消息类别为备用态消息,携带主机地址,主机优先级,以及设置为备用态的主机状态,并退出。S8:主机开始准备将本机置为主用态,发送消息类别为2的升主通告消息,消息类别为升主通告,携带主机地址,主机优先级,以及设置为升主阶段的主机状态。并监听其他主机发送的消息。该步循环3次。S9:在第S8步中未监听到主机优先级比自身更高的主机发出的竞争消息或升主通告,则转S10步,否则转S11步。S10:将本机状态置为主用态,并开始周期性广播主用态消息,消息类别为主用态消息,携带主机地址,主机优先级,以及设置为主用态的主机状态,并退出。S11:将本机状态置为备用态,并开始周期性广播备用态消息,消息类别为备用态消息,携带主机地址,主机优先级,以及设置为备用态的主机状态,并退出。主机竞争结束后,如果当前主机为主用主机则广播主用主用态消息,声明自己是主用主机;如果初始态竞争失败,则当前主机为备用主机,广播备用态消息,声明自己是备用主机;如果当前主机为故障态,则广播故障态消息,声明自己为故障主机。如果当前主机为关机,则主机下电关机,停发任何消息。备用态主机收到主用态主机的故障信息或预定时间未收到主用态主机的主用态信息,则进入竞争状态。备用态收到主用主机的故障通告或长时间未收到主用主机的主用态消息后进入初始态,进行主备竞争;故障态主机故障恢复后,停止广播故障消息,进入初始态,进 行主备竞争;备用态主机故障,进入故障态,广播故障消息;初始态主机发生故障,进入故障态,广播故障消息。主用主用态主机收到优先级比自身优先级高的竞争消息,则将自己置为备用态,并广播备用态消息。在本发明中,主用态主机和备用态主机实时判断接收到的竞争消息优先级,并根据收到的竞争消息进行主机状态的维护。主机状态维护方法分四个分方法,分别描述由主用主用态转备用态的方法、由备用态转主用态的方法和由非故障态转故障态的方法、以及故障态恢复的方法。下面对各种不同主机状态维护方法展开详细说明。如图2、图4所示,主机自身为主用态时,收到竞争消息或升主通告,则进入主机主用态转备用态,具体方法如下:a)判断竞争消息或升主通告所携带的优先级是否比主机自身优先级高,若是,转b),否则转c)。b)将本机状态置为备用态,并开始周期性广播备用态消息,消息类别为4,携带主机地址,主机优先级,以及设置为备用态的主机状态,并退出方法。c)维持主机主用态,继续广播主机主用态消息。如图5所示,主机备用态转主用态的方法如下:当主机处于备用态,且收到消息类别为5的故障态消息时启动。d)判断发出该消息的主机在本机的邻主机列表中是否为标记为主机主用态,若不是,则转e),否则转f)。e)维持主机备用态,继续广播备用态消息。f)判断在邻主机列表中是否存在优先级比本机自身优先级高,且不是处于故障态的主机,如果存在,则转g),否则转h)。g)维持主机备用态,继续广播备用态消息。h)主机开始准备将本机进入升主状态,发送消息类别为2的升主通告消息,消息类别为2,携带主机地址,主机优先级,以及设 置为升主阶段的主机状态。并监听其他主机发送的消息。该步循环3次。i)在第h)步中未监听到主机优先级比自身更高的主机发出的竞争消息或升主通告,则转第j)步,否则转第k)步。j)将本机状态置为主机主用态,并开始周期性广播主用主用态消息,消息类别为3,携带主机地址,主机优先级,以及设置为主用态的主机状态,退出竞争方法,同时启动数据库链接进程,尝试对业务数据文件所在公共磁盘阵列进行挂载,挂载成功后,开始对数据、文件进行计算和存储。k)将本机状态置为备用态,并开始周期性广播备用态消息,消息类别为4,携带主机地址,主机优先级,以及设置为备用态的主机状态,并退出竞争方法。当主机处于备用态,如果心跳计数器超过规定值,即在指定通信周期数后,仅未收到主用主机的消息,则认为主用主机异常,该主机进入主备竞争状态,转步骤f)。当主机处于备用态,如果心跳计数器超过规定值,即在指定通信周期数后,没有收到所有邻主机的消息,且群组只有二台主机互为主备,则认为主用主机异常,该主机进入主备竞争状态,转步骤h)。当主机处于备用态,如果心跳计数器超过规定值,即在指定通信周期数后,没有收到所有邻主机的消息,群组中有多台主机,则认为自身处于与群组失去联系,自身进行后续恢复流程。如图2所示,非故障态转故障态的方法如下:当主机检测到自身已经处于故障态时,则将本机状态置为故障态,并广播消息类别为5的故障态消息;当主机检测到自身即将处于故障态时,例如通过操作维护对主机发起关机操作,关机前发送广播消息类型为5的故障态消息。故障态消息携带主机地址,主机优先级,以及设置为故障态的主机状态。若主机出现故障,则主机应该停掉数据库链接进程,卸载业 务数据和文件所在磁盘阵列,清除主机内缓冲区数据,例如,将已处理的数据存在文件保存至磁盘阵列,正在处理的数据在数据库中置未处理标记,由接管的下一个主用态主机进行处理。如图2所示,故障态恢复的方法如下:当主机处于故障态时,检测到故障已经恢复,则停止广播故障态消息,并进入主备竞争方法。综上所述,本发明提供的基于主机状态和优先级的主用主机动态选择方法,根据优先级动态地选择出群组内的主控或主用主机,以提高群组对外提供的服务的质量,以及提高群组内主机的管理能力。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数 据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关
技术领域
的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1