Zookeeper(2)

90 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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