老徐和阿珍的故事: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 ...
随机推荐
- c++ Message与Folder 拷贝 析构(没有动态空间的类)
c++ Message与Folder 拷贝 析构(没有动态空间的类) 1.两个类里边分别保存一个对方的set表,当前类有拷贝或者销毁时需要更新另一个类的set表. 2.两个类都需要访问对方的priva ...
- 使用IDEA新建一个Spring Boot项目
本文使用Spring Initializer来创建 开发环境 操作系统:Windows 10 IDEA:2020.3.2 JDK:1.8 1. 启动IDEA,选择New Project(新建工程): ...
- ios开发 将json格式数据上传服务器
看了一些大小牛的资料其实就3步 1.使用post 请求 ,因为get是不能上传的 2.设置请求类型 , 讲你的json数据上传 3.向服务器发送数据按照下面示例代码,就差不多了 1 // 1.创建请求 ...
- Javers 比较两个类的差异
Javers 在开发过程中遇到需求,比较数据库中的原数据与新修改要写入库中的数据.这个实体类是比较复杂的.例如有基本类型,BigDecimal类型,自定义类型,Date类型,List集合,Set集合, ...
- 实例详解 Java 死锁与破解死锁
锁和被保护资源之间的关系 我们把一段需要互斥执行的代码称为临界区.线程在进入临界区之前,首先尝试加锁 lock(),如果成功,则进入临界区,此时我们称这个线程持有锁:否则呢就等待,直到持有锁的线程解锁 ...
- Qunar风控安全产品的探索之路
李建威.2017年7月以春招实习生的身份加入去哪儿网,毕业后一直在从事抓取与反抓取相关工作,先后负责搭建过智能打码.设备指纹以及环境检测等服务.目前主要负责反爬风控的基础安全产品建设.对各类作弊原理感 ...
- 单网口RFC2544测试——信而泰网络测试仪实操
一.测试拓扑 拓扑说明 测试仪一个端口和DUT一个端口相连 DUT假设是一台交换设备,它能够把测试仪发送的流量直接转发回来 注意:要求DUT必须能够把收到的流量环回出来,否则没有办法测试 二.测试思路 ...
- smbms项目核心功能实现
SMBMS 数据库: 项目如何搭建? 考虑使用不使用Maven?依赖,Jar 1.项目搭建准备工作 搭建一个maven web项目 配置Tomcat 测试项目是否能够跑起来 导入项目中会遇到的jar包 ...
- JavaSE-万字长文-加载时间长-小白文
Java语法规范 所有的Java语句必须以;结尾! 无论是().[]还是{},所有的括号必须一一匹配! 主方法的代码只能写在{}中! Java基础语法(面向过程) 在学习面向对象之前,我们需要了解面向 ...
- vmware启动报错:Failed to load SELinux policy. Freezing
修改 : SELINUX=disabled 正确 误修改: SELINUXTYPE=disabled 错误 导致无法开机 错误结果 重启后 机器就报 Failed to load SELi ...