一、ubuntu上安裝,配置,操作zookeeper
1.準備安裝文件zookeeper-3.4.5.tar
2.上傳安裝文件到ubuntu,打開xshell,使用快捷鍵Ctrl+Alt+f打開文件上傳窗口,將文件拖拽到ubuntu指定目錄下
3.解壓tar -zxvf zookeeper-3.4.5.tar.gz
4.cd都zookeeper-3.4.5/conf目錄下,將zoo_sample.cfg複製一份,文件名爲zoo.cfg
5.打開vi,編輯zoo.cfg文件,添加,保存
單個zookeeper配置:只需在上圖加入紅框中的內容即可
集羣配置:要是多個虛擬機或者機器上都安裝了zookeeper,則每個zookeeper配置文件都加入相同的配置即可,
如下:server.1=ubuntu1.2888:3888
server.2=ubuntu2.2888:3888
server.3=ubuntu3.2888:3888
bogon和ubuntu1,ubuntu2,ubuntu3是你虛擬機上ubuntu的主機名,其餘固定配置,其中2888是zookeeper與其它機器上的zookeeper通信的端口,3888是zookeeper集羣選舉master的通信端口
6.啓動,關閉zookeeper
cd到zookeeper的安裝目錄下執行
1.bin/zkServer.sh start 啓動zookeeper
2.bin/zkServer.sh stop 停止zookeeper
3.bin/zkServer.sh status 查詢zookeeper的狀態,上圖中Mode代表是主是從
7.使用zookeeper客戶端
cd到zookeeper的安裝目錄下執行
1.bin/zkCli.sh
2.執行help命令,查看幫助
二、java代碼連接zookeeper,增刪改查
1.環境:在springboot的pom.xml添加zookeeper的maven依賴
2.zookeeper的增刪改查java代碼如下
package zookeeper;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
/**
* Created by Administrator on 2018/8/15.
*/
public class ZookeeperController {
ZooKeeper zk = null;
public static void main(String[] args) throws Exception {
ZookeeperController zookeeperController = new ZookeeperController();
ZooKeeper zk = zookeeperController.getZookeeper();
//zookeeperController.creat(zk);
zookeeperController.get(zk);
//zookeeperController.remove(zk);
zk.close();
}
//建立zookeeper連接
public ZooKeeper getZookeeper() throws Exception {
zk = new ZooKeeper("192.168.237.133:2181", 3000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println(watchedEvent.getType()+"-------------"+watchedEvent.getPath());
//驗證zookeeper監聽 2.持續監聽
/* try {
zk.getChildren("/",true);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}*/
}
});
return zk;
}
//創建節點
public void creat(ZooKeeper zk) throws Exception {
if(zk.exists("/zoo", false) == null)
{
zk.create("/zoo", "Zookeeper".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
}
//查詢子節點及子節點數據
public void get(ZooKeeper zk) throws Exception {
List<String> dataList = zk.getChildren("/",true);
for (String data : dataList) {
System.out.println("data:"+data);
}
//獲取節點數據
System.out.println(".................."+new String(zk.getData("/zoo", false, null)));
//驗證zookeeper監聽:1.使線程一直啓動
//Thread.sleep(Long.MAX_VALUE);
}
//刪除子節點
public void remove(ZooKeeper zk) throws Exception {
//參數2指定要刪除的版本,-1表示刪除所有版本
zk.delete("/test",-1);
}
//關閉zookeeper
public void close(ZooKeeper zk) throws Exception {
zk.close();
}
}