zookeeper

96 阅读2分钟

1、zookeeper入门

1.1 概述

zookeeper 是一个分布式的,为分布式应用提供协调服务的框架。

是一种基于观察者模式的分布式服务管理框架。

zookeeper = 文件系统 + 通知机制

工作机制:负责存储和管理大家都关心的数据,接受观察者的注册,一旦这些数据的状态发生变化,zookeeper负责通知在当中注册的那些观察者做出相应的反应。

2、zookeeper 内部原理

2.1 监听器原理

image.png

1、zookeeper客户端会创建两个线程,一个负责网络通信的connect,一个负责监听listener 2、通过connect线程将注册的监听事件发送给zookeeper 3、zookeeper注册监听列表中会添加这个监听事件。 4、一旦监测到数据有变化,就会把这个消息发送给listener,listener内部再调用process()方法。

2.2 选举机制

半数机制:当集群中有一半以上机器存活时,该集群就可以使用,适合部署奇数台服务器。

1.最初的时候

第一台机器启动时,会给自己投票,并且判断当前得票是否大于半数,小于半数时,处于looking状态, 接着第二台启动,同时也会给自己投一票,并且和其他机器交换选票,看自己的得票数是否大于半数,大于半数则当选,要是和其他选票相同,会比较每台机器的myid,myid小的会将选票投给自己大的,在判断当前选票,以此类推。

2、已经有leader的时候,leader宕机的时候

会直接比较每一台机器的czxid,也就是当前节点的状态是否时最新的,最大的,拥有信息最全的那个节点,大的直接当选leader,假如czxid都相同的话,会比较myid.