javazookeeper
⑴ zookeeper是java写的还是c
Java
因为安装 zk 需要安装 JDK
⑵ java连接zookeeper集群,必须配置多个ip吗
zookeeper的集群一般都是奇数,多采用三台服务器,就是一个leader,两个follower的模式,你只填一个IP,那就是单机模式
⑶ zookeeper一定要用java吗
znode创建类型(CreateMode):
PERSISTENT               持久化节点
   
PERSISTENT_SEQUENTIAL     顺序自动编号持久化节点,这种节点会根据当前已存在的节点数自动加 1
   
EPHEMERAL    临时节点, 客户端session超时这类节点就会被自动删除
  
EPHEMERAL_SEQUENTIAL   临时自动编号节点
[java] view plainprint?
/* 
 * ZookeeperTest.java 
 */  
package com.x.zookeeper;  
  
import java.io.IOException;  
import java.util.List;  
  
import org.apache.zookeeper.CreateMode;  
import org.apache.zookeeper.WatchedEvent;  
import org.apache.zookeeper.Watcher;  
import org.apache.zookeeper.ZooKeeper;  
import org.apache.zookeeper.ZooDefs.Ids;  
import org.apache.zookeeper.data.Stat;  
import org.junit.After;  
import org.junit.Assert;  
import org.junit.Before;  
import org.junit.Test;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
/** 
 *  
 * @author http://blog.csdn.net/java2000_wl 
 * @version <b>1.0</b> 
 */  
public class ZookeeperTest {  
      
    private static final int SESSION_TIMEOUT = 30000;  
      
    public static final Logger LOGGER = LoggerFactory.getLogger(ZookeeperTest.class);  
      
    private Watcher watcher =  new Watcher() {  
  
        public void process(WatchedEvent event) {  
            LOGGER.info("process : " + event.getType());  
        }  
    };  
      
    private ZooKeeper zooKeeper;  
      
    /** 
     *  连接zookeeper 
     * <br>------------------------------<br> 
     * @throws IOException 
     */  
    @Before  
    public void connect() throws IOException {  
        zooKeeper  = new ZooKeeper("localhost:2181,localhost:2182,localhost:2183", SESSION_TIMEOUT, watcher);  
    }  
      
    /** 
     *  关闭连接 
     * <br>------------------------------<br> 
     */  
    @After  
    public void close() {  
        try {  
            zooKeeper.close();  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
  
    /** 
     * 创建一个znode  
     *  1.CreateMode 取值   
     *  PERSISTENT:持久化,这个目录节点存储的数据不会丢失 
     *  PERSISTENT_SEQUENTIAL:顺序自动编号的目录节点,这种目录节点会根据当前已近存在的节点数自动加 1,然后返回给客户端已经成功创建的目录节点名; 
     *  EPHEMERAL:临时目录节点,一旦创建这个节点的客户端与服务器端口也就是 session过期超时,这种节点会被自动删除 
     *  EPHEMERAL_SEQUENTIAL:临时自动编号节点 
     * <br>------------------------------<br> 
     */  
    @Test  
    public void testCreate() {  
        String result = null;  
         try {  
             result = zooKeeper.create("/zk001", "zk001data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);  
        } catch (Exception e) {  
             LOGGER.error(e.getMessage());  
             Assert.fail();  
        }  
         LOGGE
⑷ 如何启动zookeeper-3.3.6
如何启动zookeeper-3.3.6?
启动zookeeper-3.3.6的方法:下载安装配置zookeeper的服务器环境-创建文件-设置权限-编辑-重启即可。
具体步骤:
一、登陆linux服务器用cd 命令切换到/etc/rc.d/init.d/目录下。

十、重启即可。
⑸ java zookeeper怎么清除缓存
掌握zookeeper事件监听机制,非常重要,可以说是跨入了进阶的门槛,只有掌握了如何监听某个节点或路径,我们才能在节点变化后,做一些我们想做的事,包括: 1,配置文件同步 2,主从切换 3,分布式队列 4,分布式锁
⑹ 如何解决java接口访问ZooKeeper时的connectionloss错误
常见错误日志如下:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
1. 原因:
是因为ZooKeeper建立连接时采用异步操作,连接操作后并不能保证ZK连接已成功。如果在ZK连接成功前的这个小时间窗口去访问ZK,就会碰到如上错误。
2. 解决思路
我们在新建ZK连接后要等一段时间,保证连接成功后再访问ZK。
3. 网上比较赞同的解决方案:
主要利用两个Java类:
(1)java.util.concurrent.CountDownLatch:
一个同步辅助类,类似倒数计数,直到计数器为0时才能对资源“解锁”。未解锁前等待该资源的进程只能被阻塞。
主要方法:
public CountDownLatch(int count);                           /* 构造函数,参数指定计数次数 */
public void countDown();                                           /* 当前线程调用此函数,则计数减一 */
public void await() throws InterruptedException;      /* 此函数会一直阻塞当前线程,直到计时器的值为0为止 */
(2)org.apache.zookeeper.Watcher
ZooKeeper有一个很有用的功能,就是集群上每一个变化都可以通知到自定义的Watchcer。
⑺ java连接zookeeper的时候报错,请问下是什么原因啊
常见错误日志如下:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
1. 原因:
是因为ZooKeeper建立连接时采用异步操作,连接操作后并不能保证ZK连接已成功。如果在ZK连接成功前的这个小时间窗口去访问ZK,就会碰到如上错误。
2. 解决思路
我们在新建ZK连接后要等一段时间,保证连接成功后再访问ZK。
3. 网上比较赞同的解决方案:
主要利用两个Java类:
(1)java.util.concurrent.CountDownLatch:
一个同步辅助类,类似倒数计数,直到计数器为0时才能对资源“解锁”。未解锁前等待该资源的进程只能被阻塞。
主要方法:
public CountDownLatch(int count); /* 构造函数,参数指定计数次数 */
public void countDown(); /* 当前线程调用此函数,则计数减一 */
public void await() throws InterruptedException; /* 此函数会一直阻塞当前线程,直到计时器的值为0为止 */
(2)org.apache.zookeeper.Watcher
ZooKeeper有一个很有用的功能,就是集群上每一个变化都可以通知到自定义的Watchcer。
