【原创】Curator使用

软件: FLUENT
全方位数据报表
许可分析

许可分析

免费体验
识别闲置、及时回收
许可优化

许可优化

免费体验
多维度智能分析
许可分析

许可分析

免费体验
减少成本、盘活许可
许可优化

许可优化

免费体验

Curator:Netflix 提供的 Zookeeper 客户端框架及其应用


概述:


Curator 是由 Netflix 开源的一套基于 Zookeeper 的客户端框架,旨在解决使用 Zookeeper 面临的底层细节问题,尤其是扩展性与其他客户端实现之间的差异。它的设计目标是简化在应用程序中与 Zookeeper 的交互,从而更高效地执行任务相关的业务逻辑,例如分布式锁、指派者、协调算法等。


Curator 带来了模块化的操作支持,同时提供了一套干净且易于使用的 API,使得开发者能够轻松地管理和操作 Zookeeper 服务,而无需深究其底层复杂性。


基本操作 API:


Curator 框架提供了丰富的基础 API,用于实现 Zookeeper 的主要操作:


1. 创建会话:通过连接字符串和重试策略来创建断开后自动尝试连接的服务会话。


  ```java

  // 使用重试策略创建会话

  RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);

  CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", 5000, 5000, retryPolicy);


  // 或使用 fluent API 创建会话便捷方式

  CuratorFramework client = CuratorFrameworkFactory.builder()

          .connectString("192.168.128.129:2181")

          .sessionTimeoutMs(5000)

          .connectionTimeoutMs(5000)

          .retryPolicy(retryPolicy)

          .namespace("base")

          .build();

  client.start();

  ```


2. 创建数据节点:

 

  ```java

  client.create().creatingParentContainersIfNeeded()

     .withMode(CreateMode.PERSISTENT)

     .forPath("/nodeA", "init".getBytes());

  ```


3. 删除数据节点:

 

  ```java

  client.delete().guaranteed()

      .deletingChildrenIfNeeded()

      .withVersion(10086)

      .forPath("/nodeA");

  ```


4. 读取数据节点:


  提供两种方式读取节点数据:

 

    按原始字节返回:

     ```java

     byte[] bytes = client.getData().forPath("/nodeA");

     System.out.println(new String(bytes));

     ```

    同时获取 Stat 信息:

     ```java

     Stat stat = new Stat();

     client.getData().storingStatIn(stat).forPath("/nodeA");

     ```


5. 修改数据节点:

 

  ```java

  client.setData().withVersion(10086)

      .forPath("/nodeA", "data".getBytes());

  ```


6. 执行事务:

 

  在多个节点操作间提供一致性:

 

  ```java

  CuratorFramework client = ... // 假设已初始化 client

 

  client.inTransaction()

        .check().forPath("/nodeA")

        .and() // 实施后续操作

        .create().withMode(CreateMode.EPHEMERAL).forPath("/nodeB", "init".getBytes())

        .and()

        .create().withMode(CreateMode.EPHEMERAL).forPath("/nodeC", "init".getBytes())

        .and()

        .commit();

  ```


7. 其他操作:

   检查内存是否存在节点:

    ```java

    client.checkExists().forPath("/nodeA");

    ```

   获取节点的子节点列表:

    ```java

    client.getChildren().forPath("/nodeA");

    ```


欢迎浏览: 【原创】Curator使用

通过 Curator,开发者可以更加专注于应用逻辑的实现,而无需过多关注 Zookeeper 的底层操作细节,显著提升了开发效率和系统的稳定性。

相关推荐

康乃尔大学Fluent教程~~~~~分享~
LMS 结构噪声及流体噪声解决方案
FLUENT动网格参数设置方法
非稳态CFD问题
教你如何用fluent长网格
【资料】FLUENT大涡模拟及声学分析官方实例
行业应用方案 | 航空发动机与燃气轮机
【年终系列实例EX3】基于FLUENT进行旋风分离器流场计算
hypermesh网格和设置,使模型能为fluent很好的读出
顺时针逆时针同时旋转滑移动网格全程操作视频+全部网格文件+fluent计算文件
翼型旋转+角度突变重叠网格+动网格,全程建模+ICEM+fluent操作视频和全部文件
3D翼型俯仰仿真,含ICEM文件+网格质量调整和fluent设置的操作视频+UDF
动网格之重叠网格制作单螺杆泵流场,包括全部网格、UDF、计算文件和fluent操作视频教程
fluent动网格,水流被搅拌的同时收到高温壁面加热汽化,全程操作视频、全部计算文件、udf等文件
1/2扑翼重叠网格动网格仿真,带全套操作视频教程+全部网格文件+fluent计算文件
fluent仿真中对于螺旋管道结构在设置流固耦合时为什么设置不出来?
齿轮泵喷油算例仿真,含全部几何文件、网格文件和fluent计算文件
Fluent中计算收敛标准浅析
fluent VOF模拟溃坝,水流沿河渠流向下游(含网格划分及fluent全程操作视频和计算文件)
北京理工大学韩占忠“fluent通用流体数值模拟学习”内容

最近推荐

Jira任务管理与禅道系统的对比
Fusion 360 for mac v1.8.3 苹果电脑版
美国网络攻击他国的程序,被中国研究员破解!45个国家遭黑客攻击
工程师2小时破解3G网络128位通讯加密方法
英伟达算法遭破解,RTX30系恢复100%挖矿算力:显卡降价结束了?
速查!安卓系统可能遭遇重大风险,两分钟可轻松破解锁屏
大众背后的网络故事
AMD强势回归 3A服务器平台“Fiorano”重装上阵
6小时与100万用户 微软的Outlook邮箱
一张图看懂《分布式存储发展白皮书2023》
index-foot-banner-pc index-foot-banner-phone

点击一下 免费体验万千客户信任的许可优化平台

与100+大型企业一起,将本增效

与100+大型企业一起,将本增效

申请免费体验 申请免费体验