当前位置: 首页 > news >正文

Zookeeper入门

目录

  • 概念
  • ZK命令操作
    • 数据模型
    • 服务端命令
    • 客户端命令
    • Java API操作
      • Curator
        • 事件监听
      • 分布式锁
  • ZK集群
    • Leader选举
    • 搭建集群
    • ZK核心理论

概念

ZK命令操作

数据模型

服务端命令

./zkServer.sh start ./zkServer.sh stop ./zkServer.sh status ./zkServer.sh restart

客户端命令

./zkCli.sh-server127.0.0.1:2181#登录命令quit#退出命令ls/#查看根目录下子节点ls/dir1/dir2#查看指定目录下子节点create /test#创建test节点get /test#读取节点数据set/test hehe#设置节点数据delete /test#删除节点,若包含子节点则无法删除deleteall /test#删除子树create-e/test#创建临时节点,当前会话关闭时节点删除create-s/test#创建顺序节点create-es/test#创建临时顺序节点ls-s/test# 可以查看test节点的详细信息

Java API操作

Curator

//创建基本节点,带有数据,没有数据时则默认客户端ip为数据client.create().forPath("/app1","hello");//设置节点类型为临时节点,默认是持久化节点client.create().withMode(CreateMode.EPHEMEAL).forPath("/path");//创建多级节点client.create().creatingParentsIfNeed().forPath("/path");//查询节点,获取节点数据client.getData().forPath("/app1");//查询子节点,获取当前节点的子节点client.getChildren().forPath("/app1");//查询节点状态信息Statstat=newStat();client.getData().storingStatIn(stat).forPath("/app1");//修改节点数据client.setData().forPath("/app1","world");//根据版本信息修改数据法,防止多个客户端同时对数据进行操作,出现并发问题client.setData().withVersion(stat.getVersion()).forPath("/app2","hahha".getBytes());//删除带有子节点的节点client.delete().deletingChildrenIfNeed().forPath("/app3");//删除必须成功client.delete().guaranteed().forPath("/app4");//回调client.delete().inBackground(()->{}).forPath("/app5");
事件监听


监听特定节点

//注册NodeCache对象,监听单个节点finalNodeCachenodeCache=newNodeCache(client,"/app1");//注册监听nodeCache.getListenable().addListener(()->{//获取修改后节点的数据byte[]data=nodeCache.getCurrentData().getData();});//开启监听nodeCache.start(true);

监听子节点

//创建监听对象PathChildrenCachepathChildrenCache=newPathChildrenCache(client,"/app2",true);nodeCache.getListenable().addListener(()->{//监听子节点的变化,并且拿到变更后的数据PathChildrenCacheEvent.Typetype=event.getType();if(type.equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){byte[]data=event.getData().getData();}});pathChildrenCache.start();

监听子树

TreeCachetreeCache=newTreeCache(client,"/app3");treeCache.getListenable().addListener(()->{});treeCache.start();

分布式锁


ZK集群

Leader选举


这里先比较Zxid,再比较Serverid,并且在开始选举时,都会先投票给自己,然后广播投票内容,其他节点收到广播后再根据上述规则确定是否改变投票。

搭建集群

1.下载安装包,然后解压,创建data文件夹2.data文件夹下创建myid文件,并写入id(1,2,3,...)3.配置zoo.cfg文件,写入集群所有服务器ip:port,格式如下: server.1=127.0.0.1:2181#这里的1是写入myid里的id...4.配置zoo.cfg文件,配置dataDir为刚创建的data文件夹5.启动zk

ZK核心理论

http://www.cnnetsun.cn/news/2836798.html

相关文章:

  • 别再只会用AT指令了!HC-05蓝牙模块与安卓手机通信的完整避坑指南(附CH340驱动)
  • 【配置指南】OpenClaw 执行审批自动模式(`auto`)完全指南
  • C语言内存管理说明,存储方式
  • 人生“地震”来临时,你的反应决定了你的结局
  • ODDM-FMCW融合技术在高速移动通信中的应用
  • Hadoop YARN WEB UI保姆级指南:从8088端口看懂集群状态与作业监控
  • 用COMSOL复现经典:一杯水的自然对流仿真,从模型设置到结果后处理全解析
  • 手机App控制51单片机LED?一个HC-06蓝牙模块+串口中断就能搞定(附完整代码)
  • 从吸铁石到自动驾驶:聊聊人工势场法(APF)这个老牌路径规划算法,为什么今天依然值得学?
  • STM32的FMC不止能接内存:驱动TFT屏、AD7606等外设的实战指南
  • Windows Cleaner:拯救C盘爆红的终极解决方案,一键释放空间提升性能
  • SQLite图形化工具选哪个?深度对比SQLite Expert与DB Browser的五大核心功能与隐藏技巧
  • 别再手动下拉了!Excel里用这个公式,1秒搞定上万行时间差计算(附单元格格式设置)
  • 搞定GaN图腾柱PFC的过零点难题:三种无锁相环方案实测与避坑指南
  • PotatoNV:免费解锁华为麒麟设备Bootloader的完整指南
  • 【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
  • 抖音下载神器:如何永久保存你喜欢的视频内容?
  • 计算机毕业设计之电商客户消费特征数据分析
  • 从Dijkstra到A*:手把手教你用Python实现路径规划算法(避坑Octile距离计算)
  • 基于OpenPose的实时跌倒与异常动作检测系统(含可直接运行的Python工程+训练模型+测试视频)
  • 基于Spring AI框架的RAG应用
  • Winhance中文版:Windows系统优化的终极免费解决方案
  • 室内调试没信号?EVB_Air551G定位模块的‘踩坑’实录与户外快速测试指南
  • 从单机到协作:手把手教你用Kettle数据库资源库实现团队ETL流程共享(附权限管理)
  • 苹果审核2.1大礼包别慌!我从被拒到过审用了2天
  • FIO参数太多看不懂?一张图帮你搞定磁盘性能测试,附送常用场景命令模板
  • 深度解析Mindustry服务器架构:从源码编译到高可用部署的实践指南
  • 米脂县酒店选型指南:如何从“性价比”角度做理性判断
  • 一个平台,全面保护:云祺破解混合架构难题,筑牢业务备份基座
  • WPS表格转换踩坑实录:逗号、空格用不对,格式全乱!附正确设置图解