了解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的中和状态).系统保证在一定时间内达到一致性状态(在性能和速度之间取舍)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值