`
m635674608
  • 浏览: 4932572 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ZooKeeper和CAP理论及一致性原则

 
阅读更多
<iframe id="iframeu2567428_0" style="word-wrap: break-word; margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom;" src="http://pos.baidu.com/ucvm?rdid=2567428&amp;dc=2&amp;exps=110005&amp;di=u2567428&amp;dri=0&amp;dis=0&amp;dai=6&amp;ps=704x1261&amp;dcb=BAIDU_SSP_define&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1480923179190&amp;ti=ZooKeeper%E5%92%8CCAP%E7%90%86%E8%AE%BA%E5%8F%8A%E4%B8%80%E8%87%B4%E6%80%A7%E5%8E%9F%E5%88%99%20-%20zookeeper%20-%20%E8%BF%90%E7%BB%B4%E7%BD%91%20-%20iyunv.com&amp;ari=2&amp;dbv=2&amp;drs=1&amp;pcs=1372x637&amp;pss=1372x976&amp;cfv=22&amp;cpl=6&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1480923179&amp;rw=637&amp;ltu=http%3A%2F%2Fwww.iyunv.com%2Fthread-109830-1-1.html&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D1ZCHmGgDDIsmdyzxCqXdQA5d2nJcJFTooifKTqICU7mJrXpM8cwMivBHQpEjTOUooUsBX2ct37d_nIChtXK_dq%26wd%3D%26eqid%3Dd752508c0000ee330000000458451731&amp;ecd=1&amp;psr=1600x900&amp;par=1600x860&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=8&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1480923179&amp;qn=8ea89d3aec3ac762&amp;tt=1480923179150.254.296.298" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" align="center,center" width="300" height="250"></iframe>

一、CAP理论概述
  分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。
  C:Consistency,一致性,数据一致更新,所有数据变动都是同步的。
  A:Availability,可用性,系统具有好的响应性能。
  P:Partition tolerance,分区容错性。
因此,将精力浪费在思考如何设计能满足三者的完美系统上是愚钝的,应该根据应用场景进行适当取舍。
  (1)一致性
  一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据变动在系统内部各节点应该是同步的。根据一致性的强弱程度不同,可以将一致性级别分为如下几种:
    ①强一致性(strong consistency)。任何时刻,任何用户都能读取到最近一次成功更新的数据。
  ②单调一致性(monotonic consistency)。任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值。也就是说,可  获取的数据顺序必是单调递增的。
  ③会话一致性(session consistency)。任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中就不会再读到比这值更旧的值   会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。示例case:php的  session概念。
  ④ 最终一致性(eventual consistency)。用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障。
  ⑥弱一致性(weak consistency)。用户无法在确定时间内读到最新更新的值。
二、ZooKeeper提供的一致性服务
  很多文章和博客里提到,zookeeper是一种提供强一致性的服务,在分区容错性和可用性上做了一定折中,这和CAP理论是吻合的。但实际上zookeeper提供的只是单调一致性。
原因
  1. 假设有2n+1个server,在同步流程中,leader向follower同步数据,当同步完成的follower数量大于 n+1时同步流程结束,系统可接受client的连接请求。如果client连接的并非同步完成的follower,那么得到的并非最新数据,但可以保证单调性。
  2. follower接收写请求后,转发给leader处理;leader完成两阶段提交的机制。向所有server发起提案,当提案获得超过半数(n+1)的server认同后,将对整个集群进行同步,超过半数(n+1)的server同步完成后,该写请求完成。如果client连接的并非同步完成follower,那么得到的并非最新数据,但可以保证单调性。
  用分布式系统的CAP原则来分析Zookeeper
(1)C: Zookeeper保证了最终一致性,在十几秒可以Sync到各个节点.
(2)A: Zookeeper保证了可用性,数据总是可用的,没有锁.并且有一大半的节点所拥有的数据是最新的,实时的. 如果想保证取得是数据一定是最新的,需要手工调用Sync()
(2)P: 有2点需要分析的.
     节点多了会导致写数据延时非常大,因为需要多个节点同步.
     节点多了Leader选举非常耗时, 就会放大网络的问题. 可以通过引入 observer节点缓解这个问题.

 

 

http://www.iyunv.com/thread-109830-1-1.html

分享到:
评论

相关推荐

    Paxos到Zookeeper:分布式一致性原理与实践

    《Paxos到Zookeeper:分布式一致性原理与实践》从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式...

    Paxos 到 Zookeeper:分布式一致性原理与实践 高清

    《Paxos 到 Zookeeper:分布式一致性原理与实践》从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了 Paxos 和 ZAB 协议。同时,本书深入介绍了...

    从Paxos到Zookeeper

    《Paxos到Zookeeper:分布式一致性原理与实践》从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式...

    java高级软件工程师教程快速入门Zookeeper+dubbo视频教程

    提供分布式数据一致性解决方案,分布式应用程序可以实现数据发布订阅、负载均衡、命名服务、集群管理分布式锁、分布式队列等功能。在大数据、分布式系统或架构中占有很重要的协调位置。 Dubbo是一款高性能、轻量级的...

    java面试最全八股文

    一、一致性理论 二、一致性模型 三、分布式事务解决方案 四、选择建议 分布式锁的几种实现方式 1. 使用Redis实现分布式锁 * WATCH, MULTI, EXEC, DISCARD事务机制实现分布式锁 * SETNX实现分布式锁 * 锁的释放 2. ...

    zookeeper.pptx

    zookeeper简单介绍,分布一致性算法。 从单体服务到多服务部署讲起,为什么要引入微服务。引入后,出现的问题。 数据库隔离级别,CAP理论基础。一致性协议,2PC,3PC。 拜占庭问题,Paxos、Raft、ZAB(2PC)。 ...

    Eureka与Zookeeper对比

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P是分布式系统中必须保证的,因此我们只能在A和C中间进行权衡。 Zookeeper保证的是CP(一致性和分区...

    分布式数据库数据一致性的原理、与技术实现方案

    可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有...

    nacos资料.rar

    Nacos提供基于DNS和基于RPC的服务发现,即能被用来支持https/http的服务注册与发现,也支持RPC...Nacos是一种去中心化的架构,属于CAP理论里的AP架构,支持最终一致性,在分布式服务发现与注册场景下具有很不错的性能。

    DistributedLocks.zip

    分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者...

    分布式常见面试题

    P分区容错性:分布式系统在任何网络或者单点故障时,仍能对外提供满足一致性和可用性的服务 一个分布式系统,不可能同时满足这三个要求,最多只能满足其中两项,一般就是在A、C之间寻找平衡。   分布式一致性算法 ...

    zookeeper(一)

    分布式环境 分布式环境的特点 分布性 并发性:程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问...分布式事务:ACID(原子性、一致性、隔离性、持久性)。 CAP/BASE理论 CAP consisten

    Java思维导图xmind文件+导出图片

    Redis缓存与数据库一致性问题解决方案 基于redis实现分布式实战 图解Redis中的AOF和RDB持久化策略的原理 redis读写分离架构实践 redis哨兵架构及数据丢失问题分析 redis Cluster数据分布算法之Hash slot ...

    java实现校园一卡通源码-2020-:2020-

    (Base理论CA强一致性和最终一致性) ZAB协议: ZAB协议包括两种基本的模式:崩溃恢复和消息广播。当整个 Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    一致性hash 消峰 分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 ...

    java8集合源码分析-JavaArchitect:「Java架构师知识积累」

    Consistency(一致性) Availability(可用性) Partition Tolerance(分区容错性) BASE理论 Basically Available(基本可用) Soft-state(软状态) Eventually Consistent(最终一致性) 高并发 分布式 id 在复杂...

    JAVA面试核心知识点

    700道面试题:内容主要包括:JVM,集合,java反射,,多线程,JUC并发包,锁,CAS,AQS,,java基础,...负载均衡,数据库,CAP,一致性算法,java常用排序算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN

    全是经典|分布式论文

    非常经典的分布式论文,包括分布式基础知识、分布式一致性、分布式数据结构、分布式实战4部分。总量超过40篇!

Global site tag (gtag.js) - Google Analytics