zookeeper

zookeeper是一个高性能,分布式的开源
应用协调服务.比如同步,配置管理,命名
空间.
什么是分布式?
多台机器构成,计算机之间通过网络进行
通信,彼此进行交互,共同目标

协调:多个节点一起完成的一个动作
举例:
集群成员管理

选主
同步

发布/订阅

zookeeper数据模型
分层结构
属性结构中的每个节点叫做znode
每个znode都有数据,也可以有子节点
节点路径:通过斜线分割 /zoo/duck
通过数据结构stat来存储数据的编号
数据发生变化是,版本号回递增.

可以对znode中的数据进行读写操作

典型的应用场景
数据发布/订阅
数据发布/订阅(配置中心):
发布者将数据发布到zk的一个或一系列
节点上,订阅者进行数据订阅,当数据有变化时,
可以及时得到数据的变化通知.

负载均衡
本质是利用zk的配置管理功能,步骤:
1 服务提供者把自己的域名及ip端口的
映射注册到zk中
2 服务消费者通过域名从zk中获取到对应的
ip

命名服务
类似于JNDI

分布式协调/通知
通过watcher和通知机制实现
分布式锁
分布式事务

集群管理
管理集群中的机器数量
集群中机器的运行时状态
集群中节点的上下线操作
集群节点的统一配置

分布式锁
排它锁
共享锁
分布式队列
FIFO

zk基本概念
集群角色
leader:为客户端提供读和写服务
follower:提供读服务,所有的写
服务都需要转交给leader角色,参与
选举
observer:提供读服务,不参与选举,
一般是为了增强zk集群的读请求
并发能力
会话
zk的客户端与服务器端之间的连接
通过心跳检查保持客户端的连接存活
接收来自服务端的watch事件

数据节点(znode)
不是机器的意思
zk树形结构中的数据节点,用于
存储数据
持久节点:一旦创建,除非主动调用
删除操作,否则一直存储
临时节点:会话失效后节点被移除

版本
version:当前znode的版本
cversion:当前znode的字节版本
aversion:当前znode的ACL
watcher
作用于znode节点上
多种事件通知:数据更新,子节点
状态等

31分钟
原文地址:https://www.cnblogs.com/hzcya1995/p/13310650.html