了解zookeeper
Posted xanlv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解zookeeper相关的知识,希望对你有一定的参考价值。
ZooKeeper作为高可用的一致性协调框架,有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法,即ZAB(ZooKeeper Atomic Broadcast )。
ZAB在Paxos算法上做了重要改造,和Paxos有着明显的不同。为讨论ZAB,我们假定ZooKeeper已经开启仲裁模式(ZooKeeper还有一种独立模式,除实验需求以外不要开,因为它无法避免脑裂)。
/conf/zoo.cfg解释
tickTime=2000 #zookeeper中使用的基本时间单位, 毫秒值.服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
nitLimit=5 #zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
syncLimit=2 #该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
dataDir=/usr/local/zdata # 数据目录. zdata目录需要自己创建.可以是任意目录.
dataLogDir=/usr/local/zlog #log目录,zlog目录需要自己创建.同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
clientPort=2180 # 监听client连接的端口号.
server.0=127.0.0.1:8880:7770 #server.X=A:B:C 其中X是一个数字, 表示这是第几号server.
server.1=127.0.0.1:8881:7771 #A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口.
server.2=127.0.0.1:8882:7772 #C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.集群模式下b,c可以一样
ZAB协议作用:
1.集群半数以上存活,对外提供服务
2.客户端请求follower,增删改转leader处理,并确保同步到其他节点…读取follower直接返回数据
3.leader宕机,或整个集群重启时,确保已经在leader上提交事物.如果没有,当集群重启完成时快速回到故障之前状态,由新leader根据日志内的操作继续完成
保证数据缓存可靠性,数据广播一致性
数据一致性(数据库集群也有这个概念):
1.强一致性:写入数据,立即可以读出数据,如购买火车票.这种用户体验很好,但是响应速度慢,系统开销大
2.弱一致性(默认状态):写入数据库之后不保证能够立即读到和在一定时间达到一致,只尽可能保证在某一时间达到数据一致性,如网购秒杀抢购时的库存量
3:最终一致性:弱一致性的特例(1和2的中和状态).系统保证在一定时间内达到一致性状态(在性能和速度之间取舍)
以上是关于了解zookeeper的主要内容,如果未能解决你的问题,请参考以下文章