zookeeper入门-安装启动常用操作及案例
yuyutoo 2024-10-16 15:46 12 浏览 0 评论
简介
最近做的项目用的是zookeeper+kafka,大致学习了下zookeeper。像Spring有IOC和AOP一样,zookeeper的核心主要是文件结构和监听机制
安装
Zookeeper 的安装还是比较简单的,注意安装目录不要有中文和空格即可,本文用的版本是3.4.6
启动
Windows系统双击zkServer.cmd启动
启动闪退的话,右键编辑zkServer.cmd,在末尾加上pause
保存后继续双击运行,一般会有报错产生,没有报错说明正常启动
提示找不到配置文件,需要在config中修改配置文件
将zoo_sample.cfg文件复制一份重命名为zoo.cfg,右键编辑
这样双击zkServer.cmd就可以正常启动了
常用操作
双击zkCli.cmd启动客户端
1.ls 查看指定路径下的节点
2.create:创建一个节点
创建内容为test的/newnode节点
3.get:显示指定路径下节点的信息
4.set:设置节点的内容
可以和get的节点对比看下
5.delete:删除一个节点
java案例
熟悉了zookeeper的常用操作后,我们基于zookeeper的文件结构和监听机制来用java模拟下服务节点的动态上下线。熟悉SpringCloud的小伙伴可能清楚,我们微服务架构下的EurekaService会在单独服务启动成功后,自动在注册中心显示,服务下线后会自动在注册中心下线,下面代码就是模拟了这种服务的发现与注销
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<type>pom</type>
</dependency>
服务端
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import java.util.ArrayList;
import java.util.List;
public class ZookeeperServer {
static ZooKeeper zooKeeper;
public static void main(String[] args) {
try {
String connectString = "localhost:2181";
int sessionTimeout = 5000;
zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
public void process(WatchedEvent watchedEvent) {
String path = "/servers";
try {
List<String> childrens = zooKeeper.getChildren(path, true);
List<String> hosts = new ArrayList<String>();
for (String child : childrens) {
byte[] dataByte = zooKeeper.getData(path+"/"+child, false, null);
hosts.add(new String(dataByte));
}
System.out.println("启动服务:"+hosts);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
public class ZookeeperClient {
static ZooKeeper zooKeeper;
public static void main(String[] args) {
try {
String connectString = "localhost:2181";
int sessionTimeout = 5000;
zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
public void process(WatchedEvent watchedEvent) {
// 启动userService服务
String serviceName = "userService";
// 设置服务目录
String path = "/servers/node";
try {
zooKeeper.create(path, serviceName.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
先通过zkCli.cmd创建servers节点
create /servers ""
启动ZookeeperServer监听服务,然后启动ZookeeperClient的用户服务,还可以通过zkCli.cmd创建其他节点,打印日志如下
其他
好了今天的zookeeper入门就到这里了,大家有什么问题和建议可以一起沟通下
相关推荐
- pdf,word,ppt,rar,mp4等等文档在线预览
-
背景:移动端的智能化已经被大多数人接受了,但是有时一些文件格式要在移动端打开,需要安装特定的软件才行,这个就是很多人不喜欢的,要看个文档还要下载安装一个app,实在麻烦,那能不能直接在线就预览文件呢具...
- Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像
-
一、前言用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw...
- 全能下载神器文件蜈蚣体验(全能文件王)
-
文件蜈蚣是一款开源免费的软件,在GitHub上公布了所有源代码,自身非常绿色环保,没有流氓后台也没广告,和莫名弹窗的同行相比,可算得上是一股清流。文件蜈蚣的使用很简单,解压后运行一次其中的exe,完成...
- 支持HLS和mp4在线播放的源码(hls支持的视频编码格式)
-
今天安利的一套在线视频播放源码,它不是安卓端,也不是PC端。你只需要部署一下这个单页面源码即可。使用php+mysql+nginx即可。任何版本都能运行。HLSDOWNLOAD网页打开服务器地址:1...
- 大模型微调知识与实践分享(模具微调结构)
-
一、微调相关知识介绍...
- IOS遇到的几个H5坑、h5键盘弹起遮挡输入框的处理
-
一、IOS遇到的几个H5坑1、ios端兼容input光标高度 问题描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样。例如下图,左...
- 实用技巧:如何在win10中安装没有管理员权限的软件
-
通常,我们可能会遇到需要在Windows10电脑上安装软件,但在该电脑上没有管理员权限的情况,由于不是管理员,所以无权在在电脑上安装软件,这让人非常苦恼。事实上,这是微软专门设计的一个安全功能,它的...
- 基于ENVI的Landsat 7遥感影像处理与多种大气校正方法对比
-
1数据导入与辐射定标关于数据的下载,网络中相关资源很多,这里不再赘述。...
- 在 Python 中为无服务器应用设计安全租户隔离
-
软件即服务(SaaS)已经成为当今一种非常普遍的软件交付方式。虽然这方便了用户访问,而且消除了用户的运营开销,但这也改变了以前的模式,将实现SLA以及现代云原生组织所期望的所有安全和数据隐私要求的...
- 基于JFinal的后台业务框架通用模块
-
jcbase是基于JFinal2.x的后台业务框架通用模块,包括系统权限模块、APP版本管理、日志管理、数据字典等使用的技术要点后端使用JFinal2.x前端页面是基于acev1.3模板改造的,更方便...
- PHOTOSHOP图层技巧(掌握photoshop合并图层技巧)
-
你会图层吗?不会?喔,那你肯定不会PHOTOSHOP。为什么那么说呢?因为图层可以说是PHOTOSHOP的核心,几乎PHOTOSHOP所有的应用都是基于图层的,很多强劲的图像处理功能也是图层所提供的,...
- Cadence Allegro背钻设置详细介绍教程
-
CadenceAllegro背钻设置详细介绍教程...
- Pt中间层显著降低PEM水电解电子传输阻抗
-
在质子交换膜水电解(PEMWE)中,阳极OER的Ir基催化剂成本高昂,成为制约产业化的重要瓶颈。虽然非晶态IrOx具有高OER活性,但其电导率较差、与多孔钛PTL之间接触不良,往往导致催化剂层利用率低...
- GIMP 教程:制作 Duotone 双色调效果
-
今天我们学习如何使用GIMP这款强大的开源图像编辑器,制作流行的Duotone(双色调)效果。Duotone效果的核心原理,是将图像的色调信息映射到两种主要颜色上。通常,一种颜色用于图像的亮部...
- CAD打印的时候线条没了?原来是这些设置出了错
-
每当我们辛辛苦苦绘制完一张图纸之后,打印出图的时候总会出现各种各样的问题,不知道大家有没有遇到这种情况:在预览的时候还一切正常,但是打印出来之后就会发现很多线条都会不见了或者部分缺失。那么到底是怎么一...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)