Zookeeper概念

Zookeeper概念

  • 基本概念
  • 集群角色
  • 会话(Session)
  • 数据节点(ZNode)
  • 版本
  • Watcher(事件监听器)
  • ACL(Access Control Lists)

基本概念

Zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂的且容易出错的分布式⼀致性服务 封装起来 ,构成⼀个⾼效可靠的原语集,并以⼀些简单的接⼝提供给⽤户使⽤。zookeeper是⼀个典型 的分布式数据⼀致性的解决⽅案,分布式应⽤程序可以基于它实现诸如数据订阅/发布、负载均衡、命名 服务、集群管理、分布式锁和分布式队列等功能

集群角色

三种⻆⾊:Leader、 Follower、Observer。
Zookeeper集群中的所有机器通过Leader选举来选定⼀台被称为 Leader的机器,Leader服务器为客户端提供读和写服务,除Leader外,其他机器包括Follower和 Observer,Follower和Observer都能提供读服务,唯⼀的区别在于Observer不参与Leader选举过程, 不参与写操作的过半写成功策略,因此Observer可以在不影响写性能的情况下提升集群的性能。
客户端发送写请求 执行流程:
1.follower接收到客户端发送过来的请求的写操作后,会把该请求转发给leader进行处理。
2.leader接收到follower发送过来的写请求后,会把该写请求转换成带有各种状态的事务,并进行广播通知(发送proposal)所有的follower及observer
3.所有接收到proposal的follower就会进行投票,都需要返回ACK给leader
4.提交事务给leader
注:observer也可以接收写请求,并转发给leader
Zookeeper概念_第1张图片

会话(Session)

指客户端会话,一个客户端连接指客户端和服务端的一个TCP长连接,Zookeeper对外的默认端口:2181,客户端启动的时候,首先要与服务端建议一个TCP连接,从第一次建立连接开始,会话的生命周期就开始了。通过这个连接,客户端可以通过心跳检测的方式与服务器保持有效会话;也能够向Zookeeper服务端发送请求并接受响应;同时通过该连接接收来自服务器的Watch事件通知。

数据节点(ZNode)

Zookeeper中节点分为两类:
1.集群中的机器节点
2.数据模型中的数据单元,称之为数据节点——ZNode。Zookeeper中所有数据都是存在内存中,数据模型是一颗数(ZNode Tree),用“/”分割路径,这就是一个ZNode(例:/app/path1)。每个ZNode都会有自己的数据内容,同时还会保存一系列的属性信息。如下图
Zookeeper概念_第2张图片

版本

版本分为三种:
1.version —— 当前ZNode的版本
2.cversion —— 当前ZNode子节点下的版本
3.aversion—— 当前ZNode的ACL版本
这三个数据版本维护在Zookeeper一个叫做Stat的数据结构中。

Watcher(事件监听器)

Zookeeper实现分布式协调服务的重要特征。Zookeeper允许用户在指定的节点上注册一些Watcher,当特定事件触发时,Zookeeper会将事件通知到感兴趣的客户端上。

ACL(Access Control Lists)

指采用ACL策略来进行权限控制,有如下5种权限:
1.CREATE——创建子节点的权限
2.READ——获取节点数据和子节点列表的权限
3.WRITE——更新节点数据的权限
4.DELETE——删除子节点的权限
5.ADMIN——设置节点ACL权限
注:CREATE和DELETE这两种权限都是针对子节点的权限控制。

你可能感兴趣的:(Zookeeper,zookeeper)