- 浏览: 1225935 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (353)
- java基础 (40)
- tapestry (16)
- gwt (14)
- ajax (7)
- linux (8)
- ubuntu (18)
- eclipse (6)
- dojo (2)
- javascript (7)
- maven (4)
- 日常生活 (29)
- web2.0 (2)
- jsonrpc (1)
- compass (1)
- lucene (0)
- spring (10)
- cluster (3)
- 数据结构 (2)
- sqlserver (1)
- tomcat (2)
- swing (1)
- servlet (1)
- hibernate (1)
- firefox (1)
- Java-Puzzlers (1)
- Wicket (2)
- mysql (10)
- windows (5)
- Webwork (1)
- struts2 (1)
- Seam (2)
- jboss (1)
- idea (6)
- 分布计算 (3)
- Python-Django (7)
- Hadoop (1)
- 工具 (3)
- Tokyo Tyrant (2)
- Comet (1)
- android (115)
- 音乐 (6)
- cxf (1)
- mqtt (1)
最新评论
-
hesai_vip:
学习了,感谢
gradlew wrapper使用下载到本地的gradle.zip文件安装。 -
imknown:
姚瑶大坏蛋 写道我也遇到了这个,用你这个方法,导致下拉刷新不起 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
姚瑶大坏蛋:
我也遇到了这个,用你这个方法,导致下拉刷新不起作用了,你遇到过 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
寐语者:
LeaderElection(String zookeeper ...
使用Zookeeper来为你的程序加上Leader Election的功能。 -
fyc0109:
博主, 安装了一部分还是报这个错误!FAILURE: Buil ...
gradlew wrapper使用下载到本地的gradle.zip文件安装。
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
废话不多说,
附件是完整的maven项目。
Reference: http://hadoop.apache.org/zookeeper/docs/r3.3.1/recipes.html#sc_leaderElection
废话不多说,
package com.ericsson.threef.zookeeper; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; import java.util.concurrent.CountDownLatch; /** * Created by IntelliJ IDEA. * User: EDENYIN * Date: 1/4/11 * Time: 3:13 PM * To change this template use File | Settings | File Templates. */ public class LeaderElection implements Watcher, Runnable { private String zookeeperConnectionString; private String rootPath; private ZooKeeper zk; private byte[] hostAddress; public LeaderElection(String zookeeperConnectionString, String rootPath) { this.zookeeperConnectionString = zookeeperConnectionString; this.rootPath = rootPath; try { hostAddress = InetAddress.getLocalHost().getHostAddress().getBytes(); } catch (UnknownHostException e) { e.printStackTrace(); } buildZK(); } private void buildZK() { System.out.println("Build zk client"); try { zk = new ZooKeeper(zookeeperConnectionString, 10000, this); Stat s = zk.exists(rootPath, false); if (s == null) { zk.create(rootPath, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); zk.create(rootPath + "/ELECTION", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } String value = zk.create(rootPath + "/ELECTION/n_", hostAddress, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL); } catch (Exception e) { e.printStackTrace(); System.err.println("Error connect to zoo keeper"); } } public void process(WatchedEvent event) { System.out.println(event); if (event.getState() == Event.KeeperState.Disconnected || event.getState() == Event.KeeperState.Expired) { System.out.println("Zookeeper connection timeout."); buildZK(); } } public void run() { while (true) { try { List<String> children = zk.getChildren(rootPath + "/ELECTION", false); String leaderPath = "Not found"; int minValue = -1; for (int i=0;i<children.size();i++) { String child = children.get(i); int index = Integer.parseInt(child.substring(2)); if (i == 0) { minValue = index; leaderPath = child; }else if (index < minValue) { minValue = index; leaderPath = child; } } LatchChildWatcher latchChildWatcher = new LatchChildWatcher(); byte[] data = zk.getData(rootPath + "/ELECTION/" + leaderPath, latchChildWatcher, null); System.out.println("find the leader on the path:" + leaderPath + " whose host address is " + new String(data)); latchChildWatcher.await(); } catch (Exception e) { e.printStackTrace(); System.err.println("Error get the leader." + e.getMessage()); } } } private class LatchChildWatcher implements Watcher { CountDownLatch latch; public LatchChildWatcher(){ latch = new CountDownLatch(1); } public void process(WatchedEvent event){ System.out.println("Watcher fired on path: " + event.getPath() + " state: " + event.getState() + " type " + event.getType()); latch.countDown(); } public void await() throws InterruptedException { latch.await(); } } }
附件是完整的maven项目。
Reference: http://hadoop.apache.org/zookeeper/docs/r3.3.1/recipes.html#sc_leaderElection
- ZooKeeperLeaderEle.zip (33.1 KB)
- 下载次数: 81
评论
2 楼
寐语者
2016-04-06
LeaderElection(String zookeeperConnectionString, String rootPath)这两个参数是什么
1 楼
fish2100
2011-10-21
非常感谢
发表评论
-
gradle项目中怎么集中管理你的依赖库
2015-08-16 11:30 739项目结构 引用root --gradleScript ... -
提高Android Studio的gradle编译速度。
2015-03-12 14:12 4420发现用Android Studio的make和直接使用comm ... -
gradlew wrapper使用下载到本地的gradle.zip文件安装。
2015-03-12 01:26 15489使用gradlew来build项目时,有时候老是需要下载gra ... -
http://java67.blogspot.com/
2014-12-27 21:04 1476http://java67.blogspot.com/ 面试 ... -
Idea color theme
2012-06-28 16:29 1092http://ideacolorschemes.com/ y ... -
javamail遍历的方式拿到邮件的正文和所有附件
2012-06-13 14:34 1666try { ... -
可以用在android的中Des 64位加密解密算法。
2012-03-26 14:54 11232package com.itaoo.utils; imp ... -
Intellij Idea JVM 最优化配置。
2011-11-11 13:40 8079你需要在/Applications/IntelliJ\ IDE ... -
Playing Flash Videos in Android applications
2011-09-01 13:53 821http://www.synesthesia.it/playi ... -
SuperMarioWorld
2011-07-21 15:37 842Super Mario World. -
SuperMarioWorld
2011-07-21 15:37 0Super Mario World. -
xxxxx
2011-07-21 15:01 0xxxxx -
Privacy Policy
2011-05-26 23:43 990This Privacy Policy governs the ... -
macosx java source jar file
2010-11-13 23:57 1093had the same problem today - I ... -
mvn archetype:generate 让你选择archetype创建maven project
2010-04-27 11:02 8340今天发现使用idea自带的创建maven项目的向导不work. ... -
PrettyTime Convert elapsed timestamps, like, “in 3 minutes!”
2010-04-17 19:42 1152Features: Generate human-reada ... -
login your site with facebook connect
2009-12-22 15:00 1257http://wiki.developers.facebook ... -
分页程序中得到page link的算法。
2009-01-16 11:18 1313话不多说。 public ArrayList<In ... -
Dbunit中需要把schema name 大写
2008-03-28 15:11 2526用dbunit做dao的测试。 数据库用的是oracle。 在 ... -
Dbunit在Oracle下需要注意的问题
2007-06-14 14:56 2539公司准备把数据库把MYSQL换成oracle。 系统有用dbu ...
相关推荐
ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。...
ZooKeeper 3.6.3 是一个广泛用于分布式系统的协调服务,它为分布式应用程序提供了高效且可靠的命名服务、配置管理、集群同步、分布式锁等核心功能。在深入理解源码之前,我们需要先了解ZooKeeper的基本概念和工作...
这一特性在需要实现Leader Election(领导者选举)的场景中尤为重要,例如在HBase Master的选择过程中。 4. **集群管理** 分布式集群的动态特性意味着节点可能会随时加入或离开集群。Zookeeper能够实时监控集群...
本手冊將為讀者介紹 ZooKeeper 的使用方法,并提供了一些有用的指南和解決方案,以幫助讀者更好地使用 ZooKeeper 實現高級別構造。 1. 命名服務 命名服務是 ZooKeeper 的一個基本應用,允許客戶端在 ZooKeeper ...
本文档提供了使用 ZooKeeper 实现高级功能的指导原则和最佳实践,例如名称服务、配置管理、组成员资格等,并探讨了如何通过 ZooKeeper 构建同步一致性原语,如队列和锁。 #### 创建更高层次结构的指南 ZooKeeper ...
6. **选举(Leader Election)**:ZooKeeper集群中的选举机制确保了在任何时刻只有一个领导者负责处理所有的写操作,确保数据的一致性。 在Ant编译后的源码中,你可以找到以下几个关键组件的实现: - `zookeeper-...
总结,Apache Zookeeper 3.4.12版本以其强大的功能和稳定性在分布式领域扮演着重要角色。理解并掌握Zookeeper的工作原理和使用方法,对于构建高可用、高一致性的分布式系统至关重要。无论是大型互联网公司还是小型...
ZooKeeper 的选举机制采用 Fast Leader Election 算法,以确保集群的高可用性和一致性。在选举过程中,服务器会经历 LOOKING、LEADING、FOLLOWING 和 OBSERVING 四种状态。选举过程中,服务器会根据 ZXID(事务 ID)...
它的主要目标是简化分布式应用程序的开发和管理,通过提供一系列的基础服务来帮助解决分布式环境中常见的复杂问题。Zookeeper的设计基于观察者模式,它可以存储并管理一组共享的数据,并允许客户端注册成为观察者。...
ZooKeeper是一个高度可用的协调服务,用于分布式应用程序中的管理和同步。它基于观察者模式设计,通过存储和管理共享数据来支持集群间的协作。当这些数据发生改变时,Zookeeper会通知已经注册的观察者,帮助实现...
- **Zookeeper 的选举算法**:Zookeeper 使用的是 Fast Leader Election 算法,它能够在短时间内选举出领导者,保证系统的快速恢复。 5. **Zookeeper 的运维与调优** - **监控与日志**:监控 Zookeeper 的运行...
总结来说,Zookeeper 在分布式系统中扮演了关键角色,它提供了命名服务、配置管理以及集群管理和 Leader Election 功能,极大地简化了分布式环境下的复杂性,提高了系统的稳定性和可扩展性。通过 Zookeeper,开发者...
在分布式系统中,Zookeeper是一个至关重要的组件,它主要用于实现分布式服务管理,提供诸如配置管理、命名服务、集群同步、 leader选举等核心功能。在这个"zookeeperMaster选举以及数据同步代码"项目中,我们将深入...
ZooKeeper 采用 Fast Leader Election 算法(可以理解为 Paxos 的一个简化版,一个变种)。ZooKeeper 服务器共有 4 个状态:LOOKING:寻找 Leader 状态。LEADING:领导者。FOLLOWING:跟随者。OBSERVING:观察者。...
4. **选举(Leader Election)**:Zookeeper集群中选举一个领导者(Leader),负责处理所有的写操作和维护集群一致性。 四、Zookeeper的应用场景 1. **Hadoop HDFS**:Hadoop的NameNode使用Zookeeper来监控...
这在很多分布式系统中都是这么做,这种设计有一个更好听的名字叫 Leader Election(leader 选举)。比如 HBase 的 Master 就是采用这种机制。 集群管理 在分布式的集群中,经常会由于各种原因,比如硬件故障,软件...
总结来说,ZooKeeper作为一个分布式协调服务,能够在分布式应用中提供协调、同步、领导者选举、配置管理等关键功能。通过其简单易用的API和层次化数据模型,ZooKeeper极大地简化了分布式应用的开发。Spring XD等项目...
5. **选举(Leader Election)**:在Zookeeper集群中,有一个主节点(Leader),其他节点为follower。如果Leader失败,会进行新的选举来确定新的Leader。 6. **原子操作**:所有的操作(如创建、删除节点,设置、...
Zab协议有两种模式:选主模式(Leader Election)和广播模式(Broadcasting),其中选主模式主要用于在集群中选举出一个领导者,而广播模式则负责数据的一致性同步。 ##### 4.1 Zab协议详解 1. **选主模式**:当...