墙裂推荐:这可能是CAP理论的最好解释

> 英文蓝本:http://ksat.me/a-plain-english-introduction-to-cap-theorem 经过小码甲意译、原创配图, 建议收藏。


你可能经常听到CAP定理, 这个定理描述了在设计分布式系统时的天然约束。就像其他文章一样, 本文以现实场景对比理解CAP定理。

1.记忆公司

昨晚你的老婆过生日,你这个渣男记得并精心准备了生日礼物,夫妇相视一笑。
一个天才创意在你头脑中产生:既然人们的记忆通常不好,而我偏偏擅长记忆,那我为什么不利用记忆天赋开创一番事业。

立马行动, 你制作了【记忆公司】的开业广告:

Remembrance Inc! - Never forget, even without remembering!
Ever felt bad that you forget so much? Don’t worry. Help is just a phone away!
When you need to remember something, just call 555—55-REMEM and tell us what you need to remember. For eg., call us and let us know of your boss’s phone number, and forget to remember it. when you need to know it back.. call back the same number[(555)—55-REMEM ] and we’ll tell you what’s your boss’s phone number.
Charges : only $0.1 per request

记忆公司的日常业务通话记录:

•客户:喂,你好,你可以存储我邻居的生日吗?•你:可以,您说。•客户:1月2号•你:记录(在笔记本这个客户页上记下信息), 好的,欢迎下次垂询。•客户:谢谢•你:请支付1元

2.业务扩张

凭借创意和人品,【记忆公司】的规模越做越大,而成本只需要笔记本和电话。

当你某天生病不能工作时,你会损失一天的收入;更不用说当天想要信息的客户会因此发狂。

你有了新计划:

1. 你和你老婆分别使用分机2. (555)—55-REMEM 客服电话不变3. 客服电话会转到空闲的分机号

3.第一次业务宕机

有一天你收到老客户罗志祥的电话,要求查询"明天的约会安排";

你一脸蒙蔽,我不知道啊,你的记忆页上没这个信息啊; 客户咣当挂断了电话。

当天复盘, 猜想是昨天罗志祥把业务电话打到我老婆那里了,事实确实如此。

你们都意识到分机号带来的新问题。

多么可怕的分布式设计中的缺陷!你的分布式系统是不一致的!总会有一个时机,客户会将业务电话打到你们其中一个;在下一次拨号时,客户就可能收到不一致的信息。

4.修复一致性问题

睡前吹风时间, 你想到一个主意:

• 当我们其中一个人接到客户新的记忆业务,我们会在挂电话之前告诉另一个人• 这样我们都能在笔记本上记下新业务• 当客户查询时,我们两个都可以轻松应对

这里有一个问题:当其中一人收到新业务电话,两人就不能并行工作了。
例如:当你收到新业务并告诉我记录信息时, 我不能接其他电话。

但是这个问题也不大,因为大部分都是查询业务(可以再拨电话重试),我们首要的是确保信息正确。

你老婆进一步提出:如果某天你不在岗,我收到新业务,你的笔记本不能得到最新信息,这就会有可用性问题, 因为我没能通知你,我就不能挂断电话完成这单业务。

5. 更优方案

你慢慢理解了分布式系统中的“一致性”和“可用性”。你提出了更优方案:

1. 收到新业务电话, 挂电话前通知对方,这样两个人都能记下信息2. 某天其中一人不在岗,另外一人收到新业务电话 ,给缺岗者发一封邮件3. 第二天缺岗者上岗查收邮件,更新自己的笔记本。

Nice, 现在一致性和可用性都满足了。

6. 老婆难养

使用优化方案,一切都很顺利,你们的笔记本是一致的,当你们其中一人不在岗系统也能很好的运作。

但是, 凡事都有但是, 某天你们都在岗,但是你老婆嫌你碗没洗干净,今儿不想理你,收到新业务不通知你了,你的查询业务就有问题了。

