Zookeeper入门基础知识

  1. zookeeper产生背景, 单体架构到分布式
    1. 每天的定时任务如何如何执行
    2. rpc的服务发现
    3. 并发请求的幂等
  2. 安装zk
    1. java环境
    2. 下载zkwget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
    3. 解压tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /usr/local/
    4. cp zoo_sample.cfg zoo.cfg复制配置文件
  1. 基本命令
    1. 创建节点create /jamin [value]
    2. 修改节点set /jamin "value"
    3. 获取节点值get /jamin
    4. 删除节点delete /jamin删除所有子节点 deleteall /jamin
    5. 查看子节点ls /jamin 查看当前节点下所有节点 ls -R /jamin
    6. 查看节点状态ls -s /jamin
  2. zk节点介绍
    1. 节点类型
      1. 持久节点 create /jamin
      2. 持久序号节点create -e /jamin/j 心跳检测
      3. 临时节点 create -s /jamin/jj临时节点下不可拥有持久节点,客户端与服务端的会话
      4. 临时序号节点create -s -e /jamin/jjj
    2. 节点状态

      1. cZxid 事务id,无论节点怎么变化都不会变更
      2. ctime 创建时间
      3. mZxid 节点修改值时变更
      4. mtime 修改时间
      5. pZxid,cversion 子节点增删变更
      6. dataVersion 当前节点数据版本
      7. aclVersion 权限版本
      8. ephmeralOwner 通过它判断是否时临时节点 临时节点后跟当前会话id
      9. dataLength 数据长度
      10. numChildren 子节点数量
    3. 节点监听
      1. ls -w /jamin 监听子节点的变化增删
      2. get -w /jamin 监听子节点数据变化
      3. stat -w /jamin监听节点属性的变化
      4. printwatches on|off 触发监听后是否打印监听事件
  3. 权限设置
    1. 认证模型
      1. world 开放模式 setAcl /jamin world:anyone:cdrwa
      2. ip ip模式限制客户端ipsetAcl /jamin ip:192.168.150.120:cdrwa
      3. auth 用户名密码认证模式创建用户addauth digest jamin:123456``setAcl /jamin auth:jamin:123456:cdrwa必须先创建用户后设置权限
      4. digest 密钥模式生成密钥echo -n [用户名]:[密码] | openssl dgst -binary -sha1 | openssl base64
    2. 权限位
      1. c 创建子节点
      2. d 删除子节点
      3. r 读取节点数据及显示子节点列表
      4. w 设置节点数据
      5. a 设置节点权限

集群

  1. 实现功能
    1. 读写分离: 提高承载,为更多客户提供连接,保证性能
    2. 主从自动切换:提高容错,部分节点故障不会影响整个服务集群
  2. 实现
    1. data文件下创建1/2/3 文件夹 1/2/3文件夹下都有myid文件 内容为1/2/3
    2. 在conf下创建zoo1.conf/zoo2.conf/zoo3.conf
tickTime=2000
initLimit=10
syncLimit=5
dataDir=data/1
clientPort=2181
# 通信与选举的端口号
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
3. 启动`./bin/zkServer.sh start conf/zoo2.cfg`
4. 查看状态`./bin/zkServer.sh status conf/zoo2.cfg`
5. 集群角色: leader,follower,observer

服务端写入请求

  1. 简单理解:leader接受服务端些请求,并同步到各个子节点
  2. 中度理解:连接到follwer,该请求转发到leader,leader将请求事务以proposal形式分发给follower,follower收到proposal,根据先后顺序处理proposal,当leader针对某个proposal收到过半的ack后,发起事务提交,重新发起一个commit的proposal,follower收到commit的proposal,记录事务提交,并把数据更新到内存数据库,当写入成功,返回给client
  3. 深入理解:【分布式】Zookeeper请求处理

选举

  1. 选举触发
    1. 服务节点初始化启动
    2. 半数以上节点无法与leader建立连接
      Zookeeper的选举机制
作者: JaminYe
版权声明:本文原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文地址:https://www.cnblogs.com/JaminYe/p/13946165.html