一种选举方法、装置及数据库镜像集群节点的制作方法_3

文档序号:8361489阅读:来源:国知局
所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的第二节点包括:
[0068]根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的所有节点;
[0069]在所述所有节点的数目大于一个时,从所述所有节点中选择出对应选择优先级最高的所述第二节点。
[0070]其中,所述选择优先级由节点的镜像类型来表征,其中,镜像类型为同步镜像的节点的选择优先级比镜像类型为异步镜像的节点的选择优先级高;或者,
[0071]所述选择优先级由节点的IP地址和监听端口号组成的字符串来表征,其中,节点的IP地址和监听端口号组成的字符串映射成的数值越大表明节点的选择优先级越高,或者,节点的IP地址和监听端口号组成的字符串映射成的数值越小表明节点的选择优先级越高;或者,
[0072]所述选择优先级由节点的镜像类型、和IP地址和监听端口号组成的字符串来表征,其中,镜像类型为同步镜像的节点的选择优先级比镜像类型为异步镜像的节点的选择优先级高;镜像类型相同的至少两个节点中,节点的IP地址和监听端口号组成的字符串映射成的数值越大表明节点的选择优先级越高,或者,节点的IP地址和监听端口号组成的字符串映射成的数值越小表明节点的选择优先级越高。
[0073]此外,所述选择优先级也可以由用户预设,例如,硬件配置较好的节点对应的选择优先级较高。
[0074]所述多个节点各自对应的选择优先级均可以预先配置给所述多个节点中的每个节点;或者,所述多个节点中每个节点对应的选择优先级可以预先配置给该节点,再由该节点广播给其它节点,例如,可以有:
[0075]所述多个节点中每个节点广播的包括自身维护的表征量的广播信息中包括该节点对应的选择优先级;
[0076]所述所有节点各自对应的选择优先级由所述第一节点从所述所有节点广播的广播信息中分别解析出来。
[0077]在本发明实施例中,所述第一节点可以通过与所述多个节点中其它每个节点分别建立的单个TCP连接来向该节点发送自身维护的表征量,通过自身内部的模块调用来向自身发送自身维护的表征量,通过这种方式,来实现向所述多个节点广播包括自身维护的表征量的广播信息。
[0078]在本发明实施例中,所述向所述多个节点广播包括自身维护的表征量的广播信息,同时开始监听所述多个节点广播的包括自身维护的表征量的广播信息的步骤,可以由所述第一节点在初始化配置完成时执行,或者,也可以由所述第一节点在检测到所述数据库镜像集群中主节点运行出现问题时执行。对于后者,具体可以有:
[0079]所述方法还包括:
[0080]向所述多个节点广播包括自身维护的表征量的广播信息之前,监听所述数据库镜像集群中主节点以设定周期、周期性地向所述多个节点广播的心跳信息;
[0081]判断在监听到所述数据库镜像集群中主节点广播的第一心跳信息之后的设定时长时间内,是否监听到所述数据库镜像集群中主节点广播的下一心跳信息,获取一判断结果,其中,所述设定时长大于所述设定周期;
[0082]当所述判断结果为否时,进入所述向所述多个节点广播包括自身维护的表征量的广播信息,同时开始监听所述多个节点广播的包括自身维护的表征量的广播信息的步骤。
[0083]为将本发明实施例阐述得更加清楚明白,下面提供本发明实施例的较佳实施方式。
[0084]本较佳实施方式提供一种在数据库镜像集群中选取唯一、数据最新、性能好的Master节点的方法。
[0085]在MPP架构中,数据库镜像集群是一个Master节点多个Slave的集群,对于需要选取唯一 Master节点的场景,数据库镜像集群选取唯一的Master节点与一般的集群选取唯一的Master节点有不同的地方,因为镜像集群的功能决定了该集群可能有多个节点,为了不影响集群的写数据的性能,只能少部分的节点与Master节点是同步的,大部分的节点是异步的,所以一定要选取当前数据最新的节点作为Master节点,否则会导致数据丢失。另外,数据库集群环境中主节点的性能,决定集群写数据的性能,因而尽可能的保证主节点的性能好。本较佳实施方式就是针对上述数据库复制集群的这些特点,设计的一种专门的选举方法。这里的同步是指同步镜像,异步是指异步镜像。
[0086]集群中的Master节点,在没有信息需要同步给Slave节点时,则每隔一定时间间隔TO向所有的节点广播心跳信息,以便集群中的所有节点能够知道Master节点的运行状态良好。
[0087]集群中的Slave节点,在给定的时间Tl OT0)内没有收到Master节点的心跳信息,则开始广播自己的一些信息,包括数据的新旧程度,机器硬件配置(配置好的可以用3表示,配置中等的用2表示,配置差的用I表示),IP地址和监听端口字符串。同时也会收到其它Slave节点广播的自己的一些信息,等待一定的时间T2,收到>Max (N-N1-1,I) (Max是取二者中较大的值,N是集群中节点的总数,NI是集群中宕机的节点数目,这是为了让这些节点能够选出相同的数据最新的节点)个节点的信息,则根据相应的算法(该算法一定要保证,相同的信息无论在哪个节点上运行都一定能选出的相同的最优节点)选出最优的节点,并向该节点发送信息,表示赞同该节点成为新的Master节点。在一定的时间T3内,收到>N/2赞同信息的Slave节点(这是为了保证选举出来的Master节点是唯一的,并且选取最优节点算法的特性也保证了正常情况下,一定有某一 Slave节点会收到〉N/2的赞同信息),将自己的角色切换为Master节点。详细流程见图2。
[0088]参见图2,该在数据库镜像集群中选取唯一 Master节点的方法包括如下步骤:
[0089]步骤201,节点当前状态为从节点,在接收到主节点周期性广播的心跳信息之后,进入步骤202 ;
[0090]步骤202,等待时间Tl ;
[0091]步骤203,判断是否收到主节点广播的心跳信息,如果是,则返回步骤201,即保持从节点的角色;否则,进入步骤204 ;
[0092]步骤201?202可以替换为:节点初始化完成后,等待时间Tl ;相应地,步骤203可以替换为:判断是否收到主节点广播的心跳信息,如果是,则将自身状态设置为从节点,然后进入步骤202。
[0093]步骤204,该节点广播自身的相关信息并等待时间T2 ;
[0094]步骤205,判断是否收到数目大于Max (N_N1_1,1)的广播信息,如果是,则进入步骤206 ;否则,进入步骤210 ;
[0095]步骤206,计算最优节点,并向最优节点发送赞同信息,等待时间T3 ;
[0096]步骤207,判断是否收取了数目大于N/2的赞同信息,如果是,则进入步骤208 ;否贝丨J,进入步骤209 ;
[0097]步骤208,该节点设置自己的角色为Master节点,并每隔时间TO广播心跳信息;
[0098]步骤209,等待时间T4,返回步骤203 ;
[0099]步骤210,等待时间T3,进入步骤207。
[0100]对于上节中描述的选取唯一 Master节点的方法,整个选举方法的流程是很清晰的,但是选举方法中涉及到的一些难点,在具体实施过程中需要留意,具体如下:
[0101]1.节点之间如何通信;
[0102]2.节点上的数据的新旧程度如何确定;
[0103]3.选出最优节点的算法如何实现;
[0104]下面将对这三点进行详细的描述。
[0105]对于难点1,不同节点之间的通信可以通过TCP协议来完成,首先在每个节点上有一个监听其它节点连接的端口,还要与其它所有节点分别建立连接。当需要向某节点发送信息时,通过先前建立的连接去发送即可;当需要发送广播信息时,则遍历所有的有效连接
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1