2019独角兽企业重金招聘Python工程师标准>>>

zookeeper最经典的用法,选举。Curator的实现有2个种:

LeaderLatch:

这种是有阻塞的,就是大家一起上,谁先上了,就一直阻塞着,直到方法执行完成。如果执行结束,那么其他的兄弟就选一个出来。我觉得这种适合主备,比如开2 个 job,一个挂了另一个就上。

代码,这种代码最好是开2个eclipse看效果,顺序打开,看效果,再领悟:

package curator.selector;import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.leader.LeaderLatch;
import org.apache.curator.retry.ExponentialBackoffRetry;public class LeaderLatchDemo {public static void main(String[] args) throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);CuratorFramework client = CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(2000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build();client.start();// 选举Leader 启动LeaderLatch latch = new LeaderLatch(client,"/path");latch.start();latch.await();System.err.println("我启动了");Thread.currentThread().sleep(1000000);latch.close();client.close();}
}

LeaderSelector:

这种复杂一点,他有个leaderSelector.autoRequeue();就是自动抢,比如打印一个helloworld,第一个打印完,第2个打印,然后第3个打印。然后第一个再打印,大家一起抢。有点动态选举的味道。

代码:

package curator.selector;import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.leader.LeaderSelector;
import org.apache.curator.framework.recipes.leader.LeaderSelectorListenerAdapter;
import org.apache.curator.retry.ExponentialBackoffRetry;public class LeaderSelectorDemo {public static void main(String[] args) throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);final CuratorFramework client = CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(5000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build();client.start();final LeaderSelector leaderSelector = new LeaderSelector(client, "/led", new LeaderSelectorListenerAdapter(){@Overridepublic void takeLeadership(CuratorFramework client) throws Exception {System.err.println("work ing...");Thread.currentThread().sleep(3000);System.err.println("end");}});leaderSelector.autoRequeue();leaderSelector.start();System.in.read();}
}

转载于:https://my.oschina.net/u/1378390/blog/297057

Curator selector相关推荐

  1. Zookeeper分布式一致性原理(七):Curator客户端

    1. Curator简介 Curator是Netfix公司开源的一套Zookeeper客户端.Curator解决了很多Zookeeper客户端非常底层的细节开发工作,包括重连.反复注册Watcher和 ...

  2. Curator的基本使用

    一.简介 Curator是Netflix公司开源的一套Zookeeper客户端框架.了解过Zookeeper原生API都会清楚其复杂度.Curator帮助我们在其基础上进行封装.实现一些开发细节,包括 ...

  3. 基于Curator的Zookeeper操作实战

    前言 Zookeeper操作方式 这篇文章主要说的是利用java来操作zookeeper,就如操作mysql数据库一样,主要是实现增删改查功能,而实现这些功能的方式主要有以下三种: zookeeper ...

  4. 20200509 Curator入门

    简介 Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连.反复注册Watcher和NodeExistsEx ...

  5. Apache Curator实战

    Apache Curator入门实战 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeep ...

  6. Curator之Recipes之选举

    参考: 官文文档:http://curator.apache.org/curator-recipes/leader-latch.html http://curator.apache.org/curat ...

  7. 基于curator实现leader选举

    1.前言 curator由Netflix的工程师开发,主要目的为了基于zookeeper的应用变得简单可靠,在2013年成为apache的顶级项目.curator基于zookeeper,但提供了更高级 ...

  8. Android selector 使用注意.

    下面是几个是实现的效果 效果图demo 地址 selector 的作用: selector 是选择,用来修改修改控件的背景,设置点击效果,等, 自己一般使用在点击之后改变控件的背景色以及文字的颜色,比 ...

  9. android selector的用法解析

    Selector 的英文是选择器,挑战者 android中主要是背景选择器 selector 是在drawable/xxx.xml中配置的 相关属性: android:state_selected是选 ...

最新文章

  1. 2019年中国企业级SaaS行业研究报告
  2. vba抓取网页数据到excel_R语言网页数据抓取XML数据包
  3. Swift3.0语言教程使用Unicode范式标准化获取字符串
  4. 【Groovy】闭包 Closure ( 闭包调用 | 闭包默认参数 it | 代码示例 )
  5. 树莓派发布全新计算模块CM3,性能提升10倍
  6. 二进制八进制十六进制之间的快速转换------ 心算笔算方法总结
  7. 2_6 CompositeMode.cpp 组合模式
  8. STM32之ADC原理
  9. java实现redis客户端_windows下java swt实现操作redis的客户端工具
  10. pytorch维度变换
  11. RecyclerView.Adapter的封装(RecyclerAdapter)
  12. 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  13. Elastic Search Java Api 创建索引结构,添加索引
  14. 数据结构和算法——线性结构(1)数组、栈、队列和单链表
  15. R语言实现故障树定量与定性分析——以GJB-Z 768A-1998 故障树分析指南图5.37为例
  16. 国际云安全证书CCSK让他们在职场中脱颖而出
  17. DM_SQL建表语法
  18. 青春散场,永远的天王!
  19. 广义线性模型的计算机应用技术学院,SPSS数据分析—广义线性模型
  20. 如何在ROS中使用VScode创建功能包并编写cpp文件

热门文章

  1. DOS命令温习(图解)
  2. cookie的相关知识
  3. github不用输入用户密码即可登录
  4. OpenCV学习:改变图像的对比度和亮度
  5. (iOS)Storyboard/xib小技巧
  6. [转]WF4.0 基础篇 (一)开始使用WF
  7. ip_vs实现分析(7)
  8. vs2017python找不到包_关于Python在VS2017版中编译C源代码出现的各种问题解决方法...
  9. 寻找正反物质世界边境的长城---兵粒子
  10. lmbs PHP,PHP的GD2函数创建折线图源码示例