zookeeper 是什么?有什么作用?

zookeeper 是什么?

zookeeper 是一个分布式协调服务

zookeeper 的特征,都保障了什么?

1、顺序一致性:客户端的请求按顺序进行相应

2、原子性:要么成功要么失败,没有中间商赚差价

3、统一视图:无论客户端连接到哪台服务器,都能看到统一的结果视图

4、可靠性:一旦服务端数据的状态发生了变化,就会立即存储起来,除非此时有另一个请求对其进行了变更,否则数据一定是可靠的

5、及时性(数据一致性):系统的客户视图保证在特定时间范围是最新的

zookeeper 的数据结构

zookeeper 是一个目录树结构

zookeeper 都有哪些角色?都负责什么?

leader:主节点(领导者)- 负责读写,并参与选举

follower:从节点(跟随者)- 负责读,并参与选举

observer:从从节点(观察者)-负责读,没有选举权和被选举权

zookeeper 是如何与client 保持通信的?

session

zookeeper 是如何保证数据一致性的?

基于ZAB 协议:原子广播

  1. client向node发送write请求
  2. follower向leader发送write请求
  3. leader向follower发送广播
  4. 超过半数以上的follower成功响应
  5. leader 将消息插入到队列,队列采用FIFO机制,保证消息顺序

zookeeper 是如何选举的?

 zookeeper 的选举机制不同其他,zookeeper 的leader 是谦让出来的

假设leader节点宕机,三个follower分别为ABC

  1. 选出数据最完整的节点,即PID最大的节点,假设是A、B两个节点
  2. 校验A、B 两个节点的myid,最大的当选为leader 节点

官方给出的速度为200 ms,基本是无感的,并且在ABC选举的过程中,不对外提供服务,保证数据完整性

zookeeper 是如何对节点进行监听的?

通过watch命令

zookeeper 自己通过watch实现了心跳、发现

zookeeper 如果实现服务注册中心?

 zookeeper 如何实现分布式锁?

方案1:client 主动轮询,心跳。弊端:时效性差,有一定的延迟性,压力

方案2:client watch zookeeper。弊端:假设有1000 台服务器,zk 要同时通知,鸭梨大

方案3:watch + seq

实现步骤:

  1. client 同时创建sequence节点,每个client 得到的响应结果都不同
  2. 假设小明client拿到了第1个seq节点,小红client拿到了第2各seq节点,小刚client拿到了第3各seq节点
  3. 拿到第一个节点的client实现业务逻辑,执行完成后释放锁,并删除seq01节点
  4. 小红等着小明释放锁,自己就成为了第1个seq,并实现业务逻辑
  5. 小刚及后面的client重复此步骤
  6. 除了第1个节点,其他的节点只需要监听上一个节点是否delete,获取到响应结果后,依次判断自己是否为第1个节点

对应步骤1:

 对应步骤3、4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值