问题:zookeeper 作用?
答:最重要的是保证分布式的数据的一致性
解决了单点故障
问题:zookeeper写的过程?
把任务tesk 通过 提交给client,client把tesk提交给连接的server,server在提交给leaderserver。。把任务提交给队列。然后
进行投票 过半则进行任务。也就是过半写成功策越
问题:为什么一般zookeeper集群数量为奇数?
答:zookeeper最重要的是保证数据的一致性,zookeeper的选举机制:是一半机器选举结果,也就是说3台最多挂一台,4台也最多
能过一台,3台和4台的效果是一样的。当然4台也可以。
问题:zookeeper的数据保存问题
答:zookeeper的数据是保存到内存里面的(为了速度快),同时还把数据落地到磁盘
问题:目前最稳定的zookeeper版本
答:目前最高的最稳定的中是zookeeper-3.4.6
问题:临时节点
答:哪台客户端,client 连接到server端,连接的时候生成,断开的时候删除
问题:zookeeper中途怎么加入新节点
答:不需要全部都停。一台一台加入配置,每台每台重启zookeeper
问题:zookeeper分布式锁原理
答:监控比自己小的节点,比如前面的节点任务完成,断开连接,触发watcher,释放锁。那么则监控该节点的将得到锁。一直循环。
问题:zoo.cfg 配置文件
tickTime:CS通信心跳数
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataLogDir:日志文件目录(数据落地的目录)
Zookeeper保存日志文件的目录。
clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。
服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下
其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新
leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一
样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能时A端口和B端口不一样。
下面是一个集群的例子:
server.0=233.34.9.144:2008:6008
server.1=233.34.9.145:2008:6008
server.2=233.34.9.146:2008:6008
下面是一个伪集群的例子:
server.0=127.0.0.1:2008:6008
server.1=127.0.0.1:2007:6007
server.2=127.0.0.1:2006:6006
问题:bin/zkCli.sh 客户端问题
答:后面不接ip 默认本地的server ,ls / 根节点
get /config/* 获取数据
数据下面的属性解析:
czxid: 创建的版本的id
ctime: 创建的 时间
mZxid: 最新修改的版本id
mtime: 最新修改时间
pZxid: 父节点的版本id