zoukankan      html  css  js  c++  java
  • Zookeeper 基本应用及盲点

    主要应用

    From:

    https://segmentfault.com/a/1190000012185452

    http://blog.fens.me/zookeeper-queue/

    原理: 应用zookeeper的持久化节点PERSISTENT、临时节点(断线即自动删除)、序列化节点名SEQUENTIAL、watch等特性

    master选举:

    在zk某个指定目录下创建一个临时节点,并写入基本信息,成功的则是master,其他做为slave,所有的slave必须watch master节点,在删除时得到通知,开始选主

    分布式锁:

    在特定目录下创建临时序列节点,获取该节点下所有children,按照节点自增号排序,如果自己是最小的,则得到锁,否则就监听次小序号节点的删除事件。

    分布式队列:

    当队列填满时才通知消费者来消费

    要创建queue_100

    /queue入队操作就是在该目录下创建节点,当达到预定数目100时,创建/queue/start消费者通过监听该目录,得到通知后来消费,使用完后删除/queue下对应节点

    分布式序列号:

    利用序列号


    容错:

    Quorums 存活的服务器数量大于宕机的服务器数量,则可以继续使用。

    假死、脑裂:

    心跳不通,导致某节点假死,然后watch的节点发现master死了开始选主,选好后网络又通了,就产生了两个master节点

    ZK中的解决方法:

    假设某个leader假死,其余followers选举出了一个新learder,这是旧leader复活以为自己仍然是leader,向其他followers发出写请求也是会被拒绝。因为每当新leader产生时,会生成一个epoch,该epoch递增,followers如果确认了新的Leader存在,知道其epoch,就会拒绝epoch小于现任leader epoch的所有请求。

  • 相关阅读:
    Gym
    HDU 5876 Sparse Graph(补图中求最短路)
    HDU 5873 Football Games(竞赛图兰道定理)
    HDU 5877 Weak Pair(树状数组+dfs+离散化)
    HDU 5963 朋友(找规律博弈)
    HDU 5961 传递
    POJ 3252 Round Numbers(数位dp)
    HDU 4734 F(x) (数位dp)
    HDU 2089 不要62(数位dp模板题)
    HDU 5936 Difference(折半搜索(中途相遇法))
  • 原文地址:https://www.cnblogs.com/it-worker365/p/9304528.html
Copyright © 2011-2022 走看看