zoukankan      html  css  js  c++  java
  • Zookeeper —— 初识

    什么是 Zookeeper

    Zookeeper 是一个开放源代码的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现;

    Zookeeper 是典型的分布式数据一致性的解决方案,分布式应用程序可以基于它来实现:数据发布/订阅负载均衡命名服务分布式锁等;

    Zookeeper 基本概念

    集群角色:

    Zookeeper 中有 Leader、Follower 和 Observer 三种角色,Leader 为客户端提供读和写服务,Follower 和 Observer 只提供读服务;

    其中 Observer 不参与 Leader 过程,也不参与写操作的“过半写成功”的策略,所以增加 Observer 机器可以在不影响写性能的情况下增加读性能;

    Leader:

    事务请求的唯一调度和处理者,保证集群事务处理的顺序性;

    集群内部各服务器的调度者;

    Follower:

    Follower 服务器是 ZK 集群状态的跟随者。

    处理客户端非事务请求,转发事务请求给 Leader 服务器;

    参与事务请求 Proposal 的投票;

    参与 Leader 选举投票;

    Observer:

    ZK 3.3.0 引入的全新服务器角色;

    观察 ZK 集群的最新状态变化并将这些状态变更同步过来。

    对于非事务请求可以独立处理,但事务请求会转发给 Leader 服务器;

    也不参与任何形式的投票,包括事务请求 Proposal 和 Leader 选举投票;

    Observer 只提供非事务服务;

    作用:在不伤害写性能的情况下扩展 ZK;

    数据模型

    文件系统

    Zookeeper 也使用文件系统组织系统中存储的资源,结构如下所示:

    • /

    • /app1/c1

    • /app1/c2

    • /app1/c3

    • /app2/...

    其并没有文件和文件夹的概念,只有 Znode 概念,它既可以作为容器存储数据,也可以持有其他 Znode 形成父子关系;

    ZNode(数据节点)

    ZK 的视图结构和标准的 Unix 文件系统非常类似,如:/app1/c1

    Znode 是 ZK 中数据的最小单元;

    每个 ZNode 上都可以保存数据;

    同时还可以挂载子节点,构成一个层次化的命名空间,称之为

    ZXID(事务ID)

    数据节点创建、删除、节点内容更新和客户端会话创建与失效等操作,都是事务操作;

    每一个事务请求都会为其分配一个全局唯一的事务 ID,用 ZXID 表示,通常是 64 位数字;

    ZNode 节点特性

    节点类型

    持久节点(persistent)

    创建后一直存在于 ZK 服务器上,直到主动删除

    持久顺序节点(persistent——sequential)

    增加顺序的特性,每个父节点都会维护它的第一级子节点的顺序;

    ZK 自动会给节点名加上一个数字后缀,后缀的上限是整型的最大值;

    临时节点(ephemeral)

    临时节点的生命周期和客户端的会话绑定,会话结束则节点消失;

    临时节点不能有子节点,即临时节点只能作为叶子节点;

    临时顺序节点(ephemeral_sequential)

    增加了顺序特性;

    节点状态

    looking:

    • 不确定 leader 状态(选主中);

    • 对外不提供服务;

    following:

    • 跟随者状态;

    • 作为系统的从节点,接收主节点的更新并写入本地日志;

    leading:

    • 领导者状态;

    • 作为系统的主节点,接收客户端更新,写入本地日志,并通知从节点复制;

    observing:

    • 观察者状态;

    • 表示当前角色是 Observer,与 Follower 不同是不参与投票和选举;

  • 相关阅读:
    iOS设备后台播放音乐方法
    iOS 编译64位FFMPEG
    os8 location authorization 错误.
    IOS 使用新浪微博SDK
    IOS 解析歌词lrc
    IOS 通过button获取cell
    IOS 解析XML文档
    OC .(点)与->(箭头)用法区别
    黑苹果安装合集
    Hello,World
  • 原文地址:https://www.cnblogs.com/zhengbin/p/10584115.html
Copyright © 2011-2022 走看看