cap定理指的是,在一个分布式系统中,只能满足cap中的两项。

C consistency 一致性

A availability 可用性

P partition tolerance 分区可容错性 --在任意分区网络故障的情况下系统仍能继续运行

网络并不可靠,所以你应要支持分区容错性,并需要在软件可用性和一致性间做出取舍。

为何不能同时满足C和A

  1. 一般分布式系统中首先都要保证P(分区可容错性)
  2. 一致性指的是所有的节点返回的数据都是一致的
  3. 可用性指的是服务器在正常响应时间内可用
  4. 假设分布式系统有两个服务A和B,在A服务修改用户名admin,改成user
  5. 如果要满足一致性,即所有节点返回数据都是一致,访问B服务时,在A服务修改数据期间,需要锁定B服务读和写操作,修改完成后A和B服务返回都是更新后的数据,这样就不能保证可用性(因为有锁定时间)。
  6. 如果要保证可以性,在修改数据期间就不能锁定B服务的读和写操作,这样修改后,A返回更新后的数据,B返回旧数据,不满足一致性。

应用

  1. 一致性

    • 在系统中对数据比较敏感的数据,比如商品的价格,库存,需要保证一致性,放弃可用性。
  2. 可用性
    • 对于对数据不太敏感的数据,比如商品的名称,用户头像,昵称不敏感的数据,需要保证可用性,放弃一致性。
    • 网页的更新

参考

分布式定理--CAP定理的更多相关文章

  1. 分布式CAP定理,为什么不能同时满足三个特性?

    在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...

  2. 分布式CAP定理(转)

    在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...

  3. CAP定理

    from wikipedia CAP定理 CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致 ...

  4. 关于ACID,BASE和CAP定理的探究

    前言 当我看到"根据CAP理论,由于分布式系统必须保证分区容错性,所以只能选择AP原则或者CP原则"这种结论时,我感到很疑惑: 什么是分区容错性? 为什么分布式系统必须保证分区容错 ...

  5. 分布式理论 之 CAP 定理

    -----------------------------------------------------入巷间吃汤面 笑看窗边飞雪. 目录: 什么是 CAP 定理 为什么只能 3 选 2 能不能解决 ...

  6. 【分布式】1、CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  7. 分布式理论(一) —— CAP 定理

    目录: 什么是 CAP 定理 为什么只能 3 选 2 能不能解决 3 选 2 的问题 引用 1. 什么是 CAP 定理 2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 ...

  8. 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  9. 浅谈分布式CAP定理

    互联网发展到现在,由于数据量大.操作并发高等问题,大部分网站项目都采用分布式的架构.而分布式系统最大的特点数据分散,在不同网络节点在某些时刻(数据未同步完,数据丢失),数据会不一致. 在2000年,E ...

  10. CAP定理在分布式系统设计中的最新应用

    本文翻译自国外InfoQ和计算机杂志上一篇2012年旧文,本文就有关数据同步进行了讨论,特别关注业务事务的不变性与一致性如何在分布式系统中巧妙保证,探讨了长时间运行的事务的补偿机制.这些对分布式系统设 ...

随机推荐

  1. 力扣8(java)-字符串转整数(atoi)(中等)

    题目: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) 的算法 ...

  2. 你不知道的 HTTPS 压测

    ​简介:随着互联网安全规范的普及,使用 HTTPS 技术进行通信加密,实现网站和 APP 的可信访问,已经成为公认的安全标准.本文将介绍针对 HTTPS 协议做压力测试的关注点,以及使用 PTS 做 ...

  3. EventBridge消息路由|高效构建消息路由能力

    ​简介:企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景.本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 EventBridg ...

  4. (数据科学学习手札160)使用miniforge代替miniconda

    本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域 ...

  5. Winform程序使用app.minifest清单禁止高DPI无法失效问题

    问题:Winform程序使用app.minifest清单禁止高DPI无法失效问题 摘要:因为笔记本基本都会有DPI放大,所以目前程序需要嵌入清单,并将其高DPI支持给禁止掉. 环境搭建:Winform ...

  6. SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)

    前言 熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller).业务类(Service).持久层(Repository).数据库映射(Mapper).各种DO类构成了我们服 ...

  7. SqlServer使用总结

    -- 新增主键,系统随机取名 ALTER TABLE "T_CS1" ADD PRIMARY KEY CLUSTERED ("ID1", "ID2&q ...

  8. pikachu靶机练习平台-xss

    第一题:反射性xss(get) 输出的字符出现在url中 第二题:反射性xss(post) 登录后输入<script>alert(1)</script> 第三题:存储型xss ...

  9. VSCode:所选环境中没有可用的Pip安装程序

    VSCode:所选环境中没有可用的Pip安装程序 然后我尝试格式化我的代码,VSCode说没有安装autopep8,可以通过Pip安装 . 但是,当我尝试通过Pip安装时,它会说 There is n ...

  10. ARM64: ARDP

    1 指令语法 ardp <Xd>, <lable> 2 指令语义 1 获取程序计数器PC寄存器的值: 2 将PC寄存器值的低12位全部取0; 3 将lable的值乘以4096, ...