分布式数据库CAP原理

分布式数据库CAP原理分布式数据库CAP原理CAP简介CAP理论CAP总结CAP简介传统的关系型数据库事务具备ACID:(1)A:原子性(2)C:一致性(3)I:独立性(4)D:持久性分布式数据库的CAP:(1)C(Consistency):强一致性“allnodesseethesamedataatthesametime”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新

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

分布式数据库CAP原理

CAP简介

  • 传统的关系型数据库事务具备ACID
    (1)A :原子性
    (2)C :一致性
    (3)I :独立性
    (4)D :持久性
  • 分布式数据库的CAP:
    (1)C(Consistency):强一致性
    “all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
    (2)A(Availability):高可用性
    可用性指“Reads and writes always succeed”,即服务一直可用,而且要是正常的响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
    (3)P(Partition tolerance):分区容错性
    即分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性或可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。

CAP理论

  • CAP理论提出就是针对分布式数据库环境的,所以,P这个属性必须容忍它的存在,而且是必须具备的。
  • 因为P是必须的,那么我们需要选择的就是A和C
  • 大家知道,在分布式环境下,为了保证系统可用性,通常都采取了复制的方式,避免一个节点损坏,导致系统不可用。那么就出现了每个节点上的数据出现了很多个副本的情况,而数据从一个节点复制到另外的节点时需要时间和要求网络畅通的,所以,当P发生时,也就是无法向某个节点复制数据时,这时候你有两个选择:
    (1)选择可用性 A,此时,那个失去联系的节点依然可以向系统提供服务,不过它的数据就不能保证是同步的了(失去了C属性)。
    (2)选择一致性C,为了保证数据库的一致性,我们必须等待失去联系的节点恢复过来,在这个过程中,那个节点是不允许对外提供服务的,这时候系统处于不可用状态(失去了A属性)。
  • 最常见的例子是读写分离,某个节点负责写入数据,然后将数据同步到其它节点,其它节点提供读取的服务,当两个节点出现通信问题时,你就面临着选择A(继续提供服务,但是数据不保证准确),C(用户处于等待状态,一直等到数据同步完成)。

CAP总结

  • 分区是常态,不可避免,三者不可共存
  • 可用性和一致性是一对冤家
    一致性高,可用性低
    一致性低,可用性高
  • 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
    (1)CA – 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    (2)CP – 满足一致性,分区容忍性的系统,通常性能不是特别高。
    (3)AP – 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 3D相机技术 | 立体视觉传感器+TOF相机「建议收藏」

    3D相机技术 | 立体视觉传感器+TOF相机「建议收藏」转自|睿慕课文章结构前言立体视觉传感器原理简介工业领域应用主流立体视觉的产品TOF相机工作原理TOF工业领域应用一些TOF研究机构1.前言在机器视觉应用中,物体三维形状的获取变得越来…

    2022年5月9日
    132
  • 3分钟搞定下载微信视频号视频!无需第三方软件,亲测有效!

    3分钟搞定下载微信视频号视频!无需第三方软件,亲测有效!2020年是视频号的元年,现在2021视频号还处在发展初期,但是它的潜力是巨大的,将来的价值会超过抖音。你在视频号上点赞的视频,你的好友都会看到,这一点非常有利于营销推广。但抖音上的粉丝和微信联系人是割裂的,我们所有的社交关系都在微信上。但是视频号的短视频内容无法像抖音、快手一样,保存本地或者复制作品链接进行解析下载。有没有其他小技巧能绕过视频号未完善的功能,直接保存视频内容呢?当然有,请记住一句话,在android的系统中,视频是所见即所得本文只针对android系统,不需要借助任何第三方软件,

    2022年6月17日
    49
  • Python中sys模块

    sys-系统特定的参数和功能该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。sys.argv传递给Python脚本的命令行参数列表。argv[0]是脚本名称(依赖于操作系统,无论这是否是完整路径名)。如果使用-c解释器的命令行选项执行命令,argv[0]则将其设置为字符串’-c’。如果没有脚本名称传递给Python解释器,argv[0]则为空字符串…

    2022年4月5日
    50
  • idea 安装教程_复合门安装视频完整版

    idea 安装教程_复合门安装视频完整版IDEA的安装教程

    2022年10月2日
    3
  • vue中map用法_vue里面的meta用法

    vue中map用法_vue里面的meta用法后端给我返回格式是这样[‘2018-8-14’,‘2018-8-14’]但是我是想要{date:“2018/08/13”,title:“”}{date:“2018/08/14”,title:“”}这样的格式一段代码搞定letarr=res.data;letnewArr=arr.map(val=>{…

    2025年10月9日
    5
  • linux下rar包的解压方法

    linux下rar包的解压方法一widonds下打包rar文件并上传二下载并安装rar软件三rar命令语法四具体例子五更多命令查看帮助一.widonds下打包rar文件并上传yuminstalllrzszrztest.rar二、下载并安装rar软件2.1下载mkdir-p/home/oldboy/toolscd/home/oldboy/toolswgethttp://www.rarlab.c

    2022年7月11日
    28

发表回复

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

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