Master选举
Master:通过Master来进行领导。
1、Leader选举和Master选举的区别:
①、Leader选举是遵循Zab协议的一种协调方式,保证数据的一致性,Leader选举是投票产生的。
②、而Master选举保证高可用性,Master-slave的思想。
2、高可用:不管怎么出现故障,整个集群是对外提供服务的,提供的服务是不能断的。一般出现单点故障的话解决的办法是主备策略(Master-slave)。
在Zk集群中,在zookeeper的根节点一般有两个节点,一个master节点,通过master节点当选为Master。而servers节点存储的是所有的可用的服务列表的信息。
在Zk集群的服务中比如有三个工作服务实例相同的,同时去抢占创建Master节点,然后把自己的服务信息注册到servers的节点的下面,注册的原因是为了选举出Master。这个master节点是临时的。
当第一个工作服务的实例挂掉的话,这个master的节点也就删除。
剩下的节点的工作服务实例监听到了master节点消失之后,又去竞争master节点。谁先写入谁就先成为Master,比如第三台的服务实例抢到了master节点,从而第三台就为master。
剩下的节点服务实例也会去竞争创建节点master,但是当在zookeeper节点下有master节点的话,就不会再创建节点Master了,而是注册master服务的信息,当master挂掉之后,要更新整个服务列表,也是为了执行master的命令才会注册。
这时始终都有一个master,都可以对外提供服务。这就是高可用的特征,有且只有一个master。master选举针对服务而言的,不是针对于zk集群中的节点。这三个服务实例统统部署的同一个服务。
比如下面有三个支付服务的实例,只有一个服务实例对外提供服务。其中两个都是备用的。
master节点没有时间限制,只要work server宕机掉,master节点就消失,一旦消失,其他的服务实例就来抢。
当Master挂掉之后,也可以选择编号最大的来创建master节点从而选为master。这也解决了当服务实例太多而导致的网络阻塞的原因。
zk的主要作用是提供了强大的监听器,就是服务的注册与发现,节点的删除和新增它都能够进行监测。可以通过一些工具和算法来达到负载均衡和命名服务。
如果出现网络抖动的问题的话,导致master节点出现删
处理方案:为了提高效率,开销最小,首先先分析先前的master是否恢复,如果恢复了,那么就选择这个为master,如果没有恢复就让其它竞争master。
实际当中,网络抖动肯定是要加的,保证高可用性和效率。