博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper
阅读量:2390 次
发布时间:2019-05-10

本文共 2956 字,大约阅读时间需要 9 分钟。

文章目录

入门简介

是什么

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/confmkdir -p /opt/zookeeper/datamkdir -p /opt/zookeeper/logdocker run -d --name zk --restart always zookeeper   #94e5efbe439e111cc368e16c75a58451aecf47dcd99299c269eacdf3de216619#把容器中的配置文件复制出来docker cp -a zk:/conf/zoo.cfg /opt/zookeeper/conf/zoo.cfgdocker stop zkdocker rm zkdocker 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 \zookeeperdocker 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

你可能感兴趣的文章
PHP开发安全设置
查看>>
Php Endangers - Remote Code Execution
查看>>
变量的变量,PHP和你
查看>>
PROC系列之四---/proc/loadavg
查看>>
某大型网站的内核TCP/ip优化脚本
查看>>
Defeating SSL using SSLStrip (Marlinspike Blackhat)
查看>>
大型网站数据库架构
查看>>
rdp 安全策略
查看>>
Threat Intelligence Quotient Test
查看>>
Cisco路由器上防止DDOS的一些建议
查看>>
系统安全防护之UNIX下入侵检测方法
查看>>
域控渗透技巧
查看>>
Minion security project and 分布式nmap
查看>>
防火墙相关
查看>>
网络性能测试工具Iperf上手指南
查看>>
opensecuritytraining video
查看>>
collective intelligence framework
查看>>
2015年关注的技术书籍
查看>>
windows 2003 server 记录远程桌面的连接登录日志和修改3389连接端口方法
查看>>
samhain:比较变态的入侵检测系统
查看>>