你的方案包含了“一致性”,“可用性”, 但是不满足“分区容错”。

为了满足“分区容错”, 你可以自我下线(直到你们修复关系),让你老婆一人接手业务,但是你的系统就不可用了。

7.结论

我们回过头看CAP定理:在设计分布式系统时,“一致性Consistency ”“可用性Availability”“分区容错Partition Tolerance” 你只能满足两个。

•Consistency:一旦接受了客户的新业务,在客户后续查询时必须得到最新的信息•Availability:只要你们一人在岗,记忆公司就一直提供服务 (节点下线的角度)•Partition Tolerance:你们夫妻二人闹矛盾了,记忆公司依旧运作(节点连通性角度)有了这样的场景,理解CP、AP、CA就不难了

雇佣工具人-->最终一致性

雇佣工具人,更新[未更新的人]的笔记本,相比你老婆实时通知你更新, 这个工具人有个好处是在后台跑腿,你们两个业务都不会阻塞。

这也是很多NoSql的工作方式:一个节点在本地更新,后台进程同步到其他节点, 唯一存在的问题是少数时候丢失一致性。

你老婆收到新业务,工具人还没来得及跑腿,客户就立即回拨并转到你的分机,你给出不一致的答复。这种情况有限,因为客户不会如此迅速忘记事情。

这就是CAP定理和最终一致性的现实解释。

原创不易 点个在看支持下~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

台湾 计算机术语,快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识...

原标题:快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识作者 | 楼下小黑哥来源 | 程序通事今天就不写技术文了,写点轻松的,带大家涨点知识。最近闲来无聊的时候&#xff0c…

使用现代化 C# 语法简化代码

使用现代化 C# 语法简化代码Intro最近几个版本的 C# 在语法中有很多的变化,有很多语法能够帮助我们大大简化代码复杂度,使得代码更加简洁,分享几个我觉得比较实用的可以让代码更加简洁的语法Default literal expressions在 C# 7.1 之后&#…

计算机原理试题b,计算机组成原理试题B答案

计算机组成原理试题B答案 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分计算机组成原理试题B答案一、 选择题1. D 2. A 3. A,C 4. B 5. B 6. B 7. B 8. B 9. A 10. D二、 填…

趣图:各种程序员的键盘热力图

图0:不保存不舒服斯基型图1:复制粘贴型 图2:复制粘贴型专用键盘图3:Vim 党新手(内心OS:门在哪里,我要退出)图4:Windows 程序员图5:01 党终极程序员 来源&am…

创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用

翻译自 Mohamad Lawand 2021年3月24日的文章 《.NET 5 Console App with Dependency Injection, Serilog Logging, and AppSettings》 [1]在本文中,我们将构建一个 .NET 5 控制台应用程序,该应用程序支持依赖注入、日志记录和 appsettings 配置。你也可以…

SmartDraw_2012_Enterprise_R20.0.1.0的安装使用

SmartDraw_2012_Enterprise_R20.0.1.0的安装使用 最近准备把所有的流程图由传统的路程图改成NS的流程图,网上搜索了一下关于这方面的软件,强力推荐这款SmartDraw,索性下来试一下。 下载地址为:http://www.7xdown.com/Download.asp…

作为一个前端,可以如何机智地弄坏一台电脑?

有人说,前端的界限就在浏览器那儿。无论你触发了多少bug,最多导致浏览器崩溃,对系统影响不到哪去。这就像二次元各种炫酷的毁灭世界,都不会导致三次元的世界末日。然而,作为一个前端,我发现是有方式打开次元…

全国计算机考试光盘,全国计算机一级模拟考试题(光盘).doc

全国计算机一级模拟考试题(光盘)【光盘】单选:世界上首次实现存储程序的计算机称为 ( EDSAC )。目前,制造计算机所用的主要电子元件是( 大规模集成电路 )。在各类计算机操作系统中,分时系统是一种 ( 多用户交互式操作系统 )。一个完整的微型计算机系统应…

