zoukankan      html  css  js  c++  java
  • zookeeper 各节点数据保证是弱一致性

    一致性保证:
    
    ZooKeeeper 是一个高性能的,可扩展的服务。不管是读和写操作是被设计成快速,虽然读比写快。
    
    
    这样做的原因是在读的情况下,Zookeeper 可以提供旧的数据,
    
    
    反过来又是由于Zookeeper的一致性保证;
    
    
    顺序一致性;
    
    
    从客户端更新会按他们发送的顺序应用
    
    原子性;
    
    更新成功还是失败   不会有部分的结果
    
    
    单系统镜像
    
    一个客户端可以看到相同的试图 
    
    可靠性:
    
    
    一旦一个更新被应用, 它会坚持从那个时间知道一个客户端覆盖更新。
    
    这个保证2个推论:
    
    
    1.如果一个客户端成功的得到一个返回码,更新会被应用。在一些失败的情况(通讯错误,超时等) 
    
    客户端不知道如果更新是否已经被应用。 我们采取措施尽量减少故障,
    
    
    但是保证只是当前的成功的返回码(这个被称为所谓的Paxos)
    
    
    2. 任何更新被客户端看到,通过读取请求或者成功的更新,永远不会被回滚当从服务器故障恢复。
    
    
    时效性:
    
    客户端试图是保证在某段时间内是最新的(在几十秒的顺序0
    
    
    注意:
    
    有些时候 开发者错误的认为另一个保证ZooKeeper 不会实际上做,这就是 
    
    同时一致性跨客户端视图:
    
    ZooKeeper 不强制保证在每个实例及时的,两个不同的客户端会有zk数据的一致性视图
    
    由于 像网络延时,一个客户单可能执行一个更新在其他客户单得到改变的通知前。
    
    
    考虑到两个客户端的情况,A和B 如果客户端A 设置一个 znode /a 从0变为1
    
    然后告诉client B去读取/a,客户端B 可能读取老的值0,
    
    
    依赖它连接到哪台服务器。如果是重要的Client A 和Client B  读取相同的值,
    
    Client B应该调用sync()方法。
    
    
    因此,ZooKeeper 本身不保值改变发生同步到所有的服务器
     

  • 相关阅读:
    成为明星程序员的10个提示
    每天写出好代码的5个建议
    收集开发相关网站
    Class.getDeclaredFields()和Class.getFields()的区别。 Class.getMethods()和Class.getDeclaredMethods()的区别。
    Oracle数据库插入过程中特殊符号
    @JsonIgnore注解|@JsonProperty
    基本linux命令
    linux基本概述
    php.ini模块
    一个购物车类(session实现的且为单例模式)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350355.html
Copyright © 2011-2022 走看看