老徐和阿珍的故事:CAP是什么?超级爱放P吗?
人物背景:
老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐。据说之前炒某币败光了所有家产,甚至现在还有欠债。
阿珍,女,本名陈家珍,刚刚入职不久的实习生,虽然是职场菜鸟但聪明好学。据说是学校的四大校花之一,追求她的人从旺角排到了铜锣湾,不过至今还单身。
微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
获取12本Java必读技术书籍

阿珍吃完饭刚刚回来,看到老徐正在吃方便面,说:“老徐,不至于吧。你为了还债,中午就吃这个呀?”
老徐不慌不忙地嚼着方便面,说:“这可是白象的方便面,国货之光,超级难买,我好不容易才买到的。”
阿珍坐了下来,说:“闻着还挺香,我也买点尝尝。对了,老徐,上午开会的时候,听你们总说CAP、CAP的,CAP是什么意思?超级爱放P吗?”
老徐嘴里方便面差点喷了出来,笑着说:“第一次听你这么解释的,来!我给你科普一下。”
CAP 是加州大学伯克利分校(University of California at Berkeley)的计算机教授
埃里克·布鲁尔(Eric A. Brewer)在2000年的分布式计算原理研讨会(PODC,Symposium on Principles of Distributed Computing)上提出的一个猜想。

2002 年,麻省理工学院(MIT,Massachusetts Institute of Technology)的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了对这个猜想的证明,使之成为分布式计算领域公认的一个定理。


CAP定理是指在一个互相连接并共享数据的节点的分布式系统中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。
CAP,是Consistence、Availability、Partition三个英文单词的首字母缩写。
其中,一致性是指对某个指定的客户端来说,读操作保证能够返回最新的写操作结果;可用性是指非故障的节点在合理的时间内返回不是错误和超时的合理响应。分区容忍性是指当出现网络分区后,系统能够继续运行。
因为网络本身无法做到100%可靠,有可能出故障,分区是一个必然的现象,所以我们必须选择分区容忍性(P)。在分布式系统中不可能选择CA(一致性和可用性),只能选择CP(一致性和分区容错性)或者AP(可用性和分区容错性)。
当选择CP时,发生分区现象后,为了保证数据的一致性,客户端访问任意节点都会被返回错误,所以不能满足可用性,比如ZooKeeper。
当选择AP时,发生分区现象后,为了保证节点的可用性,客户端可以访问某个节点上可能过时的数据,所以不能满足一致性,比如Eureka。
阿珍用手捂着嘴打了一个哈欠,眨了眨还有泪花的眼睛,说:“这理论性也太强了吧,还是说说你的白象方便面在哪买的吧。”
最后,谢谢你这么帅,还给我点赞和关注。
微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
获取12本Java必读技术书籍

老徐和阿珍的故事:CAP是什么?超级爱放P吗?的更多相关文章
- 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...
- 老徐和阿珍的故事:Runnable和Callable有什么不同?
人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...
- 老徐FrankXuLei 受邀为花旗银行讲授《微软WCF服务分布式开发与SOA架构设计课程》
老徐FrankXuLei 受邀为花旗银行上海研发中心讲授<微软WCF服务分布式开发与SOA架构设计课程> 受邀为花旗银行上海研发中心讲授<微软WCF服务分布式开发与SOA架构设计课程 ...
- WebGPU图形编程(1):建立开发环境 <学习引自徐博士教程>
首先感谢徐博士提供的视频教程,我的博客记录也是学习徐博士进行的自我总结,老徐B站学习视频链接网址:WebGPU图形编程 - 免费视频教程(1):建立开发环境_哔哩哔哩_bilibili 创建之前你需要 ...
- 苏州6617.9373(薇)xiaojie:苏州哪里有xiaomei
苏州哪里有小姐服务大保健[微信:6617.9373倩儿小妹[苏州叫小姐服务√o服务微信:6617.9373倩儿小妹[苏州叫小姐服务][十微信:6617.9373倩儿小妹][苏州叫小姐包夜服务][十微信 ...
- day1 执行用例
故事1 今天的工作,是执行已写好的"回馈"模块用例 每个子模块的用例都有优先级之分 肯定要先进行通过性测试,验证正常流 因此,我优先执行各个子模块优先级最高的那条用例,进行通过性测 ...
- 福州11911.562(薇)xiaojie:福州哪里有xiaomei
福州哪里有小姐服务大保健[微信:11911.562倩儿小妹[福州叫小姐服务√o服务微信:11911.562倩儿小妹[福州叫小姐服务][十微信:11911.562倩儿小妹][福州叫小姐包夜服务][十微信 ...
- 【Win 10应用开发】响应系统回退键的导航事件
按例,老周今天要讲一个故事,这个故事之前老周在微博上分享过.大伙知道在8.1的时候,有一个扩展类库——NotificationExtensions,可以真TMD轻松生成通知XML模板,其实,这个类库也 ...
- App测试
(1)App独特测试点: 客户端兼容性测试:系统版本.不同深度定制的rom.屏幕分辨率.中断测试.安装.卸载.升级.对其他程序的干扰等 需要的一些工具: appnium / lr / jmeter ...
随机推荐
- 04 js
js 1. JavaScript概述 JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但 ...
- Solution -「LOCAL」逃生
\(\mathcal{Description}\) 有 \(n\) 个人掉进了深度为 \(h\) 的坑里,第 \(i\) 个人的肩高为 \(a_i\),臂长为 \(b_i\).设当前坑里人的集合为 ...
- suse 12 安装git客户端
suse-linux:~ # zypper addrepo http://download.opensuse.org/repositories/devel:/tools:/scm/SLE_12_SP5 ...
- php使用CURL进行模拟登录采集数据
<?php $cookie_path = './'; //设置cookie保存路径 //-----登录要提交的表单数据--------------- $vars['username'] = '张 ...
- Spring Boot自动配置SpringMVC(二)
Spring Boot自动配置SpringMVC(一) - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)讲述了关于DispatcherServlet注册到诸如tomcat容器中的自动配置过 ...
- Node.JS学习——学习笔记
Node.JS--学习笔记 2020年02月23日11:52:01 我打算自学NodeJS-通过阅读NodeJS官网来完成. https://nodejs.org/dist/latest-v13.x/ ...
- AFNetworking 修改
相比大家刚刚拿到AFNetworking post 和 get 请求数据的时候都会有些小问题吧 NSLocalizedDescription=Request failed: unacceptabl ...
- blender导入灰度图生成地形模型
安装软件 在此处下载blender并安装. 添加平面 1.打开blender,右键删除初始的立方体. 2.shift+a选择平面添加进场景: 3.按下s键鼠标拖动调节平面大小确定后按下鼠标左键: 4. ...
- HttpClient的使用(get、post请求)
添加pom依赖 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <d ...
- C# 事件Event(个人整理)
内容来源:MSN:https://docs.microsoft.com/zh-cn/dotnet/csharp/event-pattern 操作符详解(上) https://www.youtube ...