zookeeper的介绍及集群环境搭建
- zookeeper
- 概述
- 架构
- 特性
- 节点
- 创建节点
- 读取节点
- 更新节点
- 删除节点
- watch机制
- 特点
zookeeper
概述
一个分布式的协调框架,主要用于协调辅助其他框架正常运行,主要为了解决应用系统当中的一致性问题。
zk本质上是一个分布式的小文件存储系统,zk上面的每个文件内容最好不要超过1m。
架构
主从架构:主节点是分配任务的节点,一般是一个或两个,也可以是很多个。从节点是执行任务的节点,主要就是执行主节点分配的任务。
主备架构:解决主节点单一故障的问题
主节点(Leader):维护数据的一致性,负责处理用户的读写数据的请求。
从节点(Follower):处理用户的读请求,转发事务请求给leader,参与集群Leader选举投票
Observer:观察者角色,处理读请求,不会参与投票
特性
- 全局数据一致:每个server保存一份相同的数据
- 可靠性:如果消息被一台服务器接受,那么将被所有服务器接受
- 顺序性:如果a消息在b之前发布,那么在所有Server上a都将在b之前发布
- 数据更新原子性:一次数据更新,要么成功要么失败
- 实时性:保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息
节点
创建节点
其中-s-e分别指定节点特性,顺序或临时节点,-e为临时节点,-s为顺序节点,acl用来进行权限控制
create [-s][-e] path data acl
- 创建永久节点
create path data acl
- 创建永久顺序节点
create -s path data acl
- 创建 临时节点(只要断开连接,节点消失)
create -e path data acl
读取节点
与读取相关的命令有ls 和get。
- ls命令 可以列出zookeeper指定节点下的所有子节点,只能查看指定节点下的第一集的所有子节点;
- get命令 可以获取zookeeper制定节点的数据内容和属性信息
ls path [watch]
get path [watch]
ls2 path [watch]
更新节点
set path data [version]
data 就是要更新的新内容,version表示数据版本
删除节点
delect path [version]
若啥吃奶胡节点存在子节点,那么无法直接删除该节点,需要先删除子节点
如果需要递归删除节点,可以使用
Rmr path
注意:
Rmr /
是删除zookeeper下所有文件
watch机制
ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。
ZooKeeper中,引入了Watcher机制来实现这种分布式的通知功能。
ZooKeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。。总的来说可以概括Watcher为以下三个过程:客户端向服务端注册Watcher、.服务端事件发生触发 Watcher、客户端回调Watcher得到触发事件情况
特点
- 一次性触发
- 事件的封装:所有节点的变化,都封装成了对应的时间变化节点名的每一次操作都对应一个事件,监听器专门获取这个事件
- event 异步的发送:监听器与节点之间的操作是异步的
- 先注册再触发,先注册监听器再触发