导航

  • 引言
  • 一、CAP 原则
    • 1.1 Consistency 一致性
    • 1.2 Available 可用性
    • 1.3 Partition tolerance 分区容错性
    • 1.4 CAP 的矛盾
    • 1.5 CAP 的组合场景
  • 二、BASE 理论
    • 2.1 基本可用
    • 2.2 软状态
    • 2.3 最终一致性
      • 2.3.1 因果一致性
      • 2.3.2 读自身所写
      • 2.3.3 会话一致性
      • 2.3.4 单调读一致性
      • 2.3.5 单调写一致性
  • 总结

引言

本文介绍CAP原则和BASE理论。二者是分布式系统中重要的参考原则及指导方针。

其中 CAP 是由加州大学的计算机科学家 Eric Brewer 于1998 年提出,代表了分布式系统的三个重要指标

一、CAP 原则

CAP 是 Consistency 、Availability、Partition tolerance 的首字母缩写。所谓CAP原则,简单的说就是不可能存在CAP,即如下图所示,CAP 三个指标只能实现其中两个,而永远无法三者兼具

1.1 Consistency 一致性

在系统中的所有数据备份,在同一时刻要保持同样的值。

1.2 Available 可用性

在集群系统中,一部分节点故障后,集群整体依然可以响应外界请求。

简单来说,只要用户发起请求,系统就必须及时响应。响应的越快,可用性越好

1.3 Partition tolerance 分区容错性

分区指的是分布式系统中的多个网络节点之间无法通信,导致分布在不同网络中的应用无法访问“失联的”数据

解决分区问题的最好办法就是给数据备份,备份在不同的网络中,这样,当网络通信出现故障,就会降低数据访问不到的风险提高了分区容错性

1.4 CAP 的矛盾

一般来说,分区问题无法避免,只能采用备份数据的方式尽可能提高分区容错性。因此可以认为 CAP 中的 P 总是要具备的。CAP 原则告诉我们,剩下的 C 和 A 无法兼得

简单来说,为了提高分区容错性,数据的备份是必要的,备份的数量越多,容错性越好,但备份的越多,保证一致性就越困难,也势必就影响系统整体的响应速度(可用性)。

但是,根据不同的业务场景,CAP 三者可以达到一种平衡关系。

1.5 CAP 的组合场景

  1. CA:不允许分区的组合方式,舍弃了分区容错性。则 C (一致性)和 A(可用性)可以保证。但放弃 P 的同时也意味着放弃了系统扩展性,即限制分布式节点,这违背了分布式系统设计的初衷。满足CA 组合的系统例如传统的单体应用。
  2. CP:不要求 A(可用性),相当于数据需要保证较强的一致性。而 P (分区)会导致系统响应时间的延长,一旦发生网络故障或消息丢失等情况,就要牺牲用户体验。最典型的就是分布式系统,如传统数据库 MySQL,各种金融业务场景也需要优先保证CP指标,也可以算作是CP组合。
  3. AP:放弃一致性,追求更高的系统响应。一旦分区发生,节点之间的数据无法保持一致,为了高可用,每个节点只能使用本地数据提供服务。最典型的场景就是电商系统,同一个商品可能前一秒还库存充足,但秒杀一开始,刚准备下单,就提示下单失败,商品已售完。Redis也是一种AP分布式结构。

二、BASE 理论

BASE 是 Basically Available(基本可用)、Soft state(软状态)、Eventually Consistent(最终一致性)三个短语的缩写。

BASE 是对大规模互联网分布式系统的实践结论,是对 CAP 中 C 一致性 和 A 可用性的权衡策略
核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

2.1 基本可用

基本可用指的是,当系统出现故障,部分节点无法正常工作,可以允许牺牲一定程度的用户体验,但绝不允许系统完全不可用。

  • 响应时间:正常情况,一个在线搜索引擎需要 0.5 秒内返回查询结果,但由于出现异常,查询时间增加到 1 ~ 2 秒。
  • 功能:正常情况,在一个电商系统购物,消费者几乎可以顺利完成每一笔订单,但是由于异常,或消费者数量激增,为了保证系统的稳定性,部分消费者可能会被引导到一个降级页面。

2.2 软状态

什么是软状态呢?相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种“硬状态”。

软状态指的是:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延迟

2.3 最终一致性

软状态允许数据备份延迟,但最终这些数据都要保证一致性。这就是最终一致性。

最终一致性在软状态上加了一个时限,这个时限取决于网络延时、系统负载、数据复制方案设计等。根据实际的业务场景,最终一致性可被分为以下 5 种。

2.3.1 因果一致性

有果必有因。收到数据更新通知的节点,应该使用更新后的新值,即种下什么因,就得什么果。

例如,服务A更新了一个数据后,通知给了服务B,那么服务B如果要操作这个数据,应该使用 A 更新后的新值。如果 C 和 A没有这种关系,那么可以不受这一条件的限制。

2.3.2 读自身所写

自身写入的新值,之后读取也应该是这个新值。这是一种特殊的因果一致性。

2.3.3 会话一致性

会话一致性将对系统数据的访问过程框定在了一个会话当中:系统能保证在同一个有效的会话中实现“读自身所写”的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值。

