curator 框架

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

开源的ZooKeeper 客户端

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

创建会话

    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);
    }

daedd704fccb261b21054d2acb55ef8fc47.jpg

  • 重试策略

53166cac7433b9f7388afbf41b3a7e1a27e.jpge0482bdc7a1d2b0c5e8862afe17088a2404.jpg

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

030804ec59bee147b61538e838055025ad7.jpg

  • 命名空间隔离

96be08d7c87de4ab9235ca98de361c24969.jpg

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

8282bf73a29d0da9198c7c90d9290764ea1.jpg

d804604cadb274e7805c8c7ab821b8fc5cd.jpg

3c6701ac40119a09c215c57a868850fa843.jpg

5e932877a1ba9a6ad1974e9d5290b6ca771.jpg

Curator 典型应用场景:

6077bbbbdb000696c614e0d69fefcedeca2.jpg

  • 事件监听
    • NodeCache

d7f8cb6a2a03994ec4f1ff29657045f7462.jpg

6981ca64abd94c08a9642a9aa5070972a25.jpg

ba077ecd8852bbd93550ba57960b6fe6c72.jpg

23415bffb858eb0adad61fbe175d117cf7f.jpg

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

286fa204ec83769a3a56d5434da3e694b8f.jpg

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

工具

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

484c4bed7e9cacb42fe1d72e79fa3f40db3.jpg

  • 本地模拟

49d1a629b3ea8d2d0bc6ba5847ba3239725.jpg

  • TestCluster
    • ​​​​​​​本地模拟测试集群

转载于:https://my.oschina.net/u/3847203/blog/2875169

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值