6. Zookeeper

6.1 Zookeeper 是什么

Zookeeper 实际上就是 文件系统 + 通知机制。

  • Zookeeper 是一个基于 观察者模式 设计的分布式框架,它负责存储大家都关心的数据,然后接受观察者的注册。
  • 一旦数据发生了变化,Zookeeper 就负责通知已经注册的那些观察者,从而实现集群中类似 Master/Slave 管理模式。

6.2 Zookeeper 特点

Zookeeper 是由一个领导者(leader)和多个跟随者(follower)组成的集群

  • leader:负责投票的发起和决议,更新系统状态
  • follower:负责接收客户请求并向客户端返回结果,在选举 leader 的过程中参与投票

Zokeeper 具有以下特点:

  • 集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。
  • 全局数据一致:每个 server 保存一份相同的数据副本,client 无论连接到哪个 server,数据都是一致的。
  • 数据更新原子性:一次数据更新要么所有机器都成功,要么都失败。
  • 实时性:在一定时间范围内,client 能读到最新数据。

6.3 选举机制

半数机制(Paxos 协议):集群中半数以上机器存活,集群可用。所以 zookeeper 适合装在奇数台机器上。

当集群开启的数量在半数以上时,就会将 Leader 选出来,下面以一个简单的例子来说明 FastLeaderElection 选举机制的整个过程。

例如,有 id 为1,2,3三台机器,按顺序启动,第一台开启时,zookeeper 的日志会报错,因为启动数量没有达到集群的一半。继续启动机器2,数量多于一半,然后根据 id 的大小选出 Leader,则2号当选。当3号机器启动时, Leader 已经存在,则只能当小弟了。


6.4 监听器原理

在这里插入图片描述

  1. 首先有一个 main() 线程

  2. 在 main 线程中创建 Zookeeper 客户端,会创建两个线程,connect 负责网络连接通信,listener 负责监听

  3. 通过 connect 线程将注册的监听事件发送给 Zookeeper

  4. 在 Zookeeper 的注册监听器列表中将注册的监听事件添加到列表中

  5. Zookeeper 监听到有数据或路径变化,就会将这个消息发送给 listener 线程

  6. listener 线程内部调用了process()方法


6.5 常用命令

  • ls:查看子节点
  • get:获取节点信息
  • create:创建节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值