zookeeper Eclipse 开发环境搭建及简单示例

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介:

一,下载Zookeeper安装包

官方网站下载稳定版安装包后,解压。

其中ZK_HOME 为:D:\Program Files\zookeeper-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,复制一份重命名即可。

在Windows环境下,需要注意的是配置 dataDir 参数的值。它默认是在 ZK_HOME/bin/目录下。可以把它配置为其他目录,比如:

表示将dataDir指定为其转为目录的父目录下的 dataDir文件夹下(D:\Program Files\zookeeper-3.4.9\dataDir)

 

在cmd命令行启动Zookeeper Server:  >zkServer.cmd

 

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

 

三,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:\workspace\eclipse-workspace\zookeeper
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集群。它是通过在一台电脑上运行多个进程,每个进程单独代表一个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服务,从而在单机上模拟一个三节点集群。

 

参考:《Zookeeper分布式过程协同技术详解》


本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者

相关文章
|
Java Linux 开发工具
怎样下载安装Eclipse并配置开发环境?
Eclipse是一款非常流行的Java开发工具,它本身是开源的,适合多种多样的开发场景,深受Java开发者们的喜爱。今天我就跟大家介绍一下如何下载安装Eclipse,以及如何配置Eclipse的开发环境。
354 0
|
Java 应用服务中间件 Android开发
【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)
  之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩。   EJB开发依赖的最基本的环境:JDK、Eclipse、JBoss,这里简单介绍一下最基本的环境的搭建。
【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)
|
4月前
|
IDE Ubuntu Java
在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境的指南。
完成以上步骤后,您将在Ubuntu 18.04系统上成功安装并配置了Eclipse IDE,它将与JDK 8兼容,可以开始进行Java开发工作。如果遇到任何问题,请确保每一步骤都正确执行,并检查是否所有路径都与您的具体情况相匹配。
201 11
|
IDE Java 开发工具
06. 【Java教程】Java 集成开发环境 - Eclipse
06. 【Java教程】Java 集成开发环境 - Eclipse
263 1
|
Ubuntu Linux 开发工具
建立ubuntu下基于eclipse的android开发环境
建立ubuntu下基于eclipse的android开发环境
165 1
|
监控 Java 开发工具
基于Eclipse+SDK+ADT+DDMS的安卓开发环境完整搭建过程
基于Eclipse+SDK+ADT+DDMS的安卓开发环境完整搭建过程
313 0
基于Eclipse+SDK+ADT+DDMS的安卓开发环境完整搭建过程
|
IDE Java 开发工具
Java 集成开发环境 eclipse 的安装及基本使用
Java 集成开发环境 eclipse 的安装及基本使用
600 0
Java 集成开发环境 eclipse 的安装及基本使用
|
Android开发 C语言 芯片
Eclipse下STM32开发环境之安装配置(二)
Eclipse下STM32开发环境之安装配置(二)
1097 1
Eclipse下STM32开发环境之安装配置(二)
|
IDE Java 编译器
Eclipse下STM32开发环境之安装配置(一)
Eclipse下STM32开发环境之安装配置(一)
710 1
Eclipse下STM32开发环境之安装配置(一)
|
Java 应用服务中间件 Apache
SpringBoot2.0 使用Eclipse搭建SpringBoot开发环境(三)
spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。你可以使用Spring Boot创建Java应用,并使用java -jar启动它或采用传统的war部署方式。
558 0
SpringBoot2.0 使用Eclipse搭建SpringBoot开发环境(三)