本文共 2956 字,大约阅读时间需要 9 分钟。
zookeeper=类似unix文件系统+通知机制+Znode节点
作用:服务注册+分布式系统的一致性通知协调 一句话:ZooKeeper是一个分布式协调技术、高性能的,开源的分布式系统的协调(Coordination)服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用程序一致性和分布式协调技术服务的软件。 什么鬼看不懂!那大白话:美女班主任+微信群在Dubbo实现中:
1.服务提供者在启动的时候,向ZK上的指定节点 /dubbo/ $ {serviceName}/providers目录下写入自己的URL地址, 这个操作就完成了服务的发布。 2.服务消费者启动的时候,订阅/dubbo/$ {serviceName}/providers目录下的提供者URL地址,并向/dubbo/$ {serviceName} /consumers目录下写入自己的URL地址。3.注意,所有向ZK上注册的地址都是临时节点,这样就能够保证服务提供者和消费者能够自动感应资源的变化。
另外,Dubbo还有针对服务粒度的监控,方法是订阅/dubbo/$ {serviceName}目录下所有提供者和消费者的信息
启动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 2181CentOS7下面nc命令的安装
1 路径 /run/media/root/CentOS 7 x86_64/Packages 2 命令 rpm -ivh nmap-ncat-6.40-7.el7.x86_64echo ruok | nc 192.168.203.1 2181
连接:./zkCli.sh
zookeeper内部维护了一套类似UNIX的树形数据结构:由znode构成的集合,
znode的集合又是一个树形结构, 每一个znode又有很多属性进行描述。 Znode = path + data + Stat
一句话:和redis的KV键值对类似,只不过key变成了一个路径节点值,v就是data
K-V==>crud等 (rmr)递归删 path Create节点 set设置 1M字符串 echo 四字命令 | nc 主机IP zookeeper端口 echo stat | nc 192.168.203.1 2181zookeeper支持某些特定的四字命令,他们大多是用来查询ZK服务的当前状态及相关信息的,通过telnet或nc向zookeeper提交相应命令,如:echo ruok | nc 127.0.0.1 2181
客户端注册监听它关心的目录节点,
当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时, zookeeper会通知客户端。ZooKeeper 支持watch(观察)的概念。客户端可以在每个znode结点上设置一个观察。如果被观察服务端的znode结点有变更,那么watch就会被触发,这个watch所属的客户端将接收到一个通知包被告知结点已经发生变化,把相应的事件通知给设置过Watcher的Client端。
一句话:异步回调的触发机制Zookeeper里的所有读取操作:getData(),getChildren()和exists()都有设置watch的选项
1.一次触发
2.发往客户端 3.为数据设置watch 4.时序性和一致性.close()