一、什么是Zookeeper
zookeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据,zookeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。
zookeeper提供的常见服务如下:
- 命名服务:按名称标识集群中的节点,它类似于DNS,但仅对于节点
- 配置管理:加入节点的最近和最新的系统配置信息
- 集群管理:实时地在集群和节点状态中加入/离开节点
- 选举算法:选取一个节点作为协调目的的leader
- 锁定和同步服务:在修改数据的同时锁定数据
- 高度可靠的数据注册:即使在一个或几个节点关闭时也可以获得数据
二、Linux安装Zookeeper
1.新建zookeeper文件夹作为zk的安装目录
mkdir zookeeper
2.下载zk安装包
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
3.解压安装包
tar -zxf zookeeper-3.3.6.tar.gz
4.新建data文件夹,存放zk数据
mkdir data
5.修改zoo.cfg主要配置端口,数据目录
vi zoo.cfg
6.启动zk Server
./zkServer.sh start
7.启动客户端
./zkCli.sh
三、java 连接zk,并新建节点,修改数据
1.pom引用zkclient
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
2.新建测试类
/**
* @author Tower
*/
public class ZookeeperTest {
public static void main(String[] args) {
ZkClient zkClient = new ZkClient("10.1.14.197");
List<String> dirList = zkClient.getChildren("/");
System.out.println(dirList.toString());
}
}
可能还有一些异常情况没有判断,但是简单的使用就是这样
3.新建监听,当数据变化时收到提示
当数据发生变化时,监听就会收到相应的通知
四、zk集群搭建
需要在zoo.cfg中添加server的配置。配置方式为:server.id=host:port1:port2
id 被称为 Server ID,用来标识该机器在集群中的机器序号(在每台机器的 dataDir 目录下创建 myid 文件,文件内容即为该机器对应的 Server ID 数字)。host 为机器 IP,port1 用于指定 Follower 服务器与 Leader 服务器进行通信和数据同步的端口,port2 用于进行 Leader 选举过程中的投票通信。