zookeeper系列之基本概念

它是一个开源的分布式协调服务,为啥是协调呢,其实它的出现就是为了把那些复杂且容易出错的分布式数据一致性服务封装起来,构成一个高效可靠的系统服务,它其实就是一个典型的分布式数据一致性问题的解决方案,分布式应用程序可以基于它实现数据的订阅/发布、负载均衡等等功能和场景

再深入zk之前,这些概念是要清楚的,否则一切都跟背面试题一样:

1、集群角色

在分布式系统中,绝大多数的中间件都是主备模式,也就是master/slave,但是在zk中就不一样了,它反其道而行,引入了Leader、Follower、Observer这三种角色,leader服务器是负责客户端的读写,而且所有机器通过Leader选举投票来选定一台服务作为Leader,其他俩服务Follower和Observer都能提供读操作,区别在于:Observer不参与Leader选举,也不参与写操作的过半写成功策略,所以Observer可以在不影响写性能的情况下提升集群的性能

2、会话session

指的是客户端会话,一个客户端连接是指客户端和服务端之间的一个TCP长链接,zk对外的端口默认是2181,讲一下流程:客户端启动的时候,首先会与服务器简历一个TCP连接,从第一次连接建立开始,客户端会话的声明周期也开始了,通过这个连接,客户端能够做心跳检测与服务器保持有效的会话,也能向zk服务器发送请求并接受相应,同时还能通过连接接受来自服务器的watch事件通知

3、数据节点Znode

其实说到节点,也就是指集群的每一台机器,在zk中,有两种节点概念,第一种是构成集群的机器,这个一般来说叫机器节点,第二种就是数据层面的数据单元,这个我们叫做数据节点,zk将所有数据存储在内存里,数据模型就是一棵树,每一层都是用/进行分割的路径,每一个/分割的都是一个Znode,每个Znode上都会保存自己的数据内容,同时还会保存一系列属性信息

zookeeper系列之基本概念_第1张图片

4、版本

这个是针对Znode做的一个名叫Stat的数据结构,而且Stat还记录了三个数据版本,分别是version(当前Znode版本)、cversion(当前Znode子节点版本)、aversion(当前Znode的ACL版本)

5、Watcher(事件监听器)

它是zk中一个很重要的一个机制,zk允许用户在指定节点上注册一些监听器,并且在一些特定事件触发的时候,zk还会将事件通知到感兴趣的客户端,所有它是实现分布式协调服务的一个重要机制

6、ACL

zk采用的是ACL策略来进行权限控制,具体值有下面吴哥

①CREATE:创建子节点的权限

②READ:获取节点数据和子节点列表的权限

③WRITE:更新节点数据的权限

④DELETE:删除子节点的权限

⑤ADMIN:设置节点ACL的权限

其中CREATE和DELETE是针对子节点的权限控制

你可能感兴趣的:(中间件,ZooKeeper,zookeeper)