zookeeper

1.zookeeper简介

定义:分布式服务框架,是Apache Hadoop的子项目,主要用来解决到分布式应用中常遇到的一些数据管理问题,如果:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说就是文件系统+监听通知机制。

文件系统:zookeeper是维护一个类似文件系统的数据结构,每个子目录都被称为znode(目录节点),和文件系统一样,可随意增加、删除znode,在一个znode下新建、删除znode,唯一不同在于znode是可以存储数据的。有四种类型的znode:

PERSISTENT-持久化目录节点,客户端与zookeeper断开连接后,节点依然存在

PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点,客户端与zookeeper断开连接后,节点依然存在,只是 Zookeeper 给该节点名称进行顺序编号

EPHEMERAL-临时目录节点,客户端与zookeeper断开连接后,删除节点

EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点,客户端与zookeeper断开连接后,删除节点,只是 Zookeeper给该节点名称进行顺序编号

监听通知机制:客户端注册监听它关心的目录节点,当目录发生变化时(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端

可做:实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能。以分布式应用配置管理为例来说明zookeeper可做的事情。

例如:应用部署在多台服务器上,如果改变应用配置文件,需要逐一修改,很繁琐,但是如果配置文件在zookeeper上的某个目录节点中,然后所有相关应用对这个目录节点进行解析,一旦配置信息发生变化,多个服务器就会收到zookeeper的通知,然后从zookeeper获取最新的的应用配置到系统中

2.zookeeper单机模式安装

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

cd /usr/local

wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz

tar -zxvf zookeeper-3.4.12.tar.gz

cd zookeeper-3.4.12

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo.cfg

step4:启动zookeeper # bin/zkServer.sh start

step5:检测是否启动成功,用zookeeper客户端连接服务器 # bin/zkCli.sh

3.zookeeper使用

使用zookeeper客户端操作

ls #ls命令查看zk中所有内容

create /zkPro myData #创建名称为zkPro的znode节点,并包含字符串为myData的内容

get /zkPro #获取名称为zkPro的znode节点包含的字符串内容

set /zkPro myData_update #通过set命令对zk关联的字符串进行设置

delete /zkPro #删除znode

使用java api操作

引入org.apache.zookeeper依赖包

create /username qingfeng #zk中增加目录节点,并将配置信息保存在其中

启动两个zookeeper客户端程序可读取到zk中username目录节点的数据,并且zk中username目录节点中的数据更新后,后台程序也及时收到了监听目录变更后的值

4.zookeeper集群模式安装

本地搭建伪集群,一台服务器启动三个zk实例组成集群,真正的集群无非是实例IP地址不同,搭建方法没有区别。

step1:配置java环境,执行java -version检验环境

step2:下载并解压zookeeper

step3:重命名配置文件 # cp conf/zoo_sample.cfg conf/zoo-1.cfg

step4:修改配置文件zoo-1.cfg,原配置文件里有的,修改成下面的值,没有的则加上

vim conf/zoo-1.cfg

dataDir=/tmp/zookeeper-1

clientPort=2181

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

step5:从zoo-1.cfg复制两个配置文件zoo-2.cfg和zoo-3.cfg,只需修改dataDir和clientPort即可

cp conf/zoo-1.cfg conf/zoo-2.cfg

cp conf/zoo-1.cfg conf/zoo-3.cfg

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-2

clientPort=2182

vim conf/zoo-2.cfg

dataDir=/tmp/zookeeper-3

clientPort=2183

step6:标识serverId,创建三个文件夹/tmp/zookeeper-1,/tmp/zookeeper-2,/tmp/zookeeper-2,在每个目录中创建文件myid 文件,写入当前实例的server id,即1.2.3

cd /tmp/zookeeper-1

vim myid

1

cd /tmp/zookeeper-2

vim myid

2

cd /tmp/zookeeper-3

vim myid

3

step7:启动三个zk实例

bin/zkServer.sh start conf/zoo-1.cfg

bin/zkServer.sh start conf/zoo-2.cfg

bin/zkServer.sh start conf/zoo-3.cfg

step8:检测集群状态,也可以直接用命令"zkCli.sh -server IP:PORT"连接zookeeper服务端检测 或 bin/zkServer.sh status conf/zoo-1.cfg

相关推荐
Paraverse_徐志斌12 小时前
基于 Zookeeper 部署 Kafka 集群
ubuntu·zookeeper·kafka·消息队列
好吃的肘子16 小时前
Zookeeper 入门(二)
linux·分布式·zookeeper
onkel in blog19 小时前
【Docker】Docker Compose方式搭建分布式协调服务(Zookeeper)集群
分布式·docker·zookeeper
dddaidai1233 天前
分布式ID和分布式锁
redis·分布式·mysql·zookeeper·etcd
code在飞7 天前
windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
windows·分布式·zookeeper·kafka
不会飞的鲨鱼7 天前
Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)
windows·zookeeper·kafka
搞不懂语言的程序员8 天前
Kafka Controller的作用是什么?故障时如何恢复? (管理分区和副本状态;通过ZooKeeper选举新Controller)
分布式·zookeeper·kafka
giser@20118 天前
Zookeeper单机版安装部署
分布式·zookeeper·安装教程·单机部署
giser@20119 天前
ZooKeeper工作机制与应用场景
分布式·zookeeper·云原生
搞不懂语言的程序员10 天前
Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)
分布式·zookeeper·kafka