分布式数据库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 – 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

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

(0)


相关推荐

  • 从数据库中读取,实现省市区联动

    从数据库中读取,实现省市区联动

  • git的面试题_es面试题

    git的面试题_es面试题GIT常见面试题1. 列举工作中常用的几个git命令?新增文件的命令:gitaddfile或者gitadd.提交文件的命令:gitcommit–m或者gitcommit–a查看工作区状况:gitstatus–s拉取合并远程分支的操作:gitfetch/gitmerge或者gitpull查看提交记录命令:gitreflog2. 提交时发生冲突,你能解释冲突是…

  • CompoundButton(checkbox,switch,ToggleButton)和RadioGroup OnCheckedChangeListener() 引用冲突问题

    CompoundButton(checkbox,switch,ToggleButton)和RadioGroup OnCheckedChangeListener() 引用冲突问题在一个类中同时有CompoundButton和RadioGroup  vSwitch.setOnCheckedChangeListener(newOnCheckedChangeListener(){ @Override publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecke

  • zuul 网关的用途_Zuul网关

    zuul 网关的用途_Zuul网关Zuul的主要作用:1.路由,进行请求转发。2.鉴权,进行身份认证(安全)。3.限流,限制访问的数量,保证服务器的稳定。除此之外还有以下作用4.负载均衡。5.压力测试。6.监控1.Zuul简单使用1.添加依赖org.springframework.cloudspring-cloud-starter-netflix-zuul2.添加@EnableZuulProxy注解@EnableZuulProx…

  • CANoe/CANalyzer诊断功能的深入理解以及CAPL诊断编程实现

    CANoe/CANalyzer诊断功能的深入理解以及CAPL诊断编程实现之前和大家分享了CANoe的基础使用(分析、仿真、测试、诊断),这篇文章将继续深入探讨如何使用CANoe/CANalyzer中的诊断功能。诊断用于在将ECU安装到系统之前或之后配置,维护,支持,控制和扩展ECU,例如,一辆车。诊断通常在请求-响应方案中执行:测试仪(客户端)向…

  • ipfs是什么挖矿机制(目前最好的ipfs矿机)

    尽管近期市场正在复苏,但FIL仍在50U左右波动,并未出现太大波动,许多投资者都望而却步。IPFS/FIL不错。为什么货币价格不上涨?这种现象其实已经不正常了,价格的波动和数据的修改都不可能在正常的情况下处于正常的状态,相信华雷新山不会出现任何数字货币的不涨不跌,以前的程序员10年5月btc1万现在10。1000个比特币相当于4亿u。11年过去了,现在还不知道哪位程序员。btc用了将近11年的时间才证明了它的价值。对今天的大多数普通人来说,这是一个不能实现的梦想。eth的概念最初是Vita.

发表回复

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

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