开发环境搭建及简单示例

2019-10-15 05:22栏目:www.qy66.vip
TAG:

一,下载Zookeeper安装包

从官网下载稳固版安装包后,解压。

图片 1

其中ZK_HOME 为:D:Program Fileszookeeper-3.4.9

 

二,启动Zookeeper Server

是因为在Eclipse里面写的前后相继是Client,须求连接到Zookeeper Server。由此,须求开启Zookeeper Server。在Windows下,运维ZK_HOME/bin/zkServer.cmd 就能够运营Zookeeper Server

哪些运转报错提醒找不到zoo.cfg,那是因为官方网址提供的是 ZK_HOME/conf/zoo_sample.cfg,复制一份重命名就可以。

图片 2

在Windows情况下,供给在意的是布置 dataDir 参数的值。它私下认可是在 ZK_HOME/bin/目录下。能够把它配置为别的目录,比方:

图片 3

代表将dataDir钦赐为其转为目录的父目录下的 dataDir文件夹下(D:Program Fileszookeeper-3.4.9dataDir)

 

在cmd命令行运行Zookeeper Server:  >zkServer.cmd

图片 4

 

当有新的Client连接受Server后,就该cmd窗口就能输出一些新的内容,如下:

图片 5

 

三,Eclipse开辟景况安排

新建一个Maven工程,增多:

<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>

 

新建三个Class,源代码如下:

import java.io.IOException;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;

public class Master implements Watcher{

    ZooKeeper zk;
    String hostPort;

    public Master(String hostPort) {
        this.hostPort = hostPort;
    }

    void startZK() throws IOException{
        zk = new ZooKeeper(hostPort, 15000, this);
    }

    @Override
    public void process(WatchedEvent event) {
        System.out.println(event);
    }


    public static void main(String[] args) throws Exception{
        String add = "localhost:2181";
        Master m = new Master(add);
        m.startZK();
        Thread.sleep(60000);
    }
}

Master.java的机能只是简短地组建多个Zookeeper 会话。

运营那一个类,Eclipse调节台出口:

2016-10-20 20:59:06,068 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=E:workspaceeclipse-workspacezookeeper
2016-10-20 20:59:06,068 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=15000 watcher=zookeeper.Master@62f6fb59
2016-10-20 20:59:06,114 [myid:] - INFO  [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
2016-10-20 20:59:06,114 [myid:] - INFO  [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@876] - Socket connection established to 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, initiating session
2016-10-20 20:59:06,177 [myid:] - INFO  [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, sessionid = 0x157e226a4790000, negotiated timeout = 15000
WatchedEvent state:SyncConnected type:None path:null

标注,测量检验连接成功。

 

比如运维时报错:

log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

标识你的陈设文件未有拉长到classpath下。只需求将ZK_HOME/conf/log4j.properties 放到工程的src目录下就能够。

 

四,在单机中模仿Zookeeper集群

Zookeeper只需求加上若干布局文件,就足以在一台微型计算机上运营八个Zookeeper服务端,进而模拟Zookeeper集群。它是经过在一台Computer上运营多少个经过,每一个进度单独代表一个Zookeeper服务器,进而结成Zookeeper集群的。

切切实实铺排如下:

Zookeeper暗许的布局文件是zoo_sample.cfg ,将该配置文件复制三份:

cp zoo_sample.cfg  zoo.cfg  zoo1.cfg zoo2.cfg

接下来修改以下多少个参数:①dataDir ②clientPort ③增加server.n=ip:仲裁通讯端口号:Leader公投端口号

比方说,这八个布局文件中的相应参数分别如下:

zoo.cfg
dataDir=/home/xxx/dataDir
clientPort=2181
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445


zoo2.cfg
dataDir=/home/xxx/dataDir2
clientPort=2182
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445


zoo3.cfg
dataDir=/home/xxx/dataDir3
clientPort=2183
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445

 

除此以外,在dataDir钦点的目录下,创设叁个myid文本文件,用来标志Zookeeper服务器的ID音信。

echo 1 > $dataDir/myid
echo 2 > $dataDir2/myid
echo 3 > $dataDir3/myid

 

动用相应的布置文件来运维Zookeeper服务。如下图,一共运转了多个Zookeeper服务,进而在单机上效仿七个三节点集群。

图片 6

 

参照他事他说加以考察:《Zookeeper分布式进程协同才能详解》

版权声明:本文由千亿游戏官网发布于www.qy66.vip,转载请注明出处:开发环境搭建及简单示例