`
mmBlue
  • 浏览: 167699 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Curator selector

 
阅读更多

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(){

			@Override
			public 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();
	}
}

 

 

 

分享到:
评论

相关推荐

    Curator的JAR包

    Curator是Apache ZooKeeper的一个强大的客户端库,它为开发者提供了丰富的工具和抽象,使得在分布式环境中操作ZooKeeper变得更加简单。ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,它是集群的管理...

    zookeeper Java api - curator 5.6.0

    Apache Curator 是一个高度封装的 ZooKeeper Java 客户端库,它简化了与 ZooKeeper 交互的复杂性,提供了更高级别的抽象和实用工具。ZooKeeper 是一个分布式的,开放源码的协调服务,用于分布式应用程序,提供命名...

    项目加入zookeeper的依赖包(Curator框架)

    而Curator是Facebook开源的一个基于Zookeeper的客户端框架,它对Zookeeper的API进行了封装,提供了更高级别的抽象,使得开发者能够更方便地与Zookeeper进行交互。 标题提到的“项目加入Zookeeper的依赖包(Curator...

    curator zookeeper 3.4.6 2.9.1

    《Curator与Zookeeper在3.4.6与2.9.1版本中的协同工作》 Apache Curator和Zookeeper是两个在分布式系统管理中至关重要的组件。Zookeeper作为一个开源的分布式协调服务,广泛用于配置维护、命名服务、分布式同步等...

    zookeeper客户端curator操作示例

    而Apache Curator是Facebook开源的一个ZooKeeper客户端库,它提供了更高级别的API,简化了ZooKeeper的使用,并增加了诸如连接管理、重试策略、事务操作等功能。 在Java开发中,Curator是使用ZooKeeper最常用且推荐...

    curator-client-4.3.0-API文档-中英对照版.zip

    赠送jar包:curator-client-4.3.0.jar; 赠送原API文档:curator-client-4.3.0-javadoc.jar; 赠送源代码:curator-client-4.3.0-sources.jar; 赠送Maven依赖信息文件:curator-client-4.3.0.pom; 包含翻译后的API...

    curator-framework-2.6.0-API文档-中文版.zip

    赠送jar包:curator-framework-2.6.0.jar; 赠送原API文档:curator-framework-2.6.0-javadoc.jar; 赠送源代码:curator-framework-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-framework-2.6.0.pom; ...

    curator-client-2.7.1-API文档-中文版.zip

    赠送jar包:curator-client-2.7.1.jar; 赠送原API文档:curator-client-2.7.1-javadoc.jar; 赠送源代码:curator-client-2.7.1-sources.jar; 赠送Maven依赖信息文件:curator-client-2.7.1.pom; 包含翻译后的API...

    curator-framework-4.0.1-API文档-中英对照版.zip

    赠送jar包:curator-framework-4.0.1.jar; 赠送原API文档:curator-framework-4.0.1-javadoc.jar; 赠送源代码:curator-framework-4.0.1-sources.jar; 赠送Maven依赖信息文件:curator-framework-4.0.1.pom; ...

    apache-curator-3.2.0

    Apache Curator 是一个高度抽象和完善的客户端库,用于简化 Apache ZooKeeper 的使用。ZooKeeper 是一个分布式的、开放源代码的服务,它提供一个高可用的、高性能的分布式协调服务,广泛应用于分布式系统中,如...

    zookeeper学习之三(Curator客户端)

    本篇文章将专注于ZooKeeper的客户端——Curator,这是一个由Apache提供的Java库,旨在简化与ZooKeeper的交互。 Curator客户端是Apache Curator框架的一部分,该框架为开发人员提供了一系列高级API和工具,用于处理...

    curator-recipes-2.6.0-API文档-中文版.zip

    赠送jar包:curator-recipes-2.6.0.jar; 赠送原API文档:curator-recipes-2.6.0-javadoc.jar; 赠送源代码:curator-recipes-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-recipes-2.6.0.pom; 包含翻译后...

    curator_zookeeper需要的jar

    在Java开发中,Apache Curator 是一个非常重要的工具库,它为使用Zookeeper提供了一套高级API,简化了Zookeeper的使用。标题“curator_zookeeper需要的jar”表明我们正在讨论Curator与Zookeeper集成时所需的JAR文件...

    zk使用curator实现分布式锁

    在分布式系统中,确保数据的一致性和正确性是至关重要的,而ZooKeeper与Curator的结合使用就是解决这一问题的有效方案。ZooKeeper是一个高度可靠的分布式协调服务,它提供了诸如分布式锁、队列和配置管理等核心功能...

    zk客户端curator2.11

    客户端是Curator Framework,是Apache的项目,它主要的功能是为ZK的客户端使用提供了高可用的封装。在Curator Framework基础上封装的curator-recipes,实现了很多经典场景。比如:集群管理(Leader选举)、共享锁、...

    curator-client-2.7.1-API文档-中英对照版.zip

    赠送jar包:curator-client-2.7.1.jar; 赠送原API文档:curator-client-2.7.1-javadoc.jar; 赠送源代码:curator-client-2.7.1-sources.jar; 赠送Maven依赖信息文件:curator-client-2.7.1.pom; 包含翻译后的API...

    curator-framework-4.3.0-API文档-中英对照版.zip

    赠送jar包:curator-framework-4.3.0.jar; 赠送原API文档:curator-framework-4.3.0-javadoc.jar; 赠送源代码:curator-framework-4.3.0-sources.jar; 赠送Maven依赖信息文件:curator-framework-4.3.0.pom; ...

    curator-client-2.6.0-API文档-中文版.zip

    赠送jar包:curator-client-2.6.0.jar; 赠送原API文档:curator-client-2.6.0-javadoc.jar; 赠送源代码:curator-client-2.6.0-sources.jar; 赠送Maven依赖信息文件:curator-client-2.6.0.pom; 包含翻译后的API...

    Zookeeper客户端Curator Framework使用代码

    Zookeeper客户端Curator Framework是Apache Zookeeper项目的一个高级封装库,它为开发者提供了一系列便捷的API,使得操作Zookeeper变得更加简单。本篇文章将深入探讨Curator Framework的主要功能、使用方法以及示例...

    zookeeper 使用 Curator 示例监听、分布式锁

    Curator 是 Apache ZooKeeper 的一个客户端库,提供了丰富的工具和模式,简化了 ZooKeeper 的使用。本示例将详细介绍如何利用 Curator 在 ZooKeeper 上进行数据操作以及实现分布式锁。 一、ZooKeeper 与 Curator 的...

Global site tag (gtag.js) - Google Analytics