分布式系统的CAP定理

CAP定理|理论

在一个分布式系统中,

  • Consistency(数据一致性)
  • Availability(服务可用性)
  • Partition tolerance(分区容错性)

三者不可兼得,最多只能同时满足二点,没法三者兼顾。


一致性(Consistency)

在分布式系统中的所有数据备份,在同一时刻是否具有相同的值(所有节点持有的是否都是同一份最新的数据)。

比如数据库主库写,从库读,用户完成支付再查询订单状态,主库执行写操作把订单状态改为了已支付,从从库查询订单状态时要是已支付,数据是一致的、同步的。

更新操作执行成功后所有的用户都应该读到最新的数据,即所有数据备份都是最新的数据,这样的系统被认为具有强一致性。

优点: 数据一致,数据不会出错;缺点: 效率低下。

  • 强一致性(strong consistency)

任何时刻,所有用户都能读取到最近一次成功更新的数据,所有用户读取的数据都是最新的。

  • ​ 单调一致性(monotonic consistency)

任何时刻,用户一旦读取到某个数据在某次更新后的值,就不会再读到比这个值更旧的值,即读取到的数据的版本是单调递增的。

  • 会话一致性(session consistency)

在某次会话中,用户一旦读取到某个数据在某次更新后的值,在本次会话中就不会再读取到比这个值更旧的值。

会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户、单个会话内的单调性,在不同用户或同一用户的不同会话之间则没有保障。

  • 最终一致性(eventual consistency)

不能保证用户读取到的是最近一次更新后的数据,但系统可以保证数据最终会达到完全一致的状态,只是所需时间不能保障。

  • 弱一致性(weak consistency)

用户无法在确定时间内读到最新的数据。

不满足强一致性,但一般都要使用一些方式(加锁),使数据具有最终一致性。

可用性(Availablity)

负载过大后,系统是否还能响应客户端的读写请求,响应指的是在正常时间内处理完请求。

比如原来qps(每秒访问量)是1000,现在涨到10000,依然能正常访问。

分区容错性(Partition-torlerance)

即高可用性,一个节点崩溃、故障,不会影响到其它节点。

怎么才能做到?增加机器数量,做集群,少数节点挂掉,集群整体依然可用。

集群节点越多,分区容错性越强,但完成这些机器数据同步花费的时间也越多,IO压力大,数据一致性越得不到保证(越差)。


满足CA,不满足p

满足A=>在指定时间内处理完请求,满足C=>完成机器的数据同步,要在指定时间内处理完请求、并完成数据同步,那集群的机器就得少(机器多了同步要花大量时间、时间不够),所以不满足P。

满足CP,不满足A

满足P=>集群、机器多,满足C=>数据同步、要花时间,机器又多、还要等这些机器完成数据同步才处理请求,那完成响应的时间就得不到保证,所以不满足A。

满足AP,不满足C

满足A=>指定时间内完成,满足P=>集群、机器多,机器又多、还要再指定时间内完成这些机器的数据同步,指定时间内数据可能复制不完、同步得不到保证,所以不满足C。


一台机器肯定是不行的,一旦发生什么故障,比如该服务器网络故障,系统就挂了。

一般都要做集群来保证分区容错性(P,高可用),所以往往是在A、C之间取舍。

ZK保证了数据一致性(C),但选举新的leader时集群不能对外提供服务,不满足可用性(A)。

Eureka保证了可用性(A),Eureka是去中心化的,集群每个节点的地位都是一样的,一个Eureka Server挂了,其它的Eureka Server不受影响,依然能对外提供服务,

但每个Erueka Server都需要从其它所有的Eureka Server上同步数据,容易受网络故障影响,网络波动一下数据就不一致了,不满足数据一致性(C)。

选择注册中心时,看项目对A、C中哪一个需求更高:

对C要求高的,比如银行的项目都涉及钱财,优先选择ZK。负载大了大不了用户访问不了,钱财好歹是安全的、账目好歹是对的。

对A要求高的,比如选课系统,高考、四六级查分,电商系统,负载大时依然要可用、扛得住,优先选Eureka。

(0)

