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 就是解决这个问题的办法

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 四足机器人|机器狗|仿生机器人|多足机器人|Adams仿真|Simulink仿真|基于CPG的四足机器人Simulink与Adams虚拟样机|源码可直接执行|绝对干货!需要资料及指导的可以联系我!

    四足机器人|机器狗|仿生机器人|多足机器人|Adams仿真|Simulink仿真|基于CPG的四足机器人Simulink与Adams虚拟样机|源码可直接执行|绝对干货!需要资料及指导的可以联系我!四足机器人、行走控制。附带源码及虚拟样机设计方案。针对目前仿生四足机器人控制中存在的稳定性低、控制精度不高、可控性差等问题,本文引入一种基于CPG(中央模式发生器)的步态控制算法模型,CPG生成的节律运动具有独立性与稳定性,还具有反馈调整功能,对波形调制处理后,能够实现仿生机器人的前进、后退、转弯、侧移、原地踏步等运动控制。针对仿生机器人研发周期长与成本高的问题,本课题利用Simulink与Adams构建虚拟样机对步态控制模型进行联合仿真验证。

  • jsp include与include

    jsp include与includeinclude是翻译是进行合并,然后对合并文件进行编译jsp:include是分别编译,然后对二进制文件合并

  • 读取金税盘数据库_一种基于金税盘控制系统登录和数据同步的方法与流程

    读取金税盘数据库_一种基于金税盘控制系统登录和数据同步的方法与流程本发明涉及税务开票领域,更具体地,涉及一种基于金税盘控制系统登录和数据同步的方法。背景技术:在以往的增值税销方开票操作中,销方用户在执行开票操作时,往往会出现当前用户信息与所使用的金税盘信息不匹配的情况,从而导致开票失败,需要调整用户数据或者更换金税盘。另外,系统中缺少对用户使用的金税盘数据的收集,无法有效的管理记录金税盘的使用情况,而且销方用户对应的库存信息和发票信息也存在数据不全的情况。技术实…

  • 100道最新Java面试题,常见面试题及答案汇总

    除了掌握扎实的专业技能之外,你还需要一份《Java程序员面试宝典》才能在万千面试者中杀出重围,成功拿下offer。小编特意整理了100道Java面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧码住吧~~Q1:Java内部类和子类之间有什么区别?答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。Q2:Java语言中有哪些

  • java基础题目_40道java基础练习题,你会卡在哪道题?

    java基础题目_40道java基础练习题,你会卡在哪道题?1表达式5.3+(int)(8.5+4.6)/3%4的值是(5.3)。2表示圆周率的常量是(Math.PI)。3使用关键字(boolean)来定义逻辑变量。4执行语句inta,b,c;a=1;b=3;c=(a+b>3?++a:b++);后,b的值为(3)。5表示换行符的字符常量是(”)。6若reader是一个Scanner类的对象,读取一个字符串(以…

  • 除了 P 站,还有哪些站?

    除了 P 站,还有哪些站?说p站,估计不知道的人已经很少了,不过今天搜罗君要说是,除了p站还有哪些站?我盲猜,应该很多人思考过这个问题了~咱们按照英文字母顺序ABCD···XYZ来说1.A站AcFun,中国第…

发表回复

您的电子邮箱地址不会被公开。

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