zookeeper是什么
zookeeper是一个基于观察者模式的分布式微服务管理框架。
zookeeper的特点
一个领导者 多个跟随者
集群中只要有半数以上的节点存活,就能够正常工作
全局数据一致,每个server保存一份相同的副本
更新请求顺序执行
更新顺序原子性
zookeeper的数据结构
zookeeper的数据结构和linux文件系统很类似,整体上是一棵树,每个节点是一个ZNode,每个ZNode默认能够存储1M的数据,并且通过路径唯一标识。
zookeeper的应用场景
1 统一命名服务
2 统一配置管理
一般要求一个集群中所有节点的配置信息是一致的,对配置文件修改以后,能够快速地同步到各个节点上。
实现:将配置信息写入zookeeper的一个ZNode上,各个客户端服务监听这个ZNode,一旦ZNode中的数据被修改,Zookeeper将通知所有的客户端服务器。
3 统一集群管理
zookeeper可以实现实时监控节点状态的变化,将节点信息写入zookeeper上的一个ZNode,监听这个Znode可以获取它实时状态的变化。
4 服务器动态上下线
服务端启动时去注册信息
客户端获取当前在线服务器列表,并且注册监听
服务端节点下线
服务端节点下线通知
客户端重新获取服务端列表并注册监听
5 软负载均衡
记录每台服务器的访问数,让访问数量最少的服务器去处理最新的客户端请求
zookeeper重要参数配置
tickTime 一个心跳帧的时间
initLimit 心跳帧的个数,服务刚刚启动,如果超过了这么多的心跳帧则认为leader和follower失去了联系
syncLimit 心跳帧个数,服务已经启动,如果超过了这么多心跳帧则认为leader和follower失去了联系
clientPort 客户访问服务端的端口号
dateDir 存储数据的地方
zookeeper的选举机制
每个节点最开始一定是自私的,把票投给了自己,如果没能选出leader的话就转而把票投给Id号大的节点,选出leader后立即停止
zookeeper的节点类型
持久 客户端与服务器断开连接后,创建的节点不删除
持久化目录节点
持久化顺序编号目录节点
短暂 客户端与服务器断开连接后,创建的节点自己删除
临时目录节点
临时顺序编号目录节点
在分布式系统中,顺序编号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序。
zookeeper的分布式部署
设置每个服务的Id,follower和leader的通信端口,选举leader节点的端口
zookeeper shell命令的操作
如何创建持久化节点
如何创建短暂节点
如何创建临时数据编号的节点
如何监听节点内容变化(一次性有效)
如何监听节点路径变化(一次性有效)
删除节点
递归删除节点
zookeeper监听器原理
首先有一个main线程
在main线程中创建zookeeper客户端,此时创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)
通过connect将注册监听的事件发送到服务器中去
zookeeper将监听事件存放到监听列表中
一旦事件发生,listener便会收到通知,并在内部调用process( )方法。
zookeeoper写数据流程
zookeeper如何创建zk客户端;如何创建节点;如何监听节点状态变化;如何判断节点是否存在
干掉zookeeper
最新推荐文章于 2023-10-15 14:04:54 发布