一、ZooKeeper 基础知识
1 、zookeeper 环境搭建
有5台Server搭建一个zookeeper集群,这5台机器根据选举算法,选出一个leader节点,这个leader节点与其他4台Server相互通信,是长连接,当这4台Server有改动时,先将改动同步到leader节点,然后再由leader将改动同步到每一个Server。搭建好zookeeper后,就可以与Client连接,除了leader节点,其余的Server都可以与Client保持长连接。但leader挂掉时,zookeeper会重新选出一个leader。
2、zookeeper 协同
zookeeper 维护一个类似文件系统的数据结构,每一个目录称为znode,可以像文件系统一样,增加、删除znode,znode是可以存储数据的。
znode分为下面4种类型
(1) 持久化节点 : 当客户端创建一个持久化节点时,不论客户端是否保持连接,节点都存在
(2) 持久化并顺序编号 : 当多个节点想要创建一个目录时,会自动按顺序进行编号。
(3) 临时节点 :客户端断开连接,节点数据删除
(4) 临时并顺序编号 :客户端断开连接,节点数据删除 ,编号方式与持久化顺利编号相同。
3、通知机制
客户端注册监听它关心的目录节点,当目录节点发生变化时,zookeeper会通知客户端。
4、zookeeper的作用
1: 发布和订阅 : 将数据发布到zk节点上,让订阅者动态获取数据。
可以做服务器的配置管理,服务器的启动需要数据库和zk相关的信息,服务器通常会配置一些数据库和相关应该的一些信息。可以将配置发布到zk上,当服务器启动时,动态的获取配置。
2:发布通知/协调 :
3: 分布式锁 : 当所有的节点都尝试创建某一个目录时,只要一个节点可以创建成功。利用这个特性,所有服务器在需要锁的时候,就去创建一个既有的目录,只要创建成功的服务器才能获取锁。
4: 集群管理 :当一个应用启动时,会创建一个临时目录,当应用下次时,临时目录也将会移除
5: 分布式队列 :
二、 Zookeeper 注册和发现服务
1 : 使用Zookeeper来存放服务器列表
2 : 使用Zookeeper的watch来及时更新服务器信息
3 : Zookeeper高性能的读,稳定的写
三、 负载均衡
1: Zookeeper 存取服务的多个提供者的信息
2: Zookeeper 的通知机制 + 本地缓存
本地缓存: 当没有接到变化的通知时,就取本地的缓存
3: 应用仅需配置一个Zookeeper的地址