博客
关于我
Zookeeper概念-选举机制和监听器原理
阅读量:154 次
发布时间:2019-02-27

本文共 1183 字,大约阅读时间需要 3 分钟。

Zookeeper简介

Zookeeper是一种开源的分布式协调服务,主要功能包括统一命名服务、统一配置管理、统一集群管理等。它通过保持各个节点的状态一致,确保集群服务的稳定性和可用性。

Zookeeper角色

Zookeeper集群由三个角色组成:Leader、Follower和Observer。

Leader:负责发起投票和决议,更新系统状态,是集群的决策者。

Follower:接收客户端请求并返回结果,在选主过程中参与投票。

Observer:接收客户端连接,将写请求转发给Leader,不参与投票。

Zookeeper选举机制

Zookeeper的选举机制基于半数机制,集群中半数以上节点存活时,集群可用。虽然没有显式的master和slave设置,但通过内部选举产生一个临时的Leader。

假设有五台服务器组成的Zookeeper集群,依次启动分析如下:

  • 服务器1启动,成为唯一存活节点,处于LOOKING状态。

  • 服务器2启动,与服务器1交换选举信息,由于没有历史数据,id较大的服务器2胜出,但未达到半数以上(3台)认可,仍处于LOOKING状态。

  • 服务器3启动,成为三台服务器中的老大,超过半数认可,正式成为Leader。

  • 服务器4启动,虽然本身id更大,但因已有半数以上(3台)认可服务器3,无法成为Leader。

  • 服务器5启动,同样无法成为Leader。

  • Zookeeper特点

  • 集群由一个Leader和多个Follower组成。

  • Leader负责发起投票和决议。

  • Follower参与投票和接收请求。

  • 集群需半数以上节点存活。

  • 数据一致:每个节点保存相同数据副本。

  • 更新有序:同一客户端的更新按发送顺序执行。

  • 原子性:一次更新要么成功要么失败。

  • 实时性:客户端能在一定时间内读到最新数据。

  • Zookeeper监听器原理

    Zookeeper客户端在main线程启动时创建Zookeeper连接,生成connect和listener线程:

  • connect线程负责网络通信。

  • listener线程接收Zookeeper的通知消息。

  • process方法处理收到的事件。

  • 常见监听类型包括:

    • 监听节点数据变化:使用get path [watch]

    • 监听子节点变化:使用ls path [watch]

    Zookeeper数据结构

    Zookeeper的每个节点称为znode,路径唯一标识,存储1M数据,类型包括:

    • persistent:持久化节点

    • persistent_sequential:持久化顺序编号节点

    • ephemeral:临时节点

    • ephemeral_sequential:临时顺序编号节点

    Zookeeper与Hbase关系

    Zookeeper和Hbase作为大数据系统的重要组成部分,分别负责数据协调和存储,共同支撑分布式系统的高效运行。

    转载地址:http://dgmb.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现dijkstra迪杰斯特拉算法(附完整源码)
    查看>>
    Objective-C实现Dijkstra迪杰斯特拉算法(附完整源码)
    查看>>
    Objective-C实现dijkstra银行家算法(附完整源码)
    查看>>
    Objective-C实现Dinic算法(附完整源码)
    查看>>
    Objective-C实现disjoint set不相交集算法(附完整源码)
    查看>>
    Objective-C实现DisjointSet并查集的算法(附完整源码)
    查看>>
    Objective-C实现djb2哈希算法(附完整源码)
    查看>>
    Objective-C实现DNF排序算法(附完整源码)
    查看>>
    Objective-C实现doomsday末日算法(附完整源码)
    查看>>
    Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现double hash双哈希算法(附完整源码)
    查看>>
    Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
    查看>>
    Objective-C实现double linear search 双线性搜索算法(附完整源码)
    查看>>
    Objective-C实现double sort双重排序算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表算法(附完整源码)
    查看>>
    Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
    查看>>
    Objective-C实现DWT离散小波变换(附完整源码)
    查看>>
    Objective-C实现Edmonds-Karp算法(附完整源码)
    查看>>