开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
数据节点(znode)
znode有4种类别
- 持久节点 :一旦创建就一直存在即使 ZooKeeper 集群宕机,直到将其删除。
- 临时节点 :临时节点的生命周期是与 客户端会话(session) 绑定的,会话消失则节点消失 。并且,临时节点只能做叶子节点 ,不能创建子节点。
- 持久顺序节点 :除了具有持久节点的特性之外, 子节点的名称还具有顺序性。
- 临时顺序节点 :除了具备临时节点的特性之外,子节点的名称还具有顺序性
每个znode由2部分组成,分别为状态信息(stat)和data(数据主体)
stat包括身份证-事务ID,创建时间,更新时间,版本号,子节点个数等个人信息
版本(version)
stat中还记录znode的版本,znode子节点的版本,zonde的ACL版本
ACL(权限控制)
ZooKeeper 采用 ACL(AccessControlLists)策略来进行权限控制
- CREATE : 能创建子节点
- READ :能获取节点数据和列出其子节点
- WRITE : 能设置/更新节点数据
- DELETE : 能删除子节点
- ADMIN : 能设置节点 ACL 的权限
当然,还有一些用于指定什么用户才能访问的功能,也就是身份认证
world : 默认方式,所有用户都可无条件访问。
auth :不使用任何 id,代表任何已认证的用户。
digest :用户名:密码认证方式: username:password 。
ip : 对指定 ip 进行限制
事件监听器(Watcher)
监听器是各大技术基本都有的概念,就是通过监听某种行为,发生了指定内容就做出回应,就像是家门口的摄像头,要是来人了就发出警报。
PS:Zookeeper中的监听器是在客户端进行注册,然后由客户端推送至服务端进行注册,在服务端进行监控,要是监控条件触发,则返回至客户端进行监听方法调用
会话(Session)
Session是客户端与Zookeeper服务端进行交互的连接。可以这样理解,客户端相当于一个用户,通过ession登录上了Zookeeper
还能通过Session完成心跳检测,Session中记录了过期时间SessionTimeOut,要是客户端连接的其中一台Zookeeper服务宕机了,只要不超过这个时间后又重新连接上了另一台Zookeeper服务器,那么判断之前的会话依然有效。可以这么理解,一名用户登录上了一个网站后,对应这名用户登录的网站服务端宕机了,需要连接到新的服务器上,要是没超过SessionTimeOut,那么就无需重新登录,超过则需要重新登陆,这个过程对用户来说是无感的
PS:每个Session对应的SessionID必须保证全局唯一ID