1.软文推荐

2.软文推荐

3.软文推荐

目录: 1、dubbo使用zookeeper连接,zookeeper宕机后怎么处理 2、如何使用Cruator监听zookeeper事件变化 3、dubbo使用zookeeper连接,zookeeper宕机后怎么处理? dubbo使用zookeeper连接,zookeeper宕机后怎么处理

zookeeper宕机后,因为消费者会缓存提供者的信息,所以应用不会有问题。但是,此时提供者和消费者都无法重连zookeeper,因为dubbo貌似配置的zkclient不会重连zookeeper,所以一旦重启一台服务提供者,那么这台就从服务消费者的缓存中消失了,此时服务消费者又连不上zookeeper,所以如果同时重启,消费者就没有提供者可用了,所以只能重启一台提供者后,再重启一个消费者,交错重启。如何使用Cruator监听zookeeper事件变化

您好,掌握zookeeper事件监听机制,非常重要,可以说是跨入了进阶的门槛,只有掌握了如何监听某个节点或路径,我们才能在节点变化后,做一些我们想做的事,包括:

1,配置文件同步

2,主从切换

3,分布式队列

4,分布式锁

5,其他

散仙,在以前的文章里面有写过使用zookeeper原生的api,监听zk节点变化,那么本篇我们就来看下,如何使用curator来完成监听,代码如下:

pre name="code" class="java"package com.qin.curator.zk;

import javax.sound.midi.Patch;

import org.apache.curator.RetryPolicy;

import org.apache.curator.framework.CuratorFramework;

import org.apache.curator.framework.CuratorFrameworkFactory;

import org.apache.curator.framework.CuratorFrameworkFactory.Builder;

import org.apache.curator.framework.api.CuratorWatcher;

import org.apache.curator.framework.recipes.cache.NodeCache;

import org.apache.curator.framework.recipes.cache.NodeCacheListener;

import org.apache.curator.framework.recipes.cache.PathChildrenCache;

import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;

import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener;

import org.apache.curator.retry.ExponentialBackoffRetry;

import org.apache.curator.utils.ZKPaths;

import org.apache.zookeeper.WatchedEvent;

/**

*

* 使用curator监听zookeeper节点

* @author qindongliang

* **/

public class CuratorWatch {

static CuratorFramework zkclient=null;

static String nameSpace="php";

static {

String zkhost="192.168.46.22:2181";//zk的host

RetryPolicy rp=new ExponentialBackoffRetry(1000, 3);//重试机制

Builder builder = CuratorFrameworkFactory.builder().connectString(zkhost)

.connectionTimeoutMs(5000)

.sessionTimeoutMs(5000)

.retryPolicy(rp);

builder.namespace(nameSpace);

CuratorFramework zclient = builder.build();

zkclient=zclient;

zkclient.start();// 放在这前面执行

zkclient.newNamespaceAwareEnsurePath(nameSpace);

}

public static void main(String[] args) throws Exception{

watch();

Thread.sleep(Long.MAX_VALUE);

}

/**

*

* 监听节点变化

*

* */

public static void watch()throws Exception{

PathChildrenCache cache = new PathChildrenCache(zkclient, "/zk", false);

cache.start();

System.out.println("监听开始/zk........");

PathChildrenCacheListener plis=new PathChildrenCacheListener() {

@Override

public void childEvent(CuratorFramework client, PathChildrenCacheEvent event)

throws Exception {

switch ( event.getType() )

{

case CHILD_ADDED:

{

System.out.println("Node added: " + ZKPaths.getNodeFromPath(event.getData().getPath()));

break;

}

case CHILD_UPDATED:

{

System.out.println("Node changed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));

break;

}

case CHILD_REMOVED:

{

System.out.println("Node removed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));

break;

}

}

}

};

//注册监听

cache.getListenable().addListener(plis);

}

}

/pre

运行后的控制台打印:

pre name="code" class="java"18:33:07.722 [main] INFO o.a.c.f.imps.CuratorFrameworkImpl - Starting

18:33:07.727 [main] DEBUG o.a.curator.CuratorZookeeperClient - Starting

18:33:07.727 [main] DEBUG org.apache.curator.ConnectionState - Starting

18:33:07.727 [main] DEBUG org.apache.curator.ConnectionState - reset

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:host.name=QINDONGLIANG.dhgatecn.msf

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.version=1.7.0_04

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.home=D:Javajdk1.7.0_04jre

18:33:07.734 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.class.path=D:eclipseworkspace2ywopzkin;D:eclipseworkspace2ywopzklibcurator-client-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-examples-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-framework-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-recipes-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-test-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-x-discovery-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-x-discovery-server-2.6.0.jar;D:eclipseworkspace2ywopzklibcurator-x-rpc-2.6.0.jar;D:eclipseworkspace2ywopzkliblog4j-1.2.15.jar;D:eclipseworkspace2ywopzklibzookeeper-3.4.5.jar;D:eclipseworkspace2ywopzklibcommons-io-2.1.jar

dubbo使用zookeeper连接,zookeeper宕机后怎么处理?

1、配置文件同步

2、主从切换

3、分布式队列

4、分布式锁

Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。

通过监控这些数据状态的变化,从而可以达到基于数据的集群管理,后面将会详细介绍 Zookeeper 能够解决的一些典型问题,这里先介绍一下,Zookeeper 的操作接口和简单使用示例。

常用接口列表

客户端要连接 Zookeeper 服务器可以通过创建 org.apache.zookeeper. ZooKeeper 的一个实例对象,然后调用这个类提供的接口来和服务器交互。

前面说了 ZooKeeper 主要是用来维护和监控一个目录节点树中存储的数据的状态,所有我们能够操作 ZooKeeper 的也和操作目录节点树大体一样,如创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子目录节点,给某个目录节点设置权限和监控这个目录节点的状态变化。

相关文章 8

1

如何将网站从WordPress.com移至WordPress.org(怎样将网址) 3分钟前

WordPress是一个免费的开源项目,深受用户喜爱,它有不少功能强大的WordPress插件。我们可以在WordPress.com上创建免费网站,但是在使用过Wor...

2

宝塔面板价格(宝塔面板国际版) 5分钟前

目录:1、宝塔面板怎么现在这么多问题?有没有其他运维工具推荐?2、宝塔面板干什么用的3、已有阿里云ecs安装宝塔linux面板时还要购买吗...

4

影响香港服务器访问速度的几大因素(香港服务器影响收录吗) 11分钟前

电子商务的普及发展,带动着香港服务器租用市场火爆。如今很多站长及企业都有租用香港服务器进行网站建设。 当然,有人可能会问,为...

6

Dynadot域名获取转移码的方法(dynu域名) 13分钟前

我们都知道Dynadot在域名过期之前是可以进行转出的,所以很多站长关心Dynadot域名的转出方法,首先Dynadot域名转出之前我们需要获得转移码...

7

腾讯云服务器租赁(腾讯服务器租借) 15分钟前

目录:1、腾讯云服务器怎么样啊,贵不,多少钱能租用?2、腾讯云服务器好不好啊,贵不,多少钱能租用3、一个云服务器要8000吗4、云主机...

8

美国主机空间选购常见的几大误区(美国免费主机空间) 18分钟前

在选购美国主机空间时,一般需要注意的问题有很多,小编之前也为大家介绍过许多。不过也有一些问题是需要特别注意的。 为了让大家更...