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

zookeeper session过期 Curator

 
阅读更多

zookeeper 中 session 过期解释:

 

当client 和 server 连接后,不是100%保证一直可以连上的。比如网络问题。那么client需要重连,这种机制自己实现比较复杂,还在有Curator客户端帮我们解决了,只需要在连接后注册一个监听器就可以了。

模拟服务端线路不通可以开启防火墙方法,或者,

开启81端口:
iptables -I INPUT -i eth0 -p tcp --dport 81 -j ACCEPT
iptables  -I OUTPUT -o eth0 -p tcp --sport 81 -j ACCEPT

关闭81端口:
iptables -I INPUT -i eth0 -p tcp --dport 81 -j DROP
iptables -I OUTPUT -o eth0 -p tcp --sport 81 -j DROP

然后保存

具体代码如下: 

代码如下:

String path = "/session/service-";
		SessionConnectionStateListener listener = new SessionConnectionStateListener(path,zookeeperConnectionString);
		client.getConnectionStateListenable().addListener(listener);
		client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL_SEQUENTIAL)
		.forPath(path,"haha".getBytes());

 

下面是监听器:

package com.mmblue.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.state.ConnectionState;
import org.apache.curator.framework.state.ConnectionStateListener;
import org.apache.zookeeper.CreateMode;

public class SessionConnectionStateListener implements ConnectionStateListener {
	private String zkRegPathPrefix;
	private String regContent;

	public SessionConnectionStateListener(String zkRegPathPrefix, String regContent) {
		this.zkRegPathPrefix = zkRegPathPrefix;
		this.regContent = regContent;
	}

	@Override
	public void stateChanged(CuratorFramework curatorFramework, ConnectionState connectionState){
		if(connectionState == ConnectionState.LOST){
			while(true){
				try {
					System.err.println("我来了,嘿嘿");
					if(curatorFramework.getZookeeperClient().blockUntilConnectedOrTimedOut()){
						curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath(zkRegPathPrefix, regContent.getBytes("UTF-8"));
						break;
					}
				} catch (InterruptedException e) {
					break;
				} catch (Exception e){
					
				}
			}
		}
	}	
}

 

参考文章:

http://www.codelast.com/?p=6049

分享到:
评论

相关推荐

    zookeeper开源客户端Curator

    Curator是Netflix公司开源的一套ZooKeeper客户端框架,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等,实现了Fluent风格的API接口,目前已经...

    curator zookeeper 3.4.6 2.9.1

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

    Zookeeper 原生api zkClient Curator操作

    在Java开发中,我们通常使用三种方式来操作Zookeeper:原生API、zkClient和Curator。接下来,我们将详细探讨这三种方式。 **一、Zookeeper原生API** Zookeeper提供了Java API,可以直接与Zookeeper服务器进行交互...

    zookeeper学习之三(Curator客户端)

    当ZooKeeper服务器断开连接时,Curator会自动尝试重新建立连接,并处理会话过期事件。这极大地提高了应用的健壮性。 2. **阻塞策略**: 在等待ZNode数据或事件时,Curator提供了一种阻塞策略。例如,`...

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

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

    zookeeper分布session式实现

    ### 基于ZooKeeper的分布式Session实现详解 #### 1. 认识ZooKeeper ZooKeeper,形象地被称为“动物园管理员”,在分布式系统中扮演着至关重要的角色。随着企业级应用系统的不断扩展,传统的单体架构难以应对日益...

    5、zookeeper的java -Curator(服务注册与发现)

    总的来说,Zookeeper结合Curator的`ServiceDiscovery`机制,为分布式系统中的服务提供了一种可靠、灵活的注册与发现方案。开发者可以通过上述接口轻松地实现服务的生命周期管理和查找,确保服务之间的通信稳定可靠。...

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

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

    zookeeper客户端curator操作示例

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

    Zookeeper开源客户端框架Curator简介与示例

    Curator 是一个基于 ZooKeeper 的开源客户端框架,它为 ZooKeeper 提供了高级抽象和功能,使得开发人员能够更方便地使用 ZooKeeper。 **Curator 框架概述** Curator 包含多个模块,如 ZooKeeper 客户端连接管理、...

    zookeeper实现分布式session sample

    - **session过期处理**:可以设置Znode的超时时间与session过期时间一致,当Znode被删除,视为session过期,服务器节点清除本地session。 5. **优化策略** - 为了减轻Zookeeper的压力,可以使用分布式缓存(如...

    zookeeper Java api - curator 5.6.0

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

    springboot-zookeeper-curator.rar

    SpringBoot与Zookeeper Curator整合详解 在分布式系统中,协调服务是至关重要的,Apache ZooKeeper和Curator作为其中的佼佼者,被广泛应用于配置管理、服务发现、分布式锁等场景。本教程将深入讲解如何在SpringBoot...

    curator zookeeper

    curator zookeeper 3.4.6 2.9.1

    Zookeeper客户端Curator Framework使用代码

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

    基于ZooKeeper的分布式Session实现

    当Session过期或被删除时,ZooKeeper会通知所有关注该节点的服务器,从而实现Session的自动失效。 4. **负载均衡**: 分布式Session的另一个挑战是如何在多台服务器间均匀分配用户请求。通过结合负载均衡器,...

    Zookeeper-Java客户端Curator

    Zookeeper_Java客户端Curator

    浅谈Zookeeper开源客户端框架Curator

    3. Session过期的问题:Curator提供了Session过期处理机制,解决了ZooKeeper Session过期的问题。 4. 对可恢复异常的处理:Curator提供了可恢复异常处理机制,解决了ZooKeeper使用过程中的可恢复异常问题。 ...

    curator_zookeeper需要的jar

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

Global site tag (gtag.js) - Google Analytics