一、配置和安装
(1)下载zookeeper-3.4.6.tar.gz
解压 tar xf zookeeper-3.4.6.tar.gz
一般放在opt目录下
mkdir/opt/ly
mv zookeeper-3.4.6 /opt/ly
(2) yum安装的jdk是开源的openJDK, 最好用oracle的hotspot JVM 需要到官网下载
(3) zookeeper的文件目录配置目录conf中,zoo_sample.cfg 是配置模板,拷贝一下:
cp zoo_sample.cfg zoo.cfg zookeeper启动默认加载的配置文件的名字是zoo.cfg
配置好后,将文件夹分发到其他从服务器
(4)vi zoo.cfg
tickTime=2000 维持主从服务器之间的心跳时间2S
initLimit=10 初始化的次数10次,leader等待follower2000*10 = 20S的一个初始延迟,超过以后不要此follower
syncLimit=5 5*2000=10S ,leader向flower发送信息,10没有反馈,则被放弃
dataDir=/tem/zookeeper 持久化目录,改为/var/ly/zk /var目录是存放临时数据的
clientPort=2181 客户端链接时使用的端口号
maxClientCnxns=60 允许客户端最大的链接数
配置所有zookeeper:server.1=node01:2888:3888 (node01是ip)
server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
第一次启动 ,一般会推选id号最大的为leader,断电后再次启动,会比较谁的数据最完整,若都完整,则再比id号
(5)选择leader 还是其他,都是过半通过(n/2+1)。
(6) 创建持久化的目录:mkdir -p /var/ly/zk
在此目录下创建文件myid -- 写入1(配置文件中的id号,即server.id号)
(7) 配置好以后,将zookeeper文件夹,分发到各个服务器:
scp -r ./ly/ node02:'pwd' 将ly真个文件夹,分发到node02的相同目录下
mkdir -p /var/ly/zk
echo 2 > /var/ly/zk/myid
(8)将可执行目录放到环境变量path中,其命令就可以在任何地址使用
vi /etc/profile
export ZOOKEEPER_HOME=/opt/ly/zookeeper-3.4.6
export PATH=SPATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
将配置文件加载到内存: . /etc/profile 或者 source /etc/profile
zk+table键,即可出现可使用的命令
分发配置文件: scp /etc/profile node01:/etc
二、zookeeper使用
(1)启动: zkServer.sh help ---查看一些命令
zkServer.sh start --后台启动
zkServer.sh start-foreground --前台启动,实时打印日志
(2) zkserver.sh status -- 查看状态、身份leader or follower
(3) 启动第三台后,就可以使用过半通过策略,选出第三台是 leader,然后启动第四台,日志中:Getting a smapshot from leader -- 复制快照
(4) 链接zookeeper命令行的客户端: zkCli.sh
命令:help -- 查看所有命令
ls / ----- 查看根目录节点
create /ooxx "" -- 创建ooxx 后面“”是数据,没有则使用空“”
create /ooxx/xxoo ""
ls /ooxx
get /ooxx ---- 查看ooxx节点的数据
set /ooxx "hello" --设置数据,只能放1M数据,是二进制安全的(外面推送什么样的字节数组,就存什么样的,必须给字节数组)
get /ooxx :

cZxid: c是创建create,Zxid是顺序执行的id,0x2是前32位(二进制位),2表示现在是变换的第几个leader,000000002是增删改事务操作的递增id,保证leader顺序执行命令
ctime: 修改操作的时间
mZxid: 修改事务id -- (set /ooxx "hello")
pZxid: get的节点中,创建最后一个节点的id
ephemeralOwner: 临时持有者,0x0 表示现在的节点,没有归属者,是持久节点
一个客户端链接zkCli.sh ,会创建一个session
create -e /xoxo "adalff" ----- /e是临时节点,是当前客户端存在的情况下,此节点会同步到其他服务器,如果此客户端停止,则此节点消失伴随会话期。
ephemeralOwner 会显示sessionID
(5) 链接一个客户端,会有一个事务,将此客户端的sessionID同步到其他服务器中,zxid会增加1,断开客户端链接,会同步其他客户端删除此sessionID。
很多客户端都想在同一节点创建数据,-s是序列化,不会覆盖创建
create -s /abc/xxx 'sdfsd' ---自动生成xxx000000000
第二个客户端同样创建xxx: create -s /abc/xxx 'afdafa' ----生成文件xxx000000001
删除 rmr /abc/xxx/xxx000000001
重新create,名字中的id会从02开始
create -s -e /xxx --- 可以同时设置序列化、临时节点
(6) netstat -natp | egrep '(2888|3888)' ---- egrep指后面写正则表达式,查询关于2888和3888相关的链接
3888:选主投票用的,节点直接可以相互通信

