今天来介绍一下CAP原则,以及Zookeeper对于CAP的取舍。

1. 什么是CAP

CAP原则又称CAP定理,是指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition toltolerance(分区容错性),三者不可同时兼得(指不能同时达到最佳效果)。三者分别介绍如下。

  • 一致性,分布式系统的所有主机中在同一时刻可以保证具有完全相同的数据备份。
  • 可用性,在集群中,如果部分节点发生故障,是否会影响对客户端读写请求的响应。注意,如果短时间内会有影响,那么也不满足这里所说的可用性。
  • 分区容错性,百度百科说分区容错性是指系统能够容忍节点之间的网络通信故障,就是说集群因为网络啊,机器故障等原因,使得集群内机器间的通讯受阻,从而服务器分成了几个区域(分区),集群对这种情况的包容度。每一个节点都可以一个分区,分布式中多个机器存着相同的数据,所以分区容错性是必须的,不然不能体现分布式集群的能力。

2. 三二原则

所谓三二原则就是说,对于一个分布式系统,CAP三者不能同时满足,只能满足其中的两种,由于P是必须的,所以要么是CP,要么是AP。为什么这样呢?我们来分析一下。
由于分区容错性是必须的,所以为了提高容错性,就把数据复制到多个服务器里,也就是备份,这样即便部分机器故障啥的,服务依然能够正常提供,也就是容错性提高了。但这个时候备份的机器越多,要使各个机器之间的数据保持一致就越困难,为了维护一致性,就需要等待所有机器中的数据达成一致,这样是比较耗时的,也就是可用性就变低了,所以一致性可用性要做取舍,一致要提高,必然导致另一者的下降。这就是CAP的三二原则。Zookeeper选择了CP。

3. Zookeeper与CP

Zookeeper遵循的是CP原则,也就是选择了一致性,牺牲了可用性。具体体现在:

  • 当Leader挂掉的时候,集群会马上重选Leader。但这个选举时长在30-120秒之间,在这期间Follower都是Looking状态,是不能提供服务的,相当于集群整个就瘫痪了,所以不满足可用性。

那么为什么Zookeeper的选举如此耗时呢?因为Zookeeper要保证各个节点中数据的一致性,它会做两类数据同步:初始化同步与更新同步。可以看一下我上一篇讲ZAB的博客,Leader选举出来以后,Follower需要将Leader的数据同步到自己的缓存之中,这就是初始化同步。另外,如果Leader的数据被修改,Leader会给Follower发广播通知,然后各个Follower会主动去同步Leader更新的数据,这个就是更新同步。在这两个同步的过程中,Zookeeper为了保持数据一致性,如果发现有超过半数的Follower同步时间超时,它会再次进行同步,而这个过程中,集群是不可用的。
以上说的就是Zookeeper的致命问题,可用性低,因为它采取的是CP原则嘛。相较之下,SpringCloud的Eureka在分布式系统中的作用类似于Zookeeper,不过其采用的是AP原则,即牺牲一致性,换取可用性。
下一篇博客来做一下集群安装与搭建。

Zookeeper纸上谈兵——Zookeeper与CAP原则相关推荐

  1. 什么是分布式事务(CAP原则、BASE理论、2PC|3PC协议、XA|AT等模式)

    1.CAP原则 CAP原则是指:一致性©.可用性(A).分区容错性§,分布式系统一般进行三选二,比如: CA:保证一致性和可用性,在单机情况下实现: CP:保证一致性和分区容错性: AP:保证可用性和 ...

  2. 【Zookeeper】Zookeeper 管理文档

    Zookeeper 管理文档 文章目录 Zookeeper 管理文档 一.部署 1.1 系统要求 1.1.1 支持系统平台 1.1.2 支持情况 1.1.3 所需软件 1.2 集群(多服务器)部署 1 ...

  3. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么

    原文链接 什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是 ...

  4. 【分布式】1、CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  5. zookeeper  虚拟机zookeeper和 win10java代码连接

    28_支付服务注册进zookeeper       上面的都复习了 18 zookeeper替换Eureka zookeeper已经在你的centeros7上配置成功了   前提要求 19 20 21 ...

  6. ZooKeeper学习-- Zookeeper简单介绍

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技术.那么 ...

  7. 【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列

    前言 上文[从入门到放弃-ZooKeeper]ZooKeeper入门中,我们学习了ZooKeeper的简单安装和cli使用. 接下来我们开始基于java API的实战编程.本文先来写一个分布式队列的代 ...

  8. CAP 原则与 BASE 理论

    导航 引言 一.CAP 原则 1.1 Consistency 一致性 1.2 Available 可用性 1.3 Partition tolerance 分区容错性 1.4 CAP 的矛盾 1.5 C ...

  9. ZooKeeper Internals -- ZooKeeper内部工作方式

    ZooKeeper Internals 介绍 原子广播 保证,属性和定义 领导者激活 活动消息 摘要 比较 法定人数 记录 开发者指南 记录在正确的级别 使用标准的slf4j成语 介绍 本文档包含有关 ...

最新文章

  1. Vue+element UI实现“回到顶部”按钮组件
  2. Hibernate主键生成种类
  3. Office 2016 for Mac 15.24已推送至Office Insider慢速更新通道
  4. c语言is int number,C语言中NSInteger,NSNumber以及Int的区别
  5. 开发老人笔记:Git 常用命令清单
  6. 查看mysql数据用户权限_查看MYSQL数据库中所有用户及拥有权限
  7. (转)Arcgis for js加载天地图
  8. 作业6--第3、4、5天进度
  9. Erlang --- gen_server
  10. JAVA中如何产生透明的VolatileImage
  11. 利用TestDriven.net和NUnit进行单元测试(转)
  12. Ragel-基于有限状态机用于产生源码的编译器
  13. Qmail加装自动杀毒(转)
  14. R语言之决策树CART、C4.5算法
  15. Cesium基础知识-创建3D地球
  16. 安装doctrine
  17. MAC安装STAF详解
  18. PL/SQL 10G报错 Initialization error Oracle Client not properly installed OracleHomeKey: OralceHomeDir:
  19. Cantor表 [cantor]
  20. Kusto Query Language (KQL) 学习笔记

热门文章

  1. AppStore技术支持网站
  2. Origin同时画柱状图和折线图(解决图层问题)
  3. Docker+VSCode 配置属于自己的炼丹炉
  4. cp abe java_CP-ABE基于密文策略的属性加密(JAVA源码)
  5. Shellshock Attack SEED-LAB
  6. SpringBoot WebSocket RTP 视频实时监控
  7. 组合钻床液压系统设计、自动取料机械手、自动化立体仓库堆垛机设计、越野车双横臂式独立悬架设计、轴用弹性挡圈装配机的设计、BL200链板输送线、波状挡边带式输送机、加热炉装料悬臂辊道图纸、冷藏车……
  8. 东华软件测试题,东华大学软件测试作业整理
  9. 如何利用VBA自动生成PPT报告
  10. Centernet编译dcv2