ZooKeeper学习笔记

1、zookeeper的常用主要功能:

  • 配置管理(管理分布式应用程序)
  • 分布式锁
  • 集群管理(作为注册中心的使用)

2、zookeeper的安装(待补充)

3、zookeeper命令操作:

  • 数据模型:树形目录服务,类似与Linux目录文件系统。每个树上的节点(ZNode)保存了数据和节点的信息。节点可以拥有子节点。
  • 节点类型:持久化的节点、临时节点、持久化顺序节点、临时顺序节点。
  • 服务端的常用命令:./zkserver.sh status  ./zkserver.sh start ./zkserver stop
  • 客户端命令:
    1. ./zookeeper.sh -server localhost:2181 连接zookeeper的客户端
    2. ls  目录(查看某个目录节点名称)
    3. create 目录 数据(在某个目录下创建节点数据)==>不可以重复创建相同节点
    4. get 目录 (获取某个节点数据)
    5. set 目录(设置节点数据)
    6. delete 目录(删除节点数据)
    7. delete all (删除全部的节点)
    8. 创建持久节点  create +节点名称
    9. 创建临时节点 create -e 节点名称
    10. 创建顺序持久节点 create -s 节点名称
    11. 创建顺序临时节点 creat -es 节点名称
    12. quit退出zookeepr help 帮助命令
    13. ls -s 节点 格式化数据具体的节点信息 

3、zookeeper的JAVA API (Curator常用API)

  • 建立连接 (图片等待保存)
  • 添加节点 :create().forPath();
  • 创建多级模式:creatingParentIfNeeded();
  • 指定节点类型:create().withModel();
  • 删除节点 :delete().forName()  delete().deletingChildrenIfNeeded();  guarantedd():确保删除成功放在delete()后面。inbackground():删除之后的回调函数
  • 修改节点:setData().forPath() 根据版本修改中间加入一个方法withVersion() 防止别的线程影响操作。
  • 查询节点数据: getData().forPath(); 
  • 查询子节点:getChildren().forPath();
  • watch时间监听:发布订阅功能,通过Cache实现对zookeeper的监听
    • NodeCache :new NodeCache() //创建Cache对象
      • 添加监听器:getListenable().addListener():方法中传入监听器对象
      • stat()开始监听
    • pathChildrenCache():方法同上
    • TreeCache():监听某个节点和自己的子节点 (方法同上)
  • 分布式锁实现:分布式锁解决的跨机器的进程同步
    • 分布式锁的原理:
      • 客户端在获取锁的时候,在lock节点下创建临时顺序节点,用完了删除节点
      • 然后获取lock下所有子节点,如果发现自己创建的节点序号是最小的,那么认为该客户端获取到了锁,使用完成,进行节点的删除。
      • 如果不是节点中最小的,说明自己没有获取到锁,此时需要获取到比自己小的节点,同时注册监听器,同时对其注册监听器,监听删除事件。
      • 如果发现比自己小的节点已经删除,客户端的watcher会收到通知再次判断自己创建的节点的序号是否是最小的,如果是则自己获取到了锁。如果不是重复以上的步骤重复进行注册并监听。

3、集群的搭建(附图)

        zookeeper的三种角色身份:

  1.  leader:事物的请求处理,数据的处理
  2. flower:将事务请求转发leader 参与选举 处理非事务请求
  3. observer:处理非事务请求,但是参与选举

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值