• 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的所有请求。

  • 相关阅读:
    Redis 代理 twemproxy
    redis sentinel 集群监控 配置
    RabbitMQ 消息队列 配置
    codis 新版本 CodisLabs 编译安装
    CentOS7 开源跳板机(堡垒机) Jumpserver
    tomcat 优化配置 java-8 tomcat-7
    CentOS 7 安装配置 NFS
    CentOS 7 x64 安装 Ceph
    自动化运维 Ansible
    Java之数据类型讲解
  • 原文地址:https://www.cnblogs.com/it-worker365/p/9304528.html
Copyright © 2020-2023  润新知