写点什么

理解【Apache Zookeeper】

用户头像
awen
关注
发布于: 2021 年 06 月 04 日
理解【Apache Zookeeper】

概念

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

安装部署

mkdir -p /data/zookeeper/logs; mkdir -p /data/zookeeper/data; cd /data/zookeeper;tar xzf zookeeper-3.4.9.tar.gz; ln -s zookeeper-3.4.9 default; cd /data/zookeeper/default/conf; echo "" > zoo.cfg;#ticketTime为Client-Server通信心跳时间,单位为毫秒echo "tickTime=2000" >> zoo.cfg;#initlimit为Leader-Follower初始化容忍连接次数echo "initLimit=10" >> zoo.cfg;#syncLimit为Leader-Follower通信容忍同步次数echo "syncLimit=5" >> zoo.cfg;echo "dataDir=/data/zookeeper/data" >> zoo.cfg; echo "dataLogDir=/data/zookeeper/logs" >> zoo.cfg; #接受客户端请求端口echo "clientPort=2181" >> zoo.cfg;#快照文件保留个数echo "autopurge.snapRetainCount=60" >> zoo.cfg; #清理快照文件频率,单位小时,24小时清理一次echo "autopurge.purgeInterval=24" >> zoo.cfg; echo "" >> zoo.cfg;#zookeeper集群server.id=服务器域名:LF通信端口:选举端口echo "server.1=s100_1:2888:3888" >> zoo.cfg; echo "server.2=s100_2:2888:3888" >> zoo.cfg; echo "server.3=s100_3:2888:3888" >> zoo.cfg;echo "1" > /data/zookeeper/data/myid;
cd /data/zookeeper/logs;/data/zookeeper/default/bin/zkServer.sh start;
复制代码

常用命令

  • zkServer.sh

  1. start

  2. start-foreground

  3. stop

  4. restart

  5. status

  6. upgrade

  7. print-cmd

  • zkEnv.sh

zk 启动前初始化环境变量

  • zkCli.sh

[zk: localhost:2181(CONNECTED) 0] zkCli.shZooKeeper -server host:port cmd args  stat path [watch]  set path data [version]  ls path [watch]  delquota [-n|-b] path  ls2 path [watch]  setAcl path acl  setquota -n|-b val path  history  redo cmdno  printwatches on|off  delete path [version]  sync path  listquota path  rmr path  get path [watch]  create [-s] [-e] path data acl  addauth scheme auth  quit  getAcl path  close  connect host:port
复制代码
  • 常用四字命令


特性

  • 文件系统

每个子目录项如 NameService 都被称作为 znode,和文件系统一样,我们能够自由的增加、删除 znode,在一个 znode 下增加、删除子 znode,唯一的不同在于 znode 是可以存储数据的。 

  1. PERSISTENT

  2. PERSISTENT_SEQUENTIAL

  3. EPHEMERAL

  4. EPHEMERAL_SEQUENTIAL

  • 通知机制 Watcher

客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper 会通知客户端。

  • ACL

  1. CREATE:创建子节点的权限。

  2. READ:获取节点数据和子节点列表的权限。

  3. WRITE:更新节点数据的权限。

  4. DELETE:删除子节点的权限。

  5. ADMIN:设置节点 ACL 的权限。

应用场景

  • 配置管理

百度 disconf https://github.com/knightliao/disconf

  • 服务注册与发现

alibaba dubbo

  • 分布式锁

基于 EPHEMERAL_SEQUENTIAL 节点 + Watcher 机制

相较于 redis 锁,zk 锁可靠性更高,效率有损失

  • 队列管理

创建 PERSISTENT_SEQUENTIAL 节点 + Watcher 机制构建消息队列


客户端

  1. org.apache.zookeeper 原生,存在各种不足

  2. org.apache.curator(建议使用)

ZAB

https://zhuanlan.zhihu.com/p/27335748

用户头像

awen

关注

Things happen for a reason. 2019.11.15 加入

还未添加个人简介

评论

发布
暂无评论
理解【Apache Zookeeper】