Zookeeper入门demo1

左手的ㄟ右手 2023-02-13 11:30 72阅读 0赞

java代码

  1. package cn.test;
  2. import org.apache.curator.RetryPolicy;
  3. import org.apache.curator.framework.CuratorFramework;
  4. import org.apache.curator.framework.CuratorFrameworkFactory;
  5. import org.apache.curator.framework.recipes.cache.ChildData;
  6. import org.apache.curator.framework.recipes.cache.TreeCache;
  7. import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
  8. import org.apache.curator.framework.recipes.cache.TreeCacheListener;
  9. import org.apache.curator.retry.ExponentialBackoffRetry;
  10. import org.apache.zookeeper.CreateMode;
  11. import org.junit.Test;
  12. public class ZookeeperAPITest {
  13. @Test
  14. //创建永久节点
  15. public void createZnode() throws Exception {
  16. //1.定制一个重试策略
  17. /*
  18. 参数1:重试的间隔时间
  19. 参数2:重试的最大次数
  20. */
  21. RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
  22. //2.获取一个客户端对象
  23. /*
  24. 参数1:要连接的zookeeper服务器列表
  25. 参数2:会话的超时时间
  26. 参数3:链接超时时间
  27. 参数4:重试策略
  28. */
  29. String connectString="node01:2181,node02:2181,node03:2181";
  30. CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
  31. //3.开启客户端
  32. client.start();
  33. //4.创建节点 CreateMode:PERSISTENT永久节点 EPHEMERAL_SEQUENTIAL永久序列化节点EPHEMERAL临时节点EPHEMERAL_SEQUENTIAL临时序列化节点
  34. client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello2", "world".getBytes());
  35. //5.关闭客户端
  36. client.close();
  37. }
  38. @Test
  39. //创建临时节点
  40. public void createTmpZnode() throws Exception {
  41. //1.定制一个重试策略
  42. /*
  43. 参数1:重试的间隔时间
  44. 参数2:重试的最大次数
  45. */
  46. RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
  47. //2.获取一个客户端对象
  48. /*
  49. 参数1:要连接的zookeeper服务器列表
  50. 参数2:会话的超时时间
  51. 参数3:链接超时时间
  52. 参数4:重试策略
  53. */
  54. String connectString="node01:2181,node02:2181,node03:2181";
  55. CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
  56. //3.开启客户端
  57. client.start();
  58. //4.创建节点 CreateMode:PERSISTENT永久节点 EPHEMERAL_SEQUENTIAL永久序列化节点EPHEMERAL临时节点EPHEMERAL_SEQUENTIAL临时序列化节点
  59. client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello3", "world".getBytes());
  60. //5.关闭客户端
  61. Thread.sleep(5000);//睡眠5秒,看临时节点
  62. client.close();
  63. }
  64. @Test
  65. //修改节点数据
  66. public void setZnode() throws Exception {
  67. //1.定制一个重试策略
  68. /*
  69. 参数1:重试的间隔时间
  70. 参数2:重试的最大次数
  71. */
  72. RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
  73. //2.获取一个客户端对象
  74. /*
  75. 参数1:要连接的zookeeper服务器列表
  76. 参数2:会话的超时时间
  77. 参数3:链接超时时间
  78. 参数4:重试策略
  79. */
  80. String connectString="node01:2181,node02:2181,node03:2181";
  81. CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
  82. //3.开启客户端
  83. client.start();
  84. //4.修改节点数据
  85. client.setData().forPath("/hello2", "world King".getBytes());
  86. //5.关闭客户端
  87. client.close();
  88. }
  89. @Test
  90. //获取节点数据
  91. public void getZnode() throws Exception {
  92. //1.定制一个重试策略
  93. /*
  94. 参数1:重试的间隔时间
  95. 参数2:重试的最大次数
  96. */
  97. RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
  98. //2.获取一个客户端对象
  99. /*
  100. 参数1:要连接的zookeeper服务器列表
  101. 参数2:会话的超时时间
  102. 参数3:链接超时时间
  103. 参数4:重试策略
  104. */
  105. String connectString="node01:2181,node02:2181,node03:2181";
  106. CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
  107. //3.开启客户端
  108. client.start();
  109. //4.修改节点数据
  110. byte[] bytes = client.getData().forPath("/hello2");
  111. System.out.println(new String(bytes));
  112. //5.关闭客户端
  113. client.close();
  114. }
  115. @Test
  116. //watch机制
  117. public void watchZnode() throws Exception {
  118. //1.定制一个重试策略
  119. /*
  120. 参数1:重试的间隔时间
  121. 参数2:重试的最大次数
  122. */
  123. RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
  124. //2.获取一个客户端对象
  125. /*
  126. 参数1:要连接的zookeeper服务器列表
  127. 参数2:会话的超时时间
  128. 参数3:链接超时时间
  129. 参数4:重试策略
  130. */
  131. String connectString="node01:2181,node02:2181,node03:2181";
  132. CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
  133. //3.开启客户端
  134. client.start();
  135. //4.创建节点的cache
  136. TreeCache treeCache = new TreeCache(client, "/hello2");
  137. //5.自定义一个监听器
  138. treeCache.getListenable().addListener(new TreeCacheListener() {
  139. @Override
  140. public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {
  141. // TODO Auto-generated method stub
  142. ChildData data = event.getData();
  143. if(data!=null) {
  144. switch (event.getType()) {
  145. case NODE_ADDED:
  146. System.out.println("监测到有节点新增");
  147. break;
  148. case NODE_REMOVED:
  149. System.out.println("监听到有节点被移除");
  150. break;
  151. case NODE_UPDATED:
  152. System.out.println("监控到节点被更新");
  153. break;
  154. default:
  155. break;
  156. }
  157. }
  158. }
  159. });
  160. //开始监听
  161. treeCache.start();
  162. Thread.sleep(100000);
  163. }
  164. }