2888:leader接受write请求,只能follower和leader之间通信。
三、zookeeper特性
(1) 扩展性
角色:leader、follower([ˈfɒləʊə(r)]追随者)、observer( [əbˈzɜːvə(r)] 观察者)
读写分离:leader写,follower和observer读
leader挂了以后,只有follower可以选举投票,因为follower的数量决定选 举的时间快慢,所以在庞大的集群里面,30台的话,个位数的为follower即 可,5台也可以,observer是放大查询能力;
配置文件中: server.1=node01.2888:3888
server.1=node01.2888:3888
server.1=node01.2888:3888
server.1=node01.2888:3888:observer
(2)可靠性:攘其外必先安其内 ---- 快速恢复、数据的可靠、可用、一致性
搜寻:paxos site:douban.com [ˈpæksoʊs] -- 文章
paxos 是一个基于消息传递的一致性算法
leader挂了以后,选举过程中,不对外提供读操作。(即只要有一个server不和leader的2888连接,所有server都不提供服务)
(3) ZAB 原子广播协议 (paxos的简化)

每个follower和leader连接都会各自有一个发送信息的队列,client提出create请求,follower将请求提交给leader,leader发起让每个follower将创建这个事情,写入日志,follower回送一个ok的消息,leader也是一个ok,一个leader和一个follower 是2个 ,已经过半,则leader向每个follower发送write 信息更改内存数据信息,follower会返回一个ok,最终一致。最后leader 返回给follower,再返回给client-ok。
如果右边follower 还没有执行write命令,与leader不同,则client调用时,可以先调用sync同步的方法,再回调client的方法, sync同步方法是自己选择调用或者不调用。
若follower挂掉以后,再启动会连接leader,同步数据,同步完成后再开始接收服务。
任何操作,没有完成leader就挂了,就会回滚。
如果有5台,最多挂2台,选举过半原则,需要3台同意才可,如果挂了3台,则zookeeper会处于不可用的状态。
(4) jps命令:查看当前所有java进程的pid。
当server挂的数量超过半数,则所有不可对外提供服务,但是正常的serve进程还在。
如果有4台zk,leader-node04挂了,node03先察觉到,node03向1和2发送消息,并推选自己为leader,node02的zid比3高,则node02否定3,并推送消息给1和3,选择自己为leader,1收到2的消息,id是2比自己大,表示同意,并向2和3推送消息-同意推选2,3收到2的消息则也表示同意,向1和2推送消息选2,则2是3票,1、2、3都是2是3票,2为leader,并向大家同步数据。
(5)watch 监控