2.3.4 单调读一致性

单调读一致性是指,如果一个节点从系统中读取出一个数据项的某个值后,那么系统对于该节点后续的任何数据访问都不应该返回更旧的值。

2.3.5 单调写一致性

单调写一致性是指,一个系统要能够保证来自同一个节点的写操作被顺序的执行。

在实践中,这5种一致性往往会结合使用,以构建一个具有最终一致性的分布式系统

总结

CAP 原则,分布式系统参考的三个重要指标。具体是指 Consistency 一致性、Availability 可用性、Partition tolerance 分区容错性

CAP 原则指出,在一个分布式系统中,不可能同时满足三者,而分区容错性一般是必须具备的重要指标,这也是分布式系统的初衷,因此,实际的业务架构设计中,往往都是对 C 一致性 和 A 可用性的权衡和取舍。

三种类型组合的常见案例:

1、CA :破坏了分布式系统的设计初衷,单体应用。
2、CP :传统数据库如 MySQL、各种涉及到银行、金融的交易系统。要求较高的一致性,舍弃用户体验。
3、AP :电商系统,秒杀等业务场景。但数据会实现最终一致性,追求用户体验的响应性,舍弃一部分实时的一致性,如 Redis 。

BASE 理论,是对CAP实践的进一步指导方针。是基本可用、软状态、最终一致性三个英文单词的缩写。

基本可用:顾名思义,即系统允许牺牲一部分用户体验,但决不允许系统无法响应,甚至崩溃。

软状态:允许系统中的备份数据存在中间状态,但也必须是不影响整体系统功能的前提下,即数据备份允许延迟。

最终一致性:在软状态之上增加了时限,要努力达到数据最终是一致的。5 种最终一致性:因果、读自写、会话、单调读、单调写。

CAP 原则与 BASE 理论相关推荐

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

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

  2. 【分布式】CAP原则和BASE理论

    CAP原则概述 C=Consistency=一致性 A=Availability=可用性 P=Partition tolerance=分区容错性 1998年,加州大学的计算机科学家Eric Brewe ...

  3. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  4. 深入理解分布式、微服务中CAP定律和BASE理论

    一.背景 随着互联网的快速蔓延,各种传统项目(单体应用的架构)已经不能够满足当前各种复杂的需求场景,都逐渐向分布式服务.微服务做转换,而如今分布式.微服务架构已经普遍存在互联网公司的项目中,像大型电商 ...

  5. CAP定理与BASE理论

    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...

  6. 分布式系统理论 - CAP定理和BASE理论

    分布式系统理论 - CAP定理和BASE理论 分布式系统理论 - CAP定理和BASE理论 一.前言 二.CAP定理 2.1.概述 2.2.一致性(C:Consistency) 2.3.可用性(A:A ...

  7. CAP定理和BASE理论

    CAP定理和BASE理论 一.CAP定理是什么? 二.BASE理论是什么? 一.CAP定理是什么? CAP定理:在一个分布式系统中,最多只能同时满足一致性.可用性和分区容错性这三项中的两项. C:一致 ...

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

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

  9. 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较

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

最新文章

  1. python 链式比较 2._特色的Python序列解包、链式赋值、链式比较
  2. pthread和互斥量条件变量函数意义速查表
  3. python计算程序运行时间
  4. Jupyter的安装和基本使用
  5. 万达影视发布声明:不存在所谓的从《流浪地球》撤资
  6. volatile分析
  7. windows下的git配置,puttygen.exe生成公钥
  8. 鼠标失灵c语言代码,[转载]键盘和鼠标操作失灵代码
  9. win10c盘扩容_系统C盘满了空间不足的扩容?
  10. npm 安装出现 UNMET DEPENDENCY 的解决方案
  11. oracle导出数据库dmp文件
  12. 视觉单目标跟踪任务概述
  13. 内网环路怎么解决_记录一次局域网突发网络环路处理过程——全是血泪
  14. 改善脑力的70条方法[翻译]
  15. 计算机联锁标准站检测,计算机联锁设备专项测试研究.pdf
  16. tkinter-TinUI-xml实战(6)问卷
  17. 【C语言】log,对数函数的使用
  18. 联想机器硬刷MARKER的方法及slic2.0、slic2.1大全下载(ZT)
  19. 品牌网站网站建设方案
  20. 张朝阳:如果超新浪 我会很骄傲

热门文章

  1. Java SimpleTimeZone setStartRule()方法与示例
  2. zoj 1006 do the untwist
  3. C++ SVM Opencv3.4实现人脸检测
  4. IPFS搭建HTTPS去中心化网站,真实可用
  5. Linux利用nginx-gridfs搭建部署Nginx和MongoDB文件服务器,支持用户密码验证!
  6. 基于SpringMVC进行REST服务开发
  7. C#从构造函数中调用其他构造函数
  8. 485通讯线是几芯的_小令老师说门禁| 为什么485门禁必然会取代韦根?
  9. kali装电脑_教你Kali Linux怎么安装Nessus软件
  10. android activity动态显示不出来,uiautomatorviewer 获取不到动态页面解决办法