zoukankan      html  css  js  c++  java
  • zookeeper初识

    ZOOKEEPER是为分布式系统提供高性能的协调工具,但是ZK是满足CAP中的CP,以及,当服务重新选取leader时,服务会有N秒的时间不可用,对于作为服务注册中心有一定缺陷,但是该学习还是要学习的

    角色:

    1.领导者(leader):负责进行投票的发起和决议,更新系统状态
    2.学习者(learner):包括跟随者(follower)和观察者(observer),
      Follower用于接受客户端请求并向客户端返回结果(如果是事务请求,follower会将请求转发给leader实施),在选主过程中参与投票,以及参与事务投票
      Observer可以接受客户端请求,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度,同时可以避免加入Follower,会因为参加投票(网络传输等)降低性能的问题
    3. 客户端(client),请求发起方

    数据节点类型:

    PERSISTENT:永久节点
    EPHEMERAL:临时节点(为防止临时节点的消亡影响子节点数据,临时节点内不得创建子节点)
    PERSISTENT_SEQUENTIAL:永久节点、序列化
    EPHEMERAL_SEQUENTIAL:临时节点、序列化

    数据属性:

    保证:

    1.顺序一致性:来自于客户端的更新,根据发送的先后被顺序实施。
    2.唯一的系统映像:尽管客户端连接到不同的服务器,但它们看到的一个唯一(一致性)的系统服务,client无论连接到哪个server,数据视图都是一致的。
    3.可靠性:一旦实施了一个更新,就会一直保持那种状态,直到客户端再次更新它,同时数据更新原子性,一次数据更新要么成功,要么失败。
    4.及时性:在一个确定的时间内,客户端看到的系统状态是最新的。#是否立刻看大更新待验证

    特性:

    最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
    可靠性:具有简单、健壮、良好的性能,如果消息m被一台服务器接受,那么它将被所有的服务器接受。
    实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。 但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
    等待无关(wait-free):慢的或者失效的client,不得干预快速的client的请求,使得每个client都能有效的等待。
    原子性:更新只能成功或者失败,没有中间状态。
    顺序性:包括全局有序和偏序两种:

      全局有序:是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;

      偏序:是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面

  • 相关阅读:
    Eclipse查看源码
    让你的Eclipse的智能感知也和Visual Studio 一样快
    关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
    C#中Dictionary的用法及用途实例
    不想人工干预地自动执行存储过程?当目的表发生变动时自动执行相应的存储过程?
    再说HelloWorld
    TreeList应用(三) 收藏
    DataTable转换为List<Model>的通用类
    U盘不显示盘符
    如何在 Eclipse 中显示行号
  • 原文地址:https://www.cnblogs.com/jaxlove-it/p/10019468.html
Copyright © 2011-2022 走看看