数据模型
-
zk的数据模型也可以理解为liunx/unix的文件目录
-
每一个节点都称为znode,他可以有子节点,也可以有数据
-
每个节点分为临时节点和永久节点,临时节点在客户端断开后消失
-
每个zk节点都有各自的版本号,可以通过命令行来显示节点信息
-
每当节点数据变化的,那么该节点的版本号会累加(乐观锁)
-
删除/修改过时节点,版本号不匹配会报错
-
每个zk节点存储的数据不易过大,几K即可
-
节点可以设置权限acl,可以通过权限来限制用户访问
Zk作用体现
-
master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也就是所谓的首脑模式,从而保证我们的集群是高可用的
-
统一配置文件管理,即只需部署一台服务器,则可以把相同的配置文件同步到所有的服务器,此操作在云计算中用的较多
-
发布订阅,类似于消息队列MQ,dubbo发布者把数据存在znode上,订阅着会读取这个数据
-
提供分布式锁,分布式环境中不同进程之间争夺资源,类似于多线程中的锁
-
集群管理,集群中确保数据的强一致性
Zk节点模型
-
永久节点:节点创建后,不会因为会话消失而销毁
-
临时节点:如果客户端与服务端断开链接,则会删除临时节点
-
顺序节点:兼容上面两周节点的特性,zk在创建顺序节点时会保证有序
Zk的特性
1.session的基本原理
-
客户端与服务端之间的链接存在的会话
-
每个会话都可以设置超时时间
-
心跳结束,session就过期
-
session过期,则临时节点znode会被抛弃
-
心跳极值:客户端向服务器ping包请求