再谈CAP
CAP定理设计者Eric Brewer作为Google基础设施副总裁在时隔二十年后重谈CAP定律。
Eric Brewer目前正在推动Kubernetes和容器建设,在这篇采访中:
Google systems guru explains why containers are th,他认为容器是云计算的未来。
Docker之类容器你可以在本地笔记本或电脑上运行,然后你同样部署到云上运行,当在云上运行时,Kubernetes能够以一种可控的方式升级容器从而实现运行管理一批容器,如同一个大型船队或舰队一样,你可以控制它们的流量访问量,可以指定多少个容器来扩展支撑一个服务的运行,随着访问量提升,你通过增加容器数量能够整个系统的负载能力。
当前云计算的App引擎并不通用,Heroku适合与Salesforce相关的网站系统;而Yard引擎适合Ruby on Rails方面的开发应用。而Google的App引擎视图通过可管理的VM变得通用,App引擎正确的抽象应该是一个容器,
下面谈到了CAP:
CAP定理三个属性只能取得两个:
1. 一致性,意味着系统中所有服务器能达成数据值的一致性,比如你有一个银行账户,每个服务器都应该同意银行账户的数值是多少,也就是说,银行账户的数值应该在所有服务器上是一样的。
2.可用性,系统应当是在线运行,可以与用户形成交互。(banq注:有一些人认为CAP定理不包含延迟,其实可用性中有延迟的概念,如果系统等待半天没有响应,延迟很长,用户不知道是服务器死机了还是没有缓过来,可能就离开不用了,这种系统当然没有可用性。)
3.为了容错而进行的分区,(banq注:为了保证可靠性,你会将数据分成两个或更多组实现分区,这样,其中一台服务器当机时,数据不会丢失。),当你将数据分区到几个服务器上时,你以为一份数据有两份或多份,很可靠了,但是服务器之间的网络连接会断线,那么这时你就不能又要一致性,又要可用性了,只能在这两者之间选择一个。
举例,ATM机有时会和银行主机房失联,问题是,在失联状态如果有用户等待吐钱取款,它到底吐不吐钱出来呢?如果它吐钱,那它是可用的,但是会不一致,因为ATM机器内账户钱少了,但是由于失联,银行主机数据库对应的账户钱没有少,也就是说,实际上你的银行账户中钱并没有因为ATM吐钱出来了而减掉这一笔钱。在实际运行中,ATM也是选择可用性,在失联状态吐钱会有一个上限,比如200美金,第一次可以这样,第二次ATM就不会傻到再吐钱了。
这里关键来了,我们是允许事件变得不一致的,然后在其发生以后,会找到一种途径对这个错误进行补偿。(亡羊补牢为时未晚),这些与试图阻止错误的预防模式一起解决问题。
让不一致发生,事后通过校订Auditing探测发现它们,你如,你下订单时出现错误,下了两次订单,忘记取消了,厂商也将货物发送给你了,那么纠正补偿还是很容易的,厂商只要将货物拿回即可。
所以,通常情况是,允许数据变得不一致,你需要发现纠正的方法,实际上,财务系统这样注重数据一致性的系统,其实不是基于真正一致性,而是基于校订auditing和纠正补偿,他们以前是不知道CAP理论的,所以,这是一种实践中正确的方式。
点评:Eric Brewer这篇访谈可谓是文章Please stop calling databases CP or AP请停止称呼数据库CP或AP)的反击,该文如同以前其他文章一样不断质疑CAP理论,而人们在这些质疑中愈加深入了对CAP理论的理解,进而更加广泛地用CAP理论对分布式系统进行定义描述。
再谈CAP的更多相关文章
- [转载]再谈百度:KPI、无人机,以及一个必须给父母看的案例
[转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15 | 0 Comments | 阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须 ...
- Support Vector Machine (3) : 再谈泛化误差(Generalization Error)
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
- Unity教程之再谈Unity中的优化技术
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点 ...
- 浅谈HTTP中Get与Post的区别/HTTP协议与HTML表单(再谈GET与POST的区别)
HTTP协议与HTML表单(再谈GET与POST的区别) GET方式在request-line中传送数据:POST方式在request-line及request-body中均可以传送数据. http: ...
- Another Look at Events(再谈Events)
转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...
- C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)
STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...
- 再谈JSON -json定义及数据类型
再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...
- C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】
STL实践与分析 --再谈迭代器[下] 三.反向迭代器[续:习题] //P355 习题11.19 int main() { vector<int> iVec; for (vector< ...
- C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】
STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...
随机推荐
- IDEA插件:search with bing、search with baidu
//转载请注明出处:https://www.cnblogs.com/nreg/p/11267169.html 当项目出现错误时,经常需要复制错误信息粘贴到浏览器查询,但是手动复制再粘贴太麻烦了, 因此 ...
- 英语Petrolaeum原油
Petrolaeum (英语单词) Petrolaeum是一个英语单词,名词,翻译为石油. 中文名:石油 外文名:petrolaeum,petroleum 目录 1 含义 2 例句 含义 petrol ...
- spring boot 集成 sitemesh
一.Sitemesh简介 Sitemesh是由一个基于Web页面布局.装饰及与现存Web应用整合的框架,是一个装饰器.它能帮助我们在由大量页面工程的项目中创建一致的页面布局和外观,如一致的导航条.一致 ...
- Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别
存储介绍 Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足.一般我们存储内容都会 ...
- 个人项目WC(Python实现)
一.GitHub地址 https://github.com/hoka-17/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际 ...
- Java中的乐观锁
1.前言 之前好几次看到有人在面经中提到了乐观锁与悲观锁,但是一本<Java Concurrency In Practice>快看完了都没有见到过这两种锁,今天终于在第15章发现了它们的踪 ...
- nano的简单笔记
CTRL+c 显示行数信息 ctrl + _ 到某行 alt +m 移动光标功能 alt+y 语法矫正功能
- 摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...
[原创]Windows系统内存计数器理解解析 2008-05-13 11:42:23 / 个人分类:性能测试 说明:本文的计数器以Windows2003为准. 序言;F9n)\%V1a6Z C)?ZV ...
- Python应用-完成简单邮件发送功能
项目中有时候需要用脚本来自动发送邮件,而用Python来发送邮件十分的方便,代码如下: #!/usr/bin/python #coding:utf-8 import smtplib from emai ...
- python开发应用笔记-SciPy扩展库使用
SciPy https://www.scipy.org/ SciPy中的数据结构: 1.ndarray(n维数组) 2.Series(变长字典) 3.DataFrame(数据框) NumPy适合于线性 ...