zookeeper学习

一、官网:https://zookeeper.apache.org/

二、定义:分布式应用程序的分布式协调服务(提供一个看起来像是单机,实际上不是单机的服务;比如分布式锁)

三、设计目标

  • 简单:性能要求、严格的顺序(适合同步原语-分布式锁)
  • 复制:主从模式
    •   
    • 从上可以看出这是一个主从模式,且路由在服务端(zk 节点互相熟悉)

    • 主从模式就会存在主节点的单点故障,zk通过保证快速选举leader来保证高可用性(选举一般保证在200ms之内完成,大多数节点同意即可) 

  • 订阅:唯一的一个事务ID标记每次修改
  • 快:适用于读取场景,比例大概是1:10(写:读),性能极佳

四、数据结构-分层文件系统

五、节点&短暂节点

  • znode单独维护自己的数据和一些统计数据信息
  • 每个节点都维护了ACL,控制目录下权限

六、更新和监视

  客户端可以设置节点的监听

七、特性

  • 顺序一致性-来自客户端的更新将按照发送的顺序应用。
  • 原子性-更新成功或失败。没有部分结果。
  • 单个系统映像-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。也就是说,即使客户端故障转移到具有相同会话的其他服务器,客户端也永远不会看到系统的较旧视图。
  • 可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
  • 及时性-确保系统的客户视图在特定时间范围内是最新的。

八、API(有很多都提供了-w参数,表示监听模式,偏响应式API)

  • create:在树中的某个位置创建一个节点

  • delete:删除节点

  • exists:测试某个位置是否存在节点

  • get data:从节点读取数据

  • set data:将数据写入节点

  • get children节点:获取节点子节点的列表

  • sync:等待数据传播

原文地址:https://www.cnblogs.com/gabin/p/13687685.html