Zookeeper学习笔记
侧边栏壁纸
  • 累计撰写 307 篇文章
  • 累计阅读 104.3万

Zookeeper学习笔记

TOTC
2013-11-02 / 371 阅读 / 正在检测是否收录...

节点选举

Zookeeper节点状态有looking following leading。

①每个server首先给自己投票(myid,ZXID,epoch),将这个投票发给集群中其他机器(epoch选举周期,每次进入新一轮的投票后,都会对该值进行加1操作)

②每个server接受来自各个服务器的投票,检查是否是本轮投票、是否来自LOOKING状态的服务器

③处理投票

  • 优先检查ZXID。ZXID比较大的服务器优先作为Leader
  • 如果ZXID相同,那么就比较myid。myid较大的服务器作为Leader服务器

④统计投票

每次投票后,服务器都会统计投票信息,判断是否已经有过半机器接受到相同的投票信息,一旦选出leader,后边的机器不管myid和ZXID多大,都自动成为follow

⑤改变服务器状态

Znode

Znode数据节点,数据大小不能超过1M,分为持久节点和临时节点,临时节点的生命周期和客户端会话绑定,一旦客户端会话失效节点就会被移除。创建节点时还可以指定SEQUENTIAL属性,这样会在节点后面增加一个自增的整型数字。节点信息包含czxid创建该节点的事务id、mzxid最后一次更新该节点的事务id等。

Zookeeper将数据存储于内存中,Znode是存储数据的最小单元,而Znode被以层次化的结构进行组织,形容一棵树,这种节点称为Znode:

  • data:Znode存储的数据信息。
  • ACL:记录Znode的访问权限,即哪些人或哪些IP可以访问本节点。
  • child:当前节点的子节点引用,类似于二叉树的左孩子右孩子。
  • stat:包含Znode的各种元数据,比如事务ID、版本号、时间戳、大小等等。

应用场景

①.数据发布订阅:配置信息等放到Zookeeper某个节点上,集群中其他机器监听变更。

②.负载均衡:动态感知子节点(即服务ip)的上下线。

③.命名服务:持久顺序节点,每个父节点都会为子节点维护一个顺序,数字后缀、上限为整型的最大值。

④.分布式协调和通知:同a。

⑤.集群管理:每个机器一个临时节点。

⑥.Master选举:所有服务同时创建一个节点并监测,成功的为Master。

⑦.分布式锁:排它锁(一起去创建和监听临时节点)、共享锁(创建临时序号节点,比本序号小的序号没有写请求时,才可以写)。

⑧.分布式队列。

其他

①.ZAB协议原子消息广播协议,分为消息广播、崩溃恢复。

②.基于观察者模式设计,数据的状态发生变化,Zookeeper就通知已经在Zookeeper上注册的那些观察者做出相应的回应。

③.Zookeeper的数据结构和linux的目录结构类似,也像数据结构中的树。

2

评论

博主关闭了所有页面的评论