zookeeper是什么
zookeeper 是一个分布式服务框架,是Apache Hadoop 的一个子项目,主要用来解决分布式应用中经常遇到的一些数据管理问题,
如:数据发布订阅、负载均衡、统一命名服务、master选举、状态同步服务、集群管理服务、配置管理、分布式队列、分布式锁
设计目标:
1、简单的数据结构:共享的树形结构,类似文件系统,存储于内存中
2、可以构建集群:避免单点故障,3-5台就可以组装成集群,超过半数可以对外提供服务
3、顺序访问:对于每个读请求,zk会分配一个全局的递增编号,利用这个特性可以实现高级协调服务
4、高性能:基于内存操作,服务于非事物请求,适用于读操作为主的业务场景
zookeeper目录结构:
bin:存放系统脚本
conf:存放配置文件
contrib:zk附加功能支持
dis-maven: maven 仓库文件
docs: zk文档
lib: 依赖的第三方库
recipes: 经典场景样例代码
src: zk源码
zookeeper 特性:
(1)、会话(session):
客户端与服务端的一次会话连接,本质是TCP长连接,通过会话可以进行心跳检测和数据传输
(2)、 数据节点(znode)
节点类型:持久节点(persistent)、持久顺序节点(persistent_sequential)、临时节点(ephemeral)、临时顺序节点(ephemeral_sequential)
注:对于持久节点和临时节点,同一个znode下,节点的名称是唯一的
(3)、版本
(4)、 watcher
事件监听、客户端可以在节点上注册监听,当特定的事件发生后,zk会通知到感兴趣的客户端;
eventType:NodeCreated、NodeDeleted、NodeDataChanged、NodeChildrenChange
(5)、ACL
zk采用ACL策略来控制权限 zk中有5种权限 :create、delete、write、read、admin
(6)、集群