Zookeeper基础总结

Zookeeper的数据结构

树型结构,类似于文件目录.

Zookeeper的节点类型

临时节点,临时带编号节点,持久节点,持久带编号节点.

临时节点下不允许创建子节点.

Zookeeper角色

Leader,Follower.

Zookeeper的工作原理

服务提供者启动时,会将其服务名称,ip地址注册到配置中心。
服务消费者在第一次调用服务时,会通过注册中心找到相应的服务的IP地址列表,并缓存到本地,以供后续使用。当消费者调用服务时,不会再去请求注册中心,而是直接通过负载均衡算法从IP列表中取一个服务提供者的服务器调用服务。
当服务提供者的某台服务器宕机或下线时,相应的ip会从服务提供者IP列表中移除。同时,注册中心会将新的服务IP地址列表发送给服务消费者机器,缓存在消费者本机。
当某个服务的所有服务器都下线了,那么这个服务也就下线了。
同样,当服务提供者的某台服务器上线时,注册中心会将新的服务IP地址列表发送给服务消费者机器,缓存在消费者本机。
服务提供方可以根据服务消费者的数量来作为服务下线的依据.

Zookeeper心跳检测机制

zookeeper提供了“心跳检测”功能,它会定时向各个服务提供者发送一个请求(实际上建立的是一个 socket 长连接),如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其剔除.

服务消费者会去监听相应路径,一旦路径有变化(增加或减少),zookeeper都会通知服务消费方服务提供者地址列表已经发生改变,从而进行更新

Zookeeper的选举机制

投票过半数则选举Leader成功,依据id进行投票,优先投给当前节点中id大的.选举成功后,后续来的节点,无论多大,都是Follower.

Zookeeper的监听原理

ZK客户端,会创建connet网络通信连接,listener监听线程.

通过connect连接将注册的监听事件发送给Zookeeper服务端.

服务端将监听事件添加到注册监听器列表,开始监听,监听到有数据或路径变化.将消息发送给listener.

listener调用process方法.

Zookeeper的常用命令

create /zk myData

get /zk [watch]

set /zk newDate

delete /zk

ls /zk [watch]

stat /zk [watch]

Zookeeper与分布式锁

使用zookeeper创建临时序列节点来实现分布式锁,适用于顺序执行的程序,大体思路就是创建临时序列节点,找出最小的序列节点,获取分布式锁,程序执行完成之后此序列节点消失,通过watch来监控节点的变化,从剩下的节点的找到最小的序列节点,获取分布式锁,执行相应处理,依次类推……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章