【zookeeper】

功能:

是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。

Zookeeper 提供了一个类似于Linux 文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息(纯内存数据),完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。

角色划分:
Leader:支持读写,唯一支持写的节点

  它会发起并维护与各Follwer及Observer 间的心跳。所有的写操作必须要通过Leader 完成再由Leader 将写操作广播给其它服务器。只要有超过半数节点(不包括observeer 节点)写入成功,该写请求就会被提交(类 2PC 协议)。

 Follower:只读,支持选举

  存在多个Follower,它会响应Leader 的心跳

  Follower 可直接处理并返回客户端的读请求,同时会将写请求转发给Leader 处理;

  负责在Leader 处理写请求时对请求进行投票。

Observer:只读,无选举权

  Zookeeper 需保证高可用和强一致性,为了支持更多的客户端,需要增加更多Server; Server增多,投票阶段延迟增大,影响性能;引入Observer,Observer 不参与投票; Observers 接受客户端的连接,并将写请求转发给leader 节点 加入更多Observer 节点,提高伸缩性,同时不影响吞吐率。

ZAB协议:

投票机制:

Zookeeper工作原理:

zNode

  zNode存储数据量较小:通常不大于1M

  有四种形式的目录节点

    1. PERSISTENT:持久的节点。

    2. EPHEMERAL:暂时的节点。

    3. PERSISTENT_SEQUENTIAL:持久化顺序编号目录节点。

    4. EPHEMERAL_SEQUENTIAL:暂时化顺序编号目录节点。

  

三方件库

分布式锁使用方式:

  

原文地址:https://www.cnblogs.com/clarino/p/13407462.html