一、zookeeper是分布式数据管理与协调框架,不适合存储大量数据,基础paxos算法 --主从选举
(原子消息广播协议),zookeeper一般都是集群存在,奇数个节点
1、顺序一致性
按照发起的顺序应用到zookeeper
客户端发送消息给zookeeper,消息遵循原子消息广播,消息都同步后才会返回客户端,会加锁,这个时候其他客户端不能操作这条消息,如果多个zookeeper节点间消息同步未成功,例如网络不通的时候,就会返回失败
2、原子性
3、单一视图
4、可靠性
zookeeper 将全量数据存储在内存中,针对非事务效率非常高
一半节点挂掉的时候就不对外提供服务了
zookeeper 是以简单的树形结构来进行相互协调,类似于一个标准的文件系统,
角色
leader
follower
observer
二、应用场景
配置管理 配置文件的动态变更
集群管理
发布与订阅
数据库切换
分布式锁,队列管理等
分布式日志收集
(数据量比较小,数据内容在运行时动态发生变化,集群中各个节点共享信息配置一致)
curator 框架 操作zookeeper 的框架
三、安装
解压到/usr/local/下
tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/
把 zookeeper-3.4.5目录 移动到zookeeper
mv zookeeper-3.4.5/ zookeeper
也可以在后面这个地址下载 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
如果链接打不开,就先打开 http://mirror.bit.edu.cn/apache/zookeeper , 再选择版本。
更改zoo_sample.cfg 改成zoo.cfg
修改zoo.cfg
dataDir=/mnt/soft/zookeeper-3.4.5/data
/etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
[root@localhost local]# cd /usr/local/zookeeper-3.4.13/bin [root@localhost bin]# ./zkServer.sh start
./zkServer.sh status
默认端口2181
客户端
[root@localhost bin]# ./zkCli.sh
配置文件参数
zookeeper命令
ls /path 查找
create /path value 创建并赋值,不能重复创建,创建成功返回path,不允许递归创建节点,如果父节点不存在
create /path/path
get /path 获取
set /path value 设值 value可以时 字符串 或文件,如果是文件的 存的是内容,或是二进制字节码
rmr /path 递归删除节点
delete /path/child 删除指定某个节点
四、java客户端调用
zookeeper客户端和服务器端会话的建立是一个异步的过程
一般用curator 调用客户端
节点类型
1、持久节点
2、持久顺序节点
3、临时节点 可以利用临时节点创建分布式锁 ,只在当前会话中有效,会话结束 path则消失
4、临时顺序节点
zookeeper 原始API
不允许递归创建节点
节点内容必须时字节数组,不支持序列化,如果需要序列化,可使用第三方框架 hessian,kryo