CAP 原理[通俗易懂]

CAP 原理[通俗易懂]简单记录下分布式数据库的CAP原理

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述

  • Consistency:强一致性
  • Availability:可用性
  • Partition tolerance:分区容错性

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,
最多只能同时较好的满足两个

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:

  • CA :单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大
  • CP:满足一致性,分区容忍必的系统,通常性能不是特别高
  • AP:满足可用性,分区容忍性的系统,通常可能对一致性要求低一些

由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的

  • CA:传统Oracle数据库

  • AP:大多数网站架构的选择

  • CP:Redis、Mongodb

注意:分布式架构的时候必须做出取舍,一致性和可用性之间取一个平衡。对于大多数 web 应用,其实并不需要强一致性。因此牺牲 C 换取 P,这是目前分布式数据库产品的方向。

一致性与可用性的决择

对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地

  • 数据库事务一致性需求
      很多 web 实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不高。允许实现最终一致性。

  • 数据库的写实时性和读实时性需求
      对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。

  • 对复杂的SQL查询,特别是多表关联查询的需求
      任何大数据量的 web 系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是 SNS 类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

BASE 就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。BASE其实是下面三个术语的缩写:

  • 基本可用(Basically Available)
  • 软状态(Soft state)
  • 最终一致(Eventually consistent)

它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里 BASE 就是解决这个问题的办法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144255.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS数组合并(5种)[通俗易懂]

    JS数组合并(5种)[通俗易懂]前言项目过程中,经常会遇到JS数组合并的情况,时常为这个纠结。这里整理一下。简单而实用的for最容易想到的莫过于for了。会变更原数组,当然也可以写成生成新数组的形式。letarr=[1,2]letarr2=[3,4]for(letiinarr2){arr.push(arr2[i])}console.log(arr)//[1,2,3,4]arr.concat(arr2)会生成新的数组。letarr=[1,2]let

    2022年6月30日
    39
  • 华为、深圳、十年Android程序员:“我不干了!!!!”

    华为、深圳、十年Android程序员:“我不干了!!!!”前言我的大学室友将他深圳60平的房子卖了800万,然后花260万在成都买了130平的精装房,40万买了一辆奥迪,还剩500万存到了银行,正式从特区又杀回了四川。室友说,我的10年青春,换来的真金白银,就是这500万的现金。从今年开始,我一定可以过真真正正的生活,享受生活,而绝不再是被生活鞭打着向前走。我和室友的母校,是一所以电信工程闻名的985大学。2011年本科毕业,我留在了成都,室友则南下深圳入职华为,当年起薪15万。室友如何挣下一套房2015年7月,工作4年后,室友攒下了50万元,其中有近.

    2022年6月14日
    54
  • 小精灵无尽的长廊_绝顶高手的养成日常

    小精灵无尽的长廊_绝顶高手的养成日常推荐:巫医觉醒https://www.guibuyu.org/。华夏北方,临近东海的不知名小城里,有绵延不尽的山峰耸立。其中一座,造型独特,神似一位席地而坐头戴鹤勉的君王模样,被当地的村名唤作“唐王山寨”。唐王山寨并不算高,只有大约300米的高度,在山峰环绕的小城里,不太显眼。正值夏季,正午的灼热阳光肆意挥洒,通往唐王山寨的油柏小路,蒸腾出肉眼可见的水雾,和着沥青独有的气息,飘荡远方。沿着小路一路…

    2022年6月4日
    265
  • 蓝桥杯集锦01(python3)

    蓝桥杯集锦01(python3)

    2021年4月14日
    182
  • cas与乐观锁(jpa乐观锁)

    独占锁是一种悲观锁,synchronized就是一种独占锁;它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起直到持有锁的线程释放锁。所谓乐观锁就是每次不加锁,假设没有冲突而去完成某项操作;如果发生冲突了那就去重试,直到成功为止。CAS(CompareAndSwap)是一种有名的无锁算法。CAS算法是乐观锁的一种实现。CAS有3个操作数,内…

    2022年4月15日
    215
  • POJ–2289–Jamie's Contact Groups【二分图的多个匹配+二分法答案】

    POJ–2289–Jamie's Contact Groups【二分图的多个匹配+二分法答案】

    2022年1月9日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号