CAP原理

定义

在一个分布式系统(指系统中的节点互相连接并共享数据)中,当涉及读写操作时,只能保证一致性 (Consistency)、可用性 (Availability)、分区容错性 (Partition Tolerance)三者中的两个,另外一个必须被牺牲。

  • 一致性:CAP中的C和ACID 中的C不是一个含义,ACID 中的C是指数据库中的数据满足一定的约束条件。而CAP中的C是指线性一致性,即:客户端向系统写入什么,那么读出来的也会是什么。也就是要保证客户端读取到的数据一定是上次写入的最新数据。
  • 可用性:指系统中的部分节点出现故障后,系统能否还能对外提供完全可用的服务;
  • 分区容错性:指是否允许系统中的节点之间无法通信,也就是无法互相连接;

适用场景

那么什么样的分布式系统是节点之间互联并共享数据呢?

典型的场景就是数据库的主从集群,一个数据库集群有一个主,多个从,主从之间会进行数据复制。所以适用于CAP原理。

那么如果我现在是一个Redis的集群,集群中每台机器存储不同的数据,集群中每台机器不需要复制和传递数据,那么就不属于CAP原理的讨论范围。同理,如果是A,B两个不同的业务系统,比如招行账号A给工行账号B转账100元,由于招行和工行是两个不同的业务系统,业务上隔离,且他们之间也没有共享的数据,从而也不属于CAP原理的讨论范围。

场景方案选择

  • 传统数据库主从集群:如果当前是一个现在是一个主从复制的数据库集群,同一条数据会在主从数据库上都存储,那么当存在主从数据库之间网络断开时,我们确实只能要么选择A放弃C,要么选择C放弃A。选择A放弃C,就是客户端读取到的可能不是最新的数据,但是系统持续可用;选择C放弃A,就是让系统服务不可用,客户端自然就不会认为数据不一致了。
  • 分布式数据库,如阿里的OceanBase,这种数据库也是一个主从的集群,但是主从节点往往使用Paxos/Raft等副本一致性协议,做到整个数据库系统,在部分节点发生故障时,也能在很短的时间内自动重新选主,选出一个新的主从集群的数据库系统。在重新选主的过程中,系统不可用,相当于放弃了A,而一旦选出新的主之后,系统又继续可用,且数据对外是线性一致的。相比传统的数据库主从集群,分布式数据库由于可以在遇到网络分区导致数据库主从节点之间无法互联时,可以快速选出新的主,然后快速恢复,所以架构设计上和用户体验上,要好很多。但是系统设计的复杂度也非常高。

分布式事务

通过上面的分析,我们知道CAP中的数据一致性,本质上是为了维护同一个数据的不同副本之间的一致性。而更多的时候,我们要解决的是不同业务系统之间的数据一致性,即数据之间总是应该满足规定的业务规则。典型的场景比如有跨行转账、订单和减库存。这种场景,由于没有数据共享的特征,所以不适用于CAP。比如A银行的账户给B银行的账户转账100元,那么转账前后,两个账户的钱加起来应该不变。也就是A扣款了,B就必须加款。那么这种场景如何解决呢?一般的做法是采用分布式事务,常见的分布式事务的解决方案有:2PC\3PC、TCC、基于分布式MQ+本地消息、分布式MQ事务消息、Sagas。

(0)

相关推荐

  • 支付宝架构师眼中的高并发架构——1

    链接: 前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素, ...

  • 什么是集群,集群的概念介绍

    集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机.PC 服务器. 服务实体:服务实体通常指服务软体和服务硬体. 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点 ...

  • [Redis] 万字长文带你总结Redis,助你面试升级打怪

    文章目录 Redis的介绍.优缺点.使用场景 Linux中的安装 常用命令 Redis各个数据类型及其使用场景 Redis字符串(String) Redis哈希(Hash) Redis列表(List) ...

  • 数据库容灾技术

    数据库容灾技术与数据库的容灾架构紧密相关,在设计数据库容灾技术时,除了要考虑数据库容灾架构还要对数据的备份.恢复.传输等具体操作的实现细节.一套完整的数据库容灾技术既要有采用数据备份保护和恢复数据的功 ...

  • Java分布式面试题集合

    (给ImportNew加星标,提高Java技能) 转自:乐知者, 链接:cnblogs.com/expiator/p/10201004.html 分布式分为分布式缓存(Redis).分布式锁(Redi ...

  • cap等词的语音教学,怎么教才符合原理?

    微友:凌老师,请问PEP三年级下册教单词时,是教发音还是拼读呢?还是两个都一起教?万分感谢! 凌哥:您好,凌哥没读懂您说的"发音"和"拼读".具体指什么做法呢? ...

  • 世界微笑日 | “笑一笑,十年少”的心理学原理

    迪香式微笑 法国的一位医生迪香曾在1860年做过个实验.他用适度的电极电流刺激实验者的面部肌肉,看不同的肌肉动作可以产生什么样的表情.记录发现,人们微笑的时候动用了三块肌肉:嘴角肌.颧骨肌和眼角肌.嘴 ...

  • 【感应式IC卡】S50卡技术资料和工作原理

             S50卡,采用NXP MF1 IC S50制作的非接触智能卡,通常简称S50卡.Mifare 1K卡.M1卡或直接简称感应式IC卡,符合ISO14443A标准,拥有4字节UID号,是 ...

  • 考前冲刺 | 2021年高考政治之《生活与哲学》常考原理及方法论,收藏必背~

    来源:本文转自[好好向上高中政治],对作者的付出表示衷心感谢,如有不当,我们会第一时间删除.

  • 一文轻松看懂区块链的工作原理

    作者注:这篇文章是写给非计算机专业的朋友的科普文,尽量避开了比较专业的细节.如果你是计算机相关专业,或者具备一定数据结构.算法.密码学的知识,建议直接看文末参考资料中的三篇博文,或者更专业的资料. 区 ...

  • 省煤器原理动画

    省煤器原理动画

  • 同样的步骤和调味,为何炒的菜不好吃?你可能没注意这4个烹饪原理

    不过很多很多时候我们按照教学的步骤,以及调味料施用的量来做菜,但是结果却老是差强人意,这不是教做饭的人有所保留,那很可能是因为你没有注意烹饪中的这4个原理. 热锅凉油 热锅凉油是中式烹饪中最常见的烹调 ...

  • 【夏宇聊交易】技术指标从原理到应用总结(下)

    技术指标:从原理到应用总结 25 4月25日的那一期,我们总结了技术分析指标的分类,并以均线,MACD为例分别分析了均值类算法指标,与差值类算法指标的特征和共性.这一期我们将对技术指标里另一类算法-- ...

  • 声哑的原理与中医的治疗疗     中医在...

    声哑的原理与中医的治疗疗      中医在治疗声哑的时候一般都归咎于肺,肺属金,有句话讲,金实则不鸣,金破也不鸣,那意思就是说,有外感.肺实热者和肺阴.肺气亏虚者都会导致声喑.声音嘶哑,重的干脆发不出 ...