目录

CAP概念

分区容错(Partition tolerance)

一致性(Consistency)

可用性(Availability)

一致性和可用性之间的矛盾

使用场景


CAP概念


单机系统由于所有的处理都在单机完成的,所以不存在数据一致性问题,但是如果系统崩溃了,就导致服务不可用。

分布式系统可以实现服务的高可用,现有的大型网站几乎都是分布式的,特别是微服务的出现,使得分布式系统正变得越来越重要。

分布式系统最大的难点,就是各个节点的状态如何同步。CAP原理给分布式系统的实现带来了指导思路,它也是理解分布式系统的重要理论。

CAP由以下三个指标组成:

C(Consistency):一致性

A(Availability):可用性

P(Partition tolerance):分区容错

CAP之间的关系,如图:

可以看出,CAP这三个指标不能同时做到。

分区容错(Partition tolerance)


分区容错,意思是允许分区之间的通信失败。

一般来说,网络的通信失败是无法避免的,如通信超时的情景:A区向B区发送请求,但是由于网络环境的随机复杂性,导致响应超时,这时A区并不知道B区的处理是否成功。

如图:

所以,分布式系统要允许分区之间通信的失败,也就是CAP中的P总是成立的,但是剩下的 C 和 A 是无法同时做到的。

一致性(Consistency)


一致性,意思是在一个分区进行写操作后,所有分区的数据都要保持一致的读操作。

如开始时,A区和B区的数据都为v0,客户端修改了A区的v0为v1,此时,客户端读取A区是v1,但是读取B区的还是v0,这就不满足一致性了。如图:

为了满足一致性,A区需要向B区发起数据同步操作,把B区的改成v1,这时,客户端读取任意一个分区,都返回一致性的数据v1。如图:

可用性(Availability)


可用性,意思是只要收到请求,系统就必须给出响应。

分布式系统有多个分区,即使有少数分区的服务崩溃了,还能继续提供服务,这就是服务的可用性。

一致性和可用性之间的矛盾


一致性和可用性不能同时做到的原因是:出现了分区容错,也就是可能通信失败。

如上例子,如果要保证B区的一致性,那么在A区进行写操作时,必须给B区的数据加上读写锁,在锁定期间,客户端不能读写该数据。只有数据同步后,才释放掉锁,B区才重新开放读写。这样,保证了一致性,但是没有了可用性。

如果要保证B区的可用性,就不能对B区加上读写锁,这样又缺少了一致性。

因此,一致性和可用性是不能同时做到的。在设计分布式系统时,如果追求一致性,那么无法保证所有分区的可用性;如果追求所有分区的可用性,那么就没法做到一致性。

使用场景


注重一致性:很多事务型的交易系统都要求具有一致性,如抢车票系统,同一时刻,所有用户看到的必须是最新的车票状态,不能是一部分用户看到有余票,另一部分用户看到无票。

注重可用性:CDN(内容发布网络)服务,网页的更新不是特别强调一致性,短期内,用户浏览到不同版本的网页,但是,最终所有人都能看到最新版本,也就是最终保持了一致性。

分布式CAP原理:一致性、可用性、分区容错相关推荐

  1. 分布式系统设计权衡之CAP(一致性,可用性,分区容错性)

    https://blog.csdn.net/Sun_P0/article/details/50221787 写在最前: 1.为什么学习并记录分布式设计理念一系列相关的东西 在日常工作中系统设计评审的时 ...

  2. 深入理解分布式CAP原理

    hi,大家好,互联网最重要任务莫过于海量数据处理,即大规模分布式系统(单机性能有限),分布式是互联网的核心技术,希望大家可以掌握. 什么是 CAP? 作者:聂鹏程,文章来源极客时间 --分布式技术原理 ...

  3. 分布式缓存原理——一致性hash算法(hash环)、Hash槽

    一.一致性哈希算法:一种特殊的哈希算法,目前主要应用于分布式缓存当中,可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题. 一致性Hash算法是对2^32取模,2^32个点组成的圆环称为Ha ...

  4. NOSQL的cap 原理

    传统的ACID是什么 1. A(Atomicity)原子性: 事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务中的所有操作都成功,只要有一个操作失败,整个事务失败,需要回滚. 2. C( ...

  5. RocketMQ分布式事务原理介绍

    RocketMQ实现分布式事务原理 1.知识准备 在系统架构从单体到分布式.SOA.微服务的发展过程中,因为流量的增多出现了大量消息堆积问题的需求,在这种背景下,阿里开发出rocketmq来解决该问题 ...

  6. CAP原理,分布式一致性算法,两阶段提交,三阶段提交,Paxos,Raft,zookeeper的选主过程,zab协议,顺序一致性,数据写入流程,节点状态,节点的角色

    我们知道,一般在分布式应用都有CAP准则: C Consistency, 一致性,分布式中的各个节点数据保持一致 A availability 可用性,任何时刻,分布式集群总是能够提供服务 P par ...

  7. base cap 分布式_分布式基础(1):CAP原理、BASE思想和最终一致性

    CAP,BASE和最终一致性是NoSQL数据库存在的三大基石. CAP C: Consistency 一致性 A: Availability 可用性(指的是快速获取数据) P: Tolerance o ...

  8. 了解CAP(一致性、可用性、分区容错性)

    CAP概念 CAP是一致性(Consistency).可用性(Availability).分区容错性(Partition Tolerance)的简称.     (1)一致性(C):保证"读& ...

  9. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

最新文章

  1. 七天快排优化真的存在!
  2. 深入理解java虚拟机gc_java底层:GC相关——深入理解java虚拟机
  3. 互联网薪资最新出炉,收藏了
  4. java--tomcat
  5. html页面调用高德地图,html前端使用高德地图入门教程,并在地图上标记位置-Go语言中文社区...
  6. 独家丨我在北工大看王校长吃热狗
  7. 2021京东商城APP手机模板 HTML+CSS+JavaScript
  8. html 苹果没有出现弹窗,苹果手机弹窗bug是什么情况?苹果手机为什么会出现弹窗bug要怎么解决?...
  9. app_start(‘com.ss.android.ugc.aweme‘) 打不开app 无反应 Activity not started, unable to resolve Intent {
  10. 浅谈韦达定理的“来龙去脉”
  11. 基于Java的网上作业批改系统
  12. 深入分析ConcurrentHashMap的源码设计(中)-hash冲突
  13. wxpython中表格顶角怎么设置_当wxGrid中的某个单元格以编程方式更改时,突出显示该行中的一行(使用wxPython)...
  14. 使用ORACLE DBCA创建数据库
  15. 计算机英语名词简释(转载)
  16. CVE-2020-0787复现
  17. SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ
  18. app版本更新 下载apk后没有跳转到安装页面
  19. JAVA转GO第一步,我跟着教程看了一遍基础知识
  20. 2021 vivo开发者大会安全专场:将数据安全贯穿品牌战略始终

热门文章

  1. spark pair RDD
  2. [Windows核心编程]堆
  3. TCP协议三次握手过程分析【图解,简单清晰】
  4. lua学习笔记(三)
  5. choices相当于实现一个简化版的外键
  6. Spring与SpringMVC的区别
  7. 转:Mac文件权限操作详细记录
  8. idea 常用设置初始化
  9. 《走出软件作坊》流水账
  10. ASP用正则验证邮箱地址手机号码电话号码格式