Zookeeper 笔记问答

来源:互联网 发布:js replaceall 转译 编辑:程序博客网 时间:2024/06/15 01:07

问题: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

0 0