美文网首页
ZooKeeper 简单介绍

ZooKeeper 简单介绍

作者: 真海ice | 来源:发表于2018-02-23 09:16 被阅读0次

    zookeeper 是一个发布/订阅模式的,分布式数据管理协调的框架。

    • 发布/订阅:基于节点的
      发布(creat):创建一个新的节点的时候,相当于存储或发布一份数据
      订阅(watch):基于已经存储的节点上的数据的变化,节点的子节点变化及连接变化(客户端与节点连接)
    • 数据管理
      zookeeper数据结构为树形结构,根节点为'/'。节点有父子关系,可以用文件路径标识如:/server/game1,表示根节点/下的server节点下的game节点。所有的数据的存储必须基于节点,根节点不存数据。每个节点存储数据最大1M(默认)。
    • 协调
      观察事件的变化(数据变化、链接状态、节点的个数等),当有事件变化时,通知watch观察者。
    • 节点
      临时节点:基于会话的,创建完节点后,如果会话消失,则该节点消失。应用 如:dubbo的服务注册与发现。
      持久化节点:创建节点后如果不主动删除,该节点会一直存在。

    ZAB协议(ZooKeeper Atomic Broadcast )

    1. 集群在半数以上节点存活的状态下,可以对外提供服务(大于半数不包括半数)
    2. 客户端所有的写请求都交给leader来做,leader确保数据变更同步给follower
    3. leader宕机或者集群重启的时候,宕机前没有完成的事物操作,在集群重启后会快速恢复到故障之前的状态,即该干嘛赶紧干嘛。

    zookeeper集群中有一个leader和多个follower:

    1. zookeeper 不用自己配置主从关系,集群启动后会自己选举leader,当leader宕机后,集群会重新选择新的leader。
    2. zookeeper没有主从关系,程序不关心哪台是leader哪台是follower。都可以读写,只是leader干活多点,当follower有写请求时,会转给leader,leader写完后会广播告诉集群其他follower(弱一致性)

    使用
    一般不会使用zookeeper提供的原生的api,可以用封装过的Curator http://curator.apache.org/来开发。

    总结

    zookeeper主要就做两件事:数据存储事件通知

    相关文章

      网友评论

          本文标题:ZooKeeper 简单介绍

          本文链接:https://www.haomeiwen.com/subject/vyvtxftx.html