当前位置: 首页 > news >正文

CAP理论的例子讲解

前言:

在理论计算机系统中,CAP理论是指对分布式数据存储,不可能同时满足以下三个提交:

  • consistency(一致性): 每次read,要么能获取到最新的数据,要么获取失败(错误或超时)
  • availability(可用性): 每次请求肯定会有正确的数据(但不保证数据是最新)
  • partition tolerance(分区容忍性): 尽管有部分消息在节点间丢失,但是系统还可以正常运行

正文

当设计分布式系统时,你会经常听到CAP理论指定了某种设计上限。和我的其他入门级文章一样,本篇文章尝试通过真实案例理解CAP理论。

Chapter 1: 记忆力公司,你的新事业

昨晚当你的妻子感激你记住她的生日并且准备了礼物的时候,一个奇怪的点子戛然而出。通常人们不善于记忆,而你的记忆力却出奇的好。为什么不利用你的天分开启新事业呢?这个点子越想越靠谱。事实上,你已经想好解释新点子的广告语:

记忆力公司! - 无需您记忆也永远不会忘记!
经常会忘记事情?没关系,一个电话就能搞定!
当你需要记忆事情时,直接拨打555-555-REMEM,告诉我们你需要记忆什么。比如你想记住老板的手机号,直接拨打给我们,当你需要用到时,直接拨打同样号码,我们会告知您老板的手机号码。
收费:每次1美分

所以每次电话交流通常是这样的:

  • 客户:你好,能帮我存储下邻居的生日吗?
  • 公司:好的,什么时候呢?
  • 客户:2月2号
  • 公司:(在这个用户的主页中写下来)已经存储,当你需要知道邻居的生日时,请随时指点我们。
  • 客户:多谢!
  • 公司:没问题,此次服务收费1美分。

chapter 2: 公司扩张

你的工作获取Y孵化器的融资,创业点子如此简单,成本很低(只需笔记本和电话),公司进展蒸蒸日上。每天都有好几百个电话。
你逐渐遇到了一些问题,发现越来越多的客户不得不等待与你通话,许多客户甚至等得不耐烦直接挂电话了。另外假如某天你生病了,那么这天公司就失去了一天的业务,甚至这天不能提供服务还会导致老用户不满意。
所以,你决定让你妻子加入到你的事业来。
你启动了一个建议计划:

  • 你和你妻子都有一个分机
  • 客户仍然只需要拨打555-555-RMEM
  • 电话交换机会将客户的来电分发给空闲的分机

chapter 3:

http://ksat.me/a-plain-englis...

相关文章:

  • 欧拉函数 + 线性求法
  • 编写高质量JavaScript代码之并发
  • Python成长之路【第三篇】函数
  • Callable和Future用法示例
  • 谁说我们IT不重要???
  • linux-NAT连接外网
  • DataWorks支持PyODPS类型任务
  • JS 时间函数 / 格式化时间戳
  • THML DOM / Element 对象操作
  • [Excel VBA]单元格区域引用方式的小结
  • 量子计算机还没完全实现,硅谷已流行开量子计算聚会
  • 1.安装zabbix
  • K最近邻算法(KNN)
  • ssh scp远程免密
  • 量子力学科普
  • [译]Python中的类属性与实例属性的区别
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • android 一些 utils
  • cookie和session
  • CSS3 变换
  • Golang-长连接-状态推送
  • MobX
  • MySQL-事务管理(基础)
  • NSTimer学习笔记
  • Redash本地开发环境搭建
  • SOFAMosn配置模型
  • STAR法则
  • 订阅Forge Viewer所有的事件
  • 前端js -- this指向总结。
  • 协程
  • HanLP分词命名实体提取详解
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 湖北分布式智能数据采集方法有哪些?
  • ​马来语翻译中文去哪比较好?
  • #if 1...#endif
  • ${factoryList }后面有空格不影响
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1) caustics\
  • (function(){})()的分步解析
  • (LeetCode C++)盛最多水的容器
  • (生成器)yield与(迭代器)generator
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)Dubbo快速入门、介绍、使用
  • (一)VirtualBox安装增强功能
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)hibernate缓存
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ./configure,make,make install的作用(转)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 指南:抽象化实现的基类
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET正则基础之——正则委托