# zookeeperLock **Repository Path**: workingman110/zookeeper-lock ## Basic Information - **Project Name**: zookeeperLock - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-26 - **Last Updated**: 2023-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、Apache Curator简介 解决了watcher的一次性的问题,注册一个watcher可以触发多次 Api简单易用 可以递归创建节点 提供ZooKeeper各种应用场景(recipe, 比如:分布式锁服务、集群领导选举、共享计数器、缓存机制、分布式队列等)的抽象封装 提供了常用的Zookeeper工具类 提供了一套Fluent风格的操作API 二、Curator基本操作 1. 重试策略 一共有五种重试策略 重试策略ExponentialBackoffRetry,重试N次限制总的重试时间 baseSleepTimeMs:两次重试之间的间隔时间 maxRetries:最大重试次数,如果超过次数就放弃 maxSleepMs:最大重试时间,如果超过该时间就放弃 推荐的使用方式为:RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 5); 重试策略RetryNTimes,重试N次 n:重试的次数 sleepMsBetweenRetries:两次重试之间的间隔时间 推荐的使用方式为:RetryPolicy retryPolicy = new RetryNTimes(3, 5000); 重试策略RetryOneTime,重试一次 sleepMsBetweenRetry:两次重试之间的间隔时间 不推荐使用 重试策略RetryForever,一直在重试 retryIntervalMs:两次重试之间的间隔时间 不推荐使用 重试策略RetryUntilElapsed maxElapsedTimeMs:最大重试时间,重试时间超过maxElapsedTimeMs后,就不再重试 sleepMsBetweenRetries:两次重试之间的间隔时间 推荐使用方式为:RetryPolicy retryPolicy = new RetryUntilElapsed(2000, 3000); 2. 连接与关闭Zookeeper //1 重试策略:初试时间为1s 重试10次 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 10); //2 通过工厂创建连接 CuratorFramework client = CuratorFrameworkFactory.builder().connectString("192.168.1.110:2181")//连接地址.connectionTimeoutMs(3_000)//连接超时时间.sessionTimeoutMs(30_000)//会话超时时间.retryPolicy(retryPolicy)//重试策略.namespace("super")//命名空间,连接后所有的操作都是在这个/super节点之下.build(); //3 开启连接 client.start(); //4 关闭连接 client.close(); 3. 创建节点 creatingParentsIfNeeded是递归创建节点,如果不存在父节点则同时会创建父节点 创建模式有以下几种: CreateMode.PERSISTENT:永久节点 CreateMode.PERSISTENT_SEQUENTIAL:永久顺序节点 CreateMode.EPHEMERAL:临时节点 CreateMode.EPHEMERAL_SEQUENTIAL:临时顺序节点 权限控制: 通过withACL,添加一个权限列表List ACL类有两个属性 第一个是perms,可以通过Perms的枚举选择,代表了权限字符串列表:crdwa 第二个是Id,代表着五种权限机制,比如说world、digest等 Id类,有两个属性 第一个是scheme,代表权限模式 第二个是id,代表权限模式后面的字符串,如digest模式,user:BASE64(SHA1(password)) 创建节点举例: s 4. 删除和更新节点 5. 查询节点以及子节点 6. 创建watcher 一次性的创建方式: 重复使用父节点的watcher: 重复使用子节点的watcher: 三、watcher统一配置修改 【总结】Apache Curator入门使用 https://zhuanlan.zhihu.com/p/660851259 https://www.jianshu.com/p/df99f8a371ae