Zookeeper

入门简介

是什么

zookeeper=类似unix文件系统+通知机制+Znode节点
作用:服务注册+分布式系统的一致性通知协调
一句话:ZooKeeper是一个分布式协调技术、高性能的,开源的分布式系统的协调(Coordination)服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用程序一致性和分布式协调技术服务的软件。
什么鬼看不懂!那大白话:美女班主任+微信群

去哪下

下载传送门

怎么玩

  • 统一命名服务(Name Service如Dubbo服务注册中心)

在Dubbo实现中:
1.服务提供者在启动的时候,向ZK上的指定节点
/dubbo/ $ {serviceName}/providers目录下写入自己的URL地址,
这个操作就完成了服务的发布。
2.服务消费者启动的时候,订阅/dubbo/$ {serviceName}/providers目录下的提供者URL地址,并向/dubbo/$ {serviceName} /consumers目录下写入自己的URL地址。

3.注意,所有向ZK上注册的地址都是临时节点,这样就能够保证服务提供者和消费者能够自动感应资源的变化。
另外,Dubbo还有针对服务粒度的监控,方法是订阅/dubbo/$ {serviceName}目录下所有提供者和消费者的信息

  • 配置管理(Configuration Management如淘宝开源配置管理框架Diamond)
  • Java操作API

安装配置

Linux下安装

npm源码包安装

在这里插入图片描述

docker安装

启动docker: systemctl start docker
搜索: docker search zookeeper
下载: docker pull zookeeper
运行: docker run --privileged=true -d --name zookeeper --publish 2181:2181  -d zookeeper:latest
查看容器中是否运行:docker ps
#使用命令查看拉取到的镜像
docker images

3.启动Zookeeper

https://www.cnblogs.com/caoweixiong/p/12325410.html
# 下面开始建立自己要挂载的目录文件夹
# 本人喜欢把自己安装的东西放在opt 目录下面
#创建宿主机挂载目录
mkdir -p /opt/zookeeper/conf
mkdir -p /opt/zookeeper/data
mkdir -p /opt/zookeeper/log

docker run -d --name zk --restart always zookeeper
   #94e5efbe439e111cc368e16c75a58451aecf47dcd99299c269eacdf3de216619
#把容器中的配置文件复制出来
docker cp -a zk:/conf/zoo.cfg /opt/zookeeper/conf/zoo.cfg

docker stop zk
docker rm zk
docker run -d --name zk --restart always \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
-v /opt/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v /opt/zookeeper/data:/data \
-v /opt/zookeeper/log:/datalog \
zookeeper

docker run -d --name zk --restart always -p 2181:2181 -p 2888:2888 -p 3888:3888 -v /opt/zookeeper/conf/zoo.cfg:/conf/zoo.cfg -v /opt/zookeeper/data:/data -v /opt/zookeeper/log:/datalog zookeeper
完成,三个端口分别是:zookeeper客户端端口,跟随端口,选择端口


是否启动
ps-ef|grep zookeeper
端口号:netstat -anp|grep 2181

开启服务+客户端连接

启动+关闭服务

CentOS7下面nc命令的安装
1 路径 /run/media/root/CentOS 7 x86_64/Packages
2 命令 rpm -ivh nmap-ncat-6.40-7.el7.x86_64
在这里插入图片描述
echo ruok | nc 192.168.203.1 2181

客户端连接

连接:./zkCli.sh
退出:quit

数据模型/znode节点深入[葡萄]

zookeeper内部维护了一套类似UNIX的树形数据结构:由znode构成的集合,

znode的集合又是一个树形结构,
每一个znode又有很多属性进行描述。 Znode = path + data + Stat

在这里插入图片描述

基础命令和Java客户端操作

zkCli的常用命令操作

一句话:和redis的KV键值对类似,只不过key变成了一个路径节点值,v就是data
K-V==>crud等 (rmr)递归删
path Create节点 set设置 1M字符串
echo 四字命令 | nc 主机IP zookeeper端口
echo stat | nc 192.168.203.1 2181
在这里插入图片描述

zookeeper支持某些特定的四字命令,他们大多是用来查询ZK服务的当前状态及相关信息的,通过telnet或nc向zookeeper提交相应命令,如:echo ruok | nc 127.0.0.1 2181

四字命令

在这里插入图片描述
Java客户端操作
在这里插入图片描述
linux 😒
win:cli
HelloZK:方法参数ctrl+T /ctrl+q
接口可以new:匿名内部类

通知机制watch

通知机制-读

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

是什么

ZooKeeper 支持watch(观察)的概念。客户端可以在每个znode结点上设置一个观察。如果被观察服务端的znode结点有变更,那么watch就会被触发,这个watch所属的客户端将接收到一个通知包被告知结点已经发生变化,把相应的事件通知给设置过Watcher的Client端。
一句话:异步回调的触发机制

Zookeeper里的所有读取操作:getData(),getChildren()和exists()都有设置watch的选项

watch事件理解

1.一次触发
2.发往客户端
3.为数据设置watch
4.时序性和一致性

code

  • 一次性

.close()

  • 多次(命名服务)
    不能关ZK ==thread.sleep(long.max)
    多次通知 new value+old value
    新建watch new value

Zookeeper集群

Zookeeper原理zab

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值