zookeeper是一个高性能,分布式的开源
应用协调服务.比如同步,配置管理,命名 空间. 什么是分布式? 多台机器构成,计算机之间通过网络进行 通信,彼此进行交互,共同目标协调:多个节点一起完成的一个动作
举例: 集群成员管理 锁 选主 同步发布/订阅
zookeeper数据模型
分层结构 属性结构中的每个节点叫做znode 每个znode都有数据,也可以有子节点 节点路径:通过斜线分割 /zoo/duck 通过数据结构stat来存储数据的编号 数据发生变化是,版本号回递增.可以对znode中的数据进行读写操作
典型的应用场景
数据发布/订阅 数据发布/订阅(配置中心): 发布者将数据发布到zk的一个或一系列 节点上,订阅者进行数据订阅,当数据有变化时, 可以及时得到数据的变化通知.负载均衡
本质是利用zk的配置管理功能,步骤: 1 服务提供者把自己的域名及ip端口的 映射注册到zk中 2 服务消费者通过域名从zk中获取到对应的 ip命名服务
类似于JNDI分布式协调/通知
通过watcher和通知机制实现 分布式锁 分布式事务集群管理
管理集群中的机器数量 集群中机器的运行时状态 集群中节点的上下线操作 集群节点的统一配置分布式锁
排它锁 共享锁 分布式队列 FIFOzk基本概念
集群角色 leader:为客户端提供读和写服务 follower:提供读服务,所有的写 服务都需要转交给leader角色,参与 选举 observer:提供读服务,不参与选举, 一般是为了增强zk集群的读请求 并发能力 会话 zk的客户端与服务器端之间的连接 通过心跳检查保持客户端的连接存活 接收来自服务端的watch事件数据节点(znode)
不是机器的意思 zk树形结构中的数据节点,用于 存储数据 持久节点:一旦创建,除非主动调用 删除操作,否则一直存储 临时节点:会话失效后节点被移除版本
version:当前znode的版本 cversion:当前znode的字节版本 aversion:当前znode的ACL watcher 作用于znode节点上 多种事件通知:数据更新,子节点 状态等31分钟