pom.xml配置

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>cn.test</groupId>
  6. <artifactId>zookeeper_api_demo</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <!-- <repositories> <repository><id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
  9. </repository> </repositories> -->
  10. <dependencies>
  11. <dependency>
  12. <groupId>org.apache.curator</groupId>
  13. <artifactId>curator-framework</artifactId>
  14. <version>2.12.0</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.curator</groupId>
  18. <artifactId>curator-recipes</artifactId>
  19. <version>2.12.0</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>com.google.collections</groupId>
  23. <artifactId>google-collections</artifactId>
  24. <version>1.0</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>junit</groupId>
  28. <artifactId>junit</artifactId>
  29. <version>RELEASE</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.slf4j</groupId>
  33. <artifactId>slf4j-simple</artifactId>
  34. <version>1.7.25</version>
  35. </dependency>
  36. </dependencies>
  37. <build>
  38. <plugins>
  39. <!-- java编译插件 -->
  40. <plugin>
  41. <groupId>org.apache.maven.plugins</groupId>
  42. <artifactId>maven-compiler-plugin</artifactId>
  43. <version>3.2</version>
  44. <configuration>
  45. <source>1.8</source>
  46. <target>1.8</target>
  47. <encoding>UTF-8</encoding>
  48. </configuration>
  49. </plugin>
  50. </plugins>
  51. </build>
  52. </project>

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读

    相关 zookeeper 入门

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。 它有如下的一些特点

    相关 Zookeeper入门

    Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统。构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题。例

    相关 Zookeeper入门

    Zookeeper相关介绍和选举算法、应用场景等: Zookeeper 的简介 Zookeeper是一个开源的分布式的,一个针对大型分布式系统的可靠协调系统的Apac

    相关 zookeeper入门

    zookeeper zookeeper是什么 Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同

    相关 Netty学习1(入门demo)

    1.定义: > Netty是一个NIO客户端服务器网络框架,用于快速开发可维护性、高性能的网络应用。 2. HelloWorld * 一个简单的Netty...