网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 |
---|
如果右边没有就找找左边 |
- 分布式管理软件,常用它作为注册中心(依赖zookeeper的发布/订阅功能)、配置文件中心、分布式锁配置、集群管理等。
- zookeeper一共就有两个版本。主要使用的是java语言编写
一、安装下载运行Zookeeper
学习Zookeeper之前,需要你拥有一个Linux虚拟机,或Linux云服务器,并安装java的JDK环境 |
---|
https://blog.csdn.net/grd_java/article/details/115693312
- 上面这篇博客从无到有,搭建了大数据的开发环境,
你只需要参考这篇文章里面的安装虚拟机,安装系统,安装JDK,远程工具的使用即可 ,无需克隆虚拟机,也无需搭建集群
- 百度Zookeeper官网,进入后点击下载
  - 选择版本下载
  - 将其传输到虚拟机安装
 
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /opt/module/
创建数据目录(Zookeeper硬性要求,需要有这样一个目录) |
---|
- 进入我们刚解压后的zookeeper文件夹

- 我们需要名为zoo.cfg的配置文件,但是zookeeper提供的是名字为zoo_sample.cfg的,所以我们需要复制一份改名

cp zoo_sample.cfg zoo.cfg
- 修改配置文件
  
- 进入bin目录
 - 运行

./zkServer.sh start
- 查看运行状态

./zkServer.sh status
二、Zookeeper客户端操作命令
- 运行命令,进入客户端模式
 
./zkCli.sh
- 常用命令
-
ls
ls [参数] /path :显示指定路径信息,可指定参数
参数-s: 罗列出详细信息参数-R: 当前目录和子目录中内容都罗列出来  -
create
create /path [data] :创建,[data]表示包含内容,
举例:create /demo: 创建/demo目录  -
get
get [-s] /path :查看指定路径下内容参数-s: 列出详细参数   -
set
set /path data :想指定路径下设置内容,就是放数据到指定目录,想象目录是数据库表,内容是数据  -
delete
delete /path :删除节点 
三、java代码内容发布到zookeeper服务器

- 创建maven项目引入依赖,创建发送内容类
 
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.9</version>
</dependency>
- 编写代码,查看运行效果
  
import org.apache.zookeeper.*;
import java.io.IOException;
public class SendContext {
public static void main(String[] args) {
try {
ZooKeeper zooKeeper = new ZooKeeper("192.168.10.105:2181", 100000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println("获取连接");
}
});
String s = zooKeeper.create("/demo/rmi-address", "lakdsjflkasjfklads".getBytes(),
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (KeeperException e) {
e.printStackTrace();
}
}
}
四、java代码消息订阅,获取服务器内容
- 创建类编写代码,查看运行效果

import org.apache.zookeeper.*;
import java.io.IOException;
import java.util.List;
public class ReciveContext {
public static void main(String[] args) {
try {
ZooKeeper zooKeeper = new ZooKeeper("192.168.10.105:2181", 100000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println("获取连接");
}
});
List<String> children = zooKeeper.getChildren("/demo", false);
System.out.println("/demo路径下有:"+children);
for (String child:children){
byte[] data = zooKeeper.getData("/demo/" + child, false, null);
System.out.println(child+"节点内容为:"+new String(data));
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (KeeperException e) {
e.printStackTrace();
}
}
}
|