zookeeper的特征

2020-10-19  本文已影响0人  test_java

集群模式部署

1.一般情况下,为奇数 ,5台,或者3台, 适用小集群 ,读多写少、
2. 主从架构, (leader,fowller)
3.客户端与zk进行是长链接,TCP ,心跳 和 seeson保持
4.zxid 64位 高32位为leader的ecphe ,低32位为 zxid ,自增长类
5.遵循ZAB协议, 2PC ,过半ack+磁盘日志写 ,commit+写内存日志结构
6. 支持 Wather机制, 监听回调通知
7.顺序一致性: 消息按顺序同步,但是最终才会一致,不能强一致。
8.高性能 2PC中的过半机制,纯内存的数据结构,znode
9.高可用,fowller宕机没有影响,leader宕机有数据不一致的问题,重新选举leader会自动处理,正常运行,但是在恢复模式期间,可能有小段时间没法写入zk中。
10高并发, 单机情况下,Observer可以线性扩展读QPS
zk的模型

Zookeeper分布式锁中的羊群效应及解决方案

获取锁时创建一个临时顺序节点,顺序最小的那个才能获取到锁,之后尝试加锁的客户端就监听自己的上一个顺序节点,当上一个顺序节点释放锁之后,自己尝试加锁,其余的客户端都对上一个临时顺序节点监听,不会一窝蜂的去尝试给同一个节点加锁导致羊群效应。

1.所有客户端都尝试去创建临时有序节点以获取锁

2.序号最小的临时有序节点获得锁

3.未获取到锁的客户端给自己的上一个临时有序节点添加监听

4.获得锁的客户端进行自己的操作,操作完成之后删除自己的临时有序节点

5.当监听到自己的上一个临时有序节点释放了锁,尝试自己去加锁

6.操作完成之后释放锁

7.之后剩下的客户端重复加锁和解锁的操作

分布式锁
上一篇下一篇

猜你喜欢

热点阅读