相关推荐

  • 万字长文,助你吃透Eureka服务发现机制!

    前言 在前面几篇系列文章中,我们对微服务的基本概念.微服务的技术生态等,做了简单的阐述.对于分布式系统或微服务,服务发现是最基础.最核心.最不可缺的能力.然而许多人对服务发现有一种说不清,道不明,似懂 ...

  • 进来抄作业:分布式系统中保证高可用性的常用经验

    系统可用性指标 系统可用性指标简单来将就是系统可用时间与总运行时间之比 Availability=MTTF/(MTTF+MTTRMTTF) MTTF 是 Mean Time To Failure,指平 ...

  • 一、概述

    1.1 数据库环境 1.2RDBMS数据库管理系统(DBMS,Database Management System)是为管理数据库而设计的软件管理系统:当前最广泛的DBMS系统是RDBMS(Relat ...

  • 架构设计、分布式、数据结构与算法面试题

    来源:thinkwon.blog.csdn.net/article/details/105870730 架构设计 请列举出在JDK中几个常用的设计模式? 单例模式(Singleton pattern) ...

  • 第20讲:什么是数据一致性与 Saga 模式

    从本课时开始,我将开始介绍跨微服务的协作与查询,这一部分的内容主要涉及微服务之间的交互方式.由于每个微服务一般都各自独立存储数据,所以在不同微服务之间共享数据变得复杂.本课时将讲解微服务架构的应用中的 ...

  • 微服务架构的前世今生

    传统行业向互联网行业的转型 背景 2012年以后,因为移动互联网的兴起,随着网名数量的增多,需求变化大,用户群体大.导致已有的应用程序无法抗住大规模的并发,且版本迭代麻烦,扩展不够灵活,应对外界环境能 ...

  • spring cloud 之 -- eureka vs consul,该选择谁?

    0--前言 spring cloud的服务注册中心,该选择谁?在选择前,我们首先需要来了解下分布式的CAP定理: 所谓CAP,是指: Consistency:一致性:就是在分布式系统中的所有数据备份, ...

  • 征服一个女人的最好方式:蓝柏格定理

    谷翠娱乐关注2021-04-23 16:55大图模式蓝柏格定理,是由美国银行家路易斯·B·蓝柏格提出的,定理强调压力与动力是并存的,压力可以转化成动力.当我们面对压力的时候,要保持积极乐观的想心态,并 ...

  • 初中数学辅助线:圆中的辅助线-垂径定理

    掌握思路分析方法,胜过做千道题! 推荐: 划分做题区域:愉悦区.奋战区和极限区 原创专题:学习方法策略技巧 初中数学解题思路 圆中的辅助线-垂径定理 [基本模型1] [基本模型2] [基本模型3] [ ...

  • 记住毕克定理 秒杀所有不规则图形面积

    记住毕克定理 秒杀所有不规则图形面积

  • 高中物理:记住这85条定理,高效解题,秒出答案

    中物理习题中,我们常会碰到象数学中的由某个定理推出一些在一定条件下或在某些范围内适用的推论的情况,这些推论称为物理中的习题"定理".若能从基本的物理概念规律出发推导出这些" ...

  • 千古不变的定理的中国文化:三生万物,逢七必变

    中国几千年的历史发展中,有许多东西以及定理都是极为深奥的.它非比寻常,却一直流传至今.这是人文发展的定律,还是大自然无穷的奥妙呢?我们都有句千古不变的定理中国文化:三生万物,逢七必变. 三生万物逢七必 ...

  • 哥德尔定理注定了人类无法完全地描述自然,它能否杀死物理学?

    库尔特·哥德尔的不完全性定理与物理学之间的精确关系是物理学家和哲学家经常讨论的问题. 这里有一个例子,它可以被认为是哥德尔的第一个不完备定理和(量子)物理学之间的一个非常紧密的联系: 我们展示了哥德尔 ...

  • 七年级数学三角形:内角和、外角、外角和定理,必考内容

    i初中数学 公众号 学习几何之后,以平行为基础,便可继续推导几何图形中的一些结论,比如三角形的角的三个基本结论.今天,王老师和大家分享的就是七年级数学三角形:内角和.外角.外角和定理,必考内容,抓紧收 ...

  • 思维与机器:哥德尔不完全性定理的哲学推论,人脑无限超越机器

    加拿大数学家西蒙柯亨在他对哥德尔的致敬中回忆道: 在博士考试中,我被要求写出5个哥德尔定理.这个问题的实质是,每一个定理要么催生了一个新的分支,要么彻底改变了现代数学逻辑.证明理论.模型理论.递归理论 ...

  • 一个新定理揭示了量子物理学的极限,至少有一个“现实”是错误的

    在量子力学中什么是观察者?原子能成为观察者吗?病毒可以是观察者吗?人工智能呢? 量子力学的奠基人认为它非常非常怪异.举例来说,阿尔伯特·爱因斯坦生前就坚信,该理论只能是对自然进行更完整描述的踏脚石,这 ...