IComparer实现文件名排序

↑↑↑ 点击左上角蓝字关注我,为您提供技术新动态。一、概要本文主要分享在文件对象处理中需要根据文件名排序思路。主要基于.net框架内提供的IComparer对象,它主要将定义类型为比较两个对象而实现的方法。二、详细内容1.场景在读取文件列表的时候&#…

WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]

WebService基于SoapHeader实现安全认证 本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使用WCF,WCF里面提供了更多的服务认证方法。以下提…

Java 常见的 30 个误区与细节!

1 在Java中,没有goto语句。因为大量使用goto语句会降低程序的可读性和可维护性,所以Java语言取消了goto的使用。同时,为了避免程序员自行使用goto所带来的混乱,Java语言仍将goto定义为一个关键字,但是没有定义任何语…

信息技术上册教案了解计算机,信息技术上册全册教案

信息技术上册全册教案[课时]:1节课[教学内容]:认识媒体;认识多媒体[教学目标]:1、了解媒体的概念和分类,理解多媒体的内涵和特征。2、能从日常的生活和学习中感受各种媒体及其作用3、培养学生对媒体、多媒体的喜爱,引发他们继续学习的热情。[教学重、难点…

轻量级NuGet—BaGet

1. 介绍BaGet是一个轻量级的包管理服务。有些时候公司或者个人不希望某一些包进行公开,那么就需要使用私有的包管理服务程序,该服务是用.netcore进行编写的(感谢开发者为.NET社区做出的贡献)Github:https://github.com/loic-sharma/BaGet官网…

为什么这个SQL Server DBA学习PowerShell--SQL任务

我开始学习PowerShell,是因为我在寻找一种快速和高效的方式收集有关我的SQL Servers的信息和更好地管理我的服务器工作负载的方式。我以为,我正在学习是另一门新的脚本语言,它能帮我做到前面提到的设想。实际上,我发现学习 PowerS…

30张地图看懂世界格局,用大数据说话

摘要:世界那么大,要了解的数据那么复杂,下面知识探索小编帮您总结一下关于世界的数据。1、 世界人口聚居地红色越深人口密度越大;灰色代表无人地带。2、全球各国平均智商分布图颜色越浅智商越高3、全球冰川融化后的世界地图4、全世…

中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一

安徽省哪些大学跻身2017年国家“双一流”世界一流建设学科数量最多?安徽省高校未来哪些学科最有希望入围国家“双一流”建设学科行列?为了满足2017年全国考研考生和外国来华留学生了解中国高校学科水平的需求,为全国各地高校创建中国特色、世界一流学科提供决策参…

.net framework3.0_

.net framework3.0目录• 简介• 应用 .NET Framework 3.0:设想• 了解 .NET Framework 3.0:技术• 工作流 简介编辑本段回目录 .NET Framework 3.0,应用程序开发的目标始终如一,就是在最短时间内制作出最好的软件。然而&#xf…

.NET Core3.1 Dotnetty实战教程

Dotnetty实战系列视频由于在.net的环境当中对dotnetty相关资料相对较少,所以这里主要分享一个dotnetty使用教程希望能帮助到正在使用这套框架的开发者们。虽然这套框架已微软官方已经不在维护,但是这套框架里的设计是相当不错的通过阅读源码能学习到很多…

计算机u打字,win7电脑打字打不出来怎么办

在windows电脑当中,必不可少的一个操作就是打字了,输入代码需要打字,网页中搜索也需要打字,网络聊天也需要打字,不过最近有位win7系统用户,在电脑中打开浏览器,输入想要找的资料的时候&#xff…

我用Python爬取了14年所有的福彩3D信息,彩民们,只能帮你们到这了

作者|丁彦军来源|恋习Python前两天,在网上看到一个有意思的问题:彩票预测靠谱么?为什么还有那么多的人相信彩票预测?暂且不说,彩票预测是否靠谱?彩票预测也分人而异,江湖上骗术很多,…