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){ } } } } }
参考文章:
相关推荐
Curator是Netflix公司开源的一套ZooKeeper客户端框架,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等,实现了Fluent风格的API接口,目前已经...
Zookeeper 原生api zkClient Curator操作zookeeper的基本实现。
zookeeper客户端curator操作示例
zookeeper分布session式实现
5、zookeeper的java -Curator(服务注册与发现)...该示例会涉及到本专栏下的其他文章,比如:4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 等文章,都是在该专栏下的。
zookeeper 使用 Curator 进行增、删、改、查、监听、分布式锁
curator zookeeper 3.4.6 2.9.1
NULL 博文链接:https://supben.iteye.com/blog/2094077
使用原生的zookeeper的依赖包,如果为了方便也可以使用Curator框架的包。
Zookeeper_Java客户端Curator
zookeeper的curator使用代码
Zookeeper客户端Curator Framework示例代码,博客详解链接:https://blog.csdn.net/u010889616/article/details/80209629
zookeeper Java api - curator 5.6.0
zookeeper实现分布式session sample
NULL 博文链接:https://m635674608.iteye.com/blog/2232760
curator zookeeper 3.4.6 2.9.1
zookeeper通过使用curator实现分布式锁来保证数据的一致性。 zookeeper通过使用curator实现分布式锁来保证数据的一致性。
ZooKeeper-Curatorzookeeper的curator客户端#在学习时的代码上传以备工作时获取。
使用apache curator-test单元测试zookeeper
zookeeper_demo maven项目:包含原生API、zkclient、Curator操作,并包含集群、分布锁等操作