zookeeper学习笔记

1. 官网

Apache ZooKeeper

2. 简单概念

zookeeper也是基于内存的,数据保存在内存中,可以实现高吞吐量和低延迟

可以在大型的分布式系统中使用

zookeeper用于分布式协调

acl:访问控制

二进制安全:放的是字节数组

在csdn中搜索xxx   

xxx site:csdn.com

3. 主从

zookeeper集群(主从,复制集群)

 leader挂了以后,会进入无主状态

官方压测,zookeeper选择新的leader的时间不到200ms,可以很快进入高可用状态

4. 目录树结构

每个节点都可以存放数据,数据量很小,1MB

不要把zookeeper当成数据库使用,会减缓速度

 

5. 特征

 6. 节点类型

持久节点(PERSISTENT)

持久顺序节点(PERSISTENT_SEQUENTIAL)

临时节点(EPHEMERAL)

顺序临时节点(EPHEMERAL_SEQUENTIAL)

client和server之间有session,session就是临时节点

可以通过session实现分布式锁,seesion在说明代码没有执行完毕,要继续加锁;session不在说明代码执行完毕,不要继续加锁了。比redis的setNx更方便

create -s :不会覆盖创建,会进行序列化 

7. 集群配置

zookeeper的集群需要在配置文件中手动添加(redis的哨兵通过发布订阅知道的)

 

 如果leader没有启动,通过3888端口进行通信,如果leader启动过了,通过2888端口进行通信

3888:用于选主投票

2888:用于leader接收write请求

8. 操作命令

 

session是临时节点,但也会统一视图,连接的server挂了以后,操作在其他server也可见

9. zookeeper安装

1. 下载、解压

2. 添加环境变量(ZOOKEEPER_HOME、PATH)

3. 复制一份zoo.cfg文件,并修改配置文件(dataDir、server.1 = node01:2888:3888)

4. 添加myid文件,并写入1

5. 启动:zkServer.sh start-foreground

6. 连接:zkCli.sh

10. observer

observer不参与投票,只提供读功能

设置observer:server.1=node01:2888:3888:observer

11. 算法

Paxos:基于消息传递的一致性算法

zookeeper协议:ZAB(原子广播协议)

原子:通过队列+2PC实现

广播:通过过半实现

因为过半就可以确定消息已经完成写操作,那么就有可能发生,Client读取到的是没有进行写操作的Follower,此时,可以通过sync从leader上同步一下数据。

ZAB流程图:

 

12  集群选主

1. 各个节点一直通过3888端口两两通信,所以能很快知道leader挂了

2. 只要任何节点发起投票,都会触发准leader发起自己的投票

3. 推选制:先选择Zxid最大的,再比较myid最大的

13. watch

zookeeper提供watch功能;

watch可以监控客户端的操作

watch分2类:

1. new zookeeper的时候,传入的watch,是session级别的,和path、node没有关系

2. getData时传入的watch

watch是一次性的,有了结果以后需要重新监听

重新监听new zk的watch:可以通过将zk.getData(path, watch, stat)中的watch设置为true

重新监听getData中的watch:将上面的watch设置为this

 getData时也可以设置回调方法,是异步的

14. 用法

连接一个server挂了以后,重新连接新的server,session_id不会改变

zookeeper没有连接池的概念

可以在redis连接字符串中设置根目录(自己的跟目录)

刚new出来的Zookeeper,它的状态是连接中的状态,还没有准备好,可以通过countDownLatch来等Zookeeper准备完成;在状态是SyncConnected时,表示Zookeeper连接建立完成

zookeeper可以用于分布式配置,完成注册、发现

15. 分布式锁

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值