集群与客户端用的版本号要一样
四、分布式锁
(1) 多个客户端访问同一资源,需要上锁,锁放到zookeeper中,
1. 争抢锁,只有一个人能获得锁
2. 获得锁的人出问题,挂掉会变成死锁,所以整成临时节点(session)
3. 获得锁的人成功了,释放锁
4. 锁被释放,删除,别人如何知道:
4-1 主动轮询,心跳。 弊端:延迟,客户端多的话zookeeper压力大
4-2 watch 解决延迟问题,弊端:压力
4-3 sequence + watch :watch前一个节点,最小的获得锁,最小的释放以后,只会通知下一个。
文章目录华为OD面试流程1.mysql数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?2.谈谈springIOC的理解,有什么好处,解决了什么问题3.谈谈springAOP的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?4.Erika和zookeeper有了解过吗,作用是什么,主要解决了什么问题5.谈谈JDK、JRE、JVM的理解,区别是什么6.谈谈对泛型的理解7.JVM的组成华为OD面试流程机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。性格测试:机试技术一面(本专栏核心)技术二面(本专栏核心)主管面试定级定薪发of
1.Zookeeper Zookeeper是 ApacheHadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高。 Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。 2.Nacos Nacos是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos是Dub
Zookeeper一、zookeeper简述大型分布式计算开源的分布式配置服务,同步服务和命令注册。架构通过冗余实现高可用。目标:将那些负载且容易出错的分布式一致性服务封装其拉力,构成一个高效可靠的原语集,以一系列简单易用的接口提供给用户使用。一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命令服务、分布式协调/通知,集群管理、master选举、分布式锁和分布式队列等。1.1zookeeper数据结构它提供的名称空间类似标准文件系统,k-v的形式存储。名称key由斜线/分割的一系列路径元素,zookeeper名称空间中的每个节点都是由一个路径标识
我有一个关于zookeeper的问题,我正在尝试使用go-zookeeper实现简单的服务发现,我正在使用go-zookeeper:https://github.com/samuel/go-zookeeper我的问题是每当我使用例如连接到zookeeper时:zoo_keeper,_,err:=zk.Connect(s,time.Second)函数立即返回,没有报错,但还没有真正有效的连接。现在,例如,如果我想创建znode,我需要检查什么以确保在这样做之前我有一个有效的连接? 最佳答案 在尝试了几件事之后,感谢Imesha的建议,
zookeeper单节点部署及注意事项kafka戳这里:kafka单节点部署,手把手从零到一事前准备:1、一台Linux服务器或者是一台虚拟机2、准备好JDK环境3、安装好wget(当然也可以不用这个,只是用于下载安装包的一个工具,所以能下载好包就是没问题的)4、需要了解vim的一些基础操作,不懂得可自行百度1、Zookeeper的单节点部署1.1、下载这里用的zookeeper版本为3.6.4运行命令:wgethttps://dlcdn.apache.org/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz运行命令,进行压
我正在使用从Confluent(http://www.confluent.io/product/kafka-streams/)下载的kafka流。我按照说明在Windows上运行Zookeeper和Kafka。但是当我尝试使用命令启动ZooKeeper时D:\Softwares\confluent-3.0.1\bin\windows>zookeeper-server-start.bat./etc/kafka/zookeeper.properties,我得到错误D:\Softwares\confluent-3.0.1\bin\windows../../etc/kafka/log4j.pr
文章目录企业日志中心——ELFK+kafka+zookeeper部署一、组件介绍1.Elasticsearch2.Logstash3.Kibana4.Kafka5.Filebeat二、环境介绍三、搭建架构四、搭建ELFK+Kafka+Zookeeper1.准备阶段2.安装zookeeper3.安装KafkaKafka命令行操作(单节点)3.1.创建topic3.2.查看当前topic列表3.3.查看topic详细信息3.4.发布消息3.5.消费消息3.6.扩大分区3.7.删除主题3.8.kafka-topics.sh脚本中的参数4.安装Elasticsearch5.安装Logstash测试Lo
🙆♂️🙆♂️写在前面🏠个人主页:csdn春和📚推荐专栏:更多专栏尽在主页! Scala专栏(spark必学语言已完结) JavaWeb专栏(从入门到实战超详细!!!) SSM专栏(更新中…)📖本期文章:大数据技术之——zookeeper的安装部署如果对您有帮助还请三连支持,定会一一回访!🙋🏻♂️📌本文目录大数据技术之——Zookeeper的安装一、本地模式安装部署1.1、安装前准备1.2、修改配置1.3、操作zookeeper1.4、配置参数解读二、zookeeper集群安装1、集群规划2、解压安装3、将zookeeper·分发到其他两台机器上4、配置zoo.cfg文件5、同步z
windows下zookeeper安装和启动zookeeper是开放源码的分布式应用程序协调服务,可以作为dubbo等服务的注册中心,也可以在分布式系统中实现分布式锁。ZooKeeper的基本运转流程:1、选举Leader。(选举leader可以参考https://blog.csdn.net/gaoshan12345678910/article/details/67638657)2、同步数据。3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。4、Leader要具有最高的执行ID,类似root权限。5、集群中大多数的机器得到响应并接受选出的Leader。zookeeper的四种状
提示:宝塔面板安装docker/docker-compose,一条命令搞定rabbitmq的安装与配置文章目录前言一、docker-compose.yml配置二、安全组规则添加端口三、通过浏览器访问rabbitmq的管控页面四、提供其他项目依赖总结前言已经安装好了宝塔面板、并且可以在Docker栏目,选择docker安装,会把docker和docker-compose都安装好了一、docker-compose.yml配置在任意一个目录下创建并编辑vimdocker-compose.yml配置粘贴version:'3.8'services:rabbitmq:image:rabbitmq:3.7.