zookeeper简介
1.分布式系统定义及⾯临的问题
zk最为主要的使用场景,是作为分布式系统的分布式协同服务
假设有一个5人项目组,将面临以下问题,但由于人脑智能,可以很好应对这些问题,在计算机的世界,这样做是行不通的。因此,分布式系统必须采用合理的方式解决掉以上的问题
分布式系统的协调工作就是通过某种方式,让每个节点的信息能够同步和共享。这依赖于服务进程之间的通信,通信方式有:
- 通过网络进行信息共享
- 通过共享存储
2.ZooKeeper如何解决分布式系统⾯临的问题
ZooKeeper使用的是共享存储。但分布式应用也需要和存储进行网络通信。
3.zk基本概念
Zookeeper是一个开源分布式协调服务,分布式应用程序可以基于它实现诸如数据订阅、发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能
-
集群角色
最典型就是master/slave模式,而在zk中,引入了Leader、follower、observer三种角色。唯一区别,observer不参与leader选举过程,不参与写操作的过半写成功策略,因此observer可以在不影响写性能的情况下提升集群的性能
-
会话
session指客户端会话,一个客户端连接是指客户端和服务端之间的一个tcp长连接。
-
数据节点 znode
构成集群的机器,称为机器节点;数据模型中的数据单元,称为数据节点
-
版本
每个znode,都会维护一个stat数据结构,记录三个数据版本,version(当前版本)、cversion(当前znode子节点版本)、aversion(当前znode的acl版本)
-
watcher事件监听器
允许用户注册一些watcher,并且在一些特定事件触发的时候,zk会将事件通知到感兴趣的客户端
-
acl
采用acl策略来进行权限控制,有如下5种
Create:创建子节点权限
Read:获取节点数据和子节点列表的权限
Write:更新节点数据的权限
Delete:删除子节点的权限
Admin:设置节点acl的权限