curator 框架

代码::https://gitee.com/jly521/ZooKeeper-book.gitjava

开源的ZooKeeper 客户端git

  • 封装了不少底层细节
  • Apache 顶级项目
  • 还提供了ZooKeeper各类应用场景:
    • Recipe共享锁服务
    • Master选举机制
    • 分布式计数器
    • 等等

建立会话api

public static void main(String[] args) throws Exception{
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
        CuratorFramework client =
        CuratorFrameworkFactory.newClient("192.168.48.133:2181",
        		5000,
        		3000,
        		retryPolicy);
        client.start();
        Thread.sleep(Integer.MAX_VALUE);
    }

  • 重试策略

  • 使用Fluent风格的API接口来建立一个ZooKeeper客户端

  • 命名空间隔离

  • guaranteed() 接口
    • 客户端碰到网络异常的时候,会不停的重试删除须要删除的节点,知道成功
  • 异步接口

Curator 典型应用场景:服务器

  • 事件监听
    • NodeCache

  • Master 选举
    • 咱们常常遇到这样的问题,遇到复杂的问题须要从集群中选择一台进行处理
    • 好比:多台客户端机器同时某节点建立相同本身节点,最终只有一台能成功建立
      • 成功建立的那台客户端机器叫作Master
    • Curator进行了封装,只须要简单的api 就可实现Master 选举
    • 成功获取Master 权力会回调监听器
    • 执行完takeLeadership 方法,会自动释放Master 权力

  • 分布式锁
    • 分布式环境中,为了保证数据的一致性,常常在程序的某个运行点须要同步
      • 好比减库存操做或流水号生成操做
      • 例如流水号:
        • 普通的流水号生成使用时间戳,可是在并发量过大的状况下会出现问题
        • 可以使用Curator 实现分布式锁
  • 分布式计数器
    • ​​​​​​​很容易基于分布式锁实现一个分布式计数器
  • 分布式Barrier
    • ​​​​​​​控制多线程之间同步的经典方式,类比jdk自带的CyclicBarrier
    • 等待全部线程准备就绪,一块儿开始执行新的任务
    • 还可协调同时进入同时退出

工具网络

  • ZKPaths
    • 提供了一个简单的API 来构建ZNode路径、递归建立、删除节点等;
  • EnsurePath
    • 提供了一种可以确保数据节点存在的机制
  • TestServer
    • 为了方便开发人员进行方便测试
    • 提供启动简易ZooKeeper方法:TestServer
    • 容许开发人员很是方便启动一台标准的ZooKeeper服务器,进行单元测试

  • 本地模拟

  • TestCluster
    • ​​​​​​​本地模拟测试集群
相关文章
相关标签/搜索