由来

1998年的加州大学的计算机科学家 Eric Brewer 提出,分布式有三个指标。
Consistency,Availability,Partition tolerance。
简称即为CAP。
Eric 提出 CAP 不能全部达到,这就是CAP定理。

C

Consistency,一致性的意思。
一致性就是说,我们读写数据必须是一摸一样的。
比如一条数据,分别存在两个服务器中,server1和server2。
我们此时将数据a通过server1修改为数据b。此时如果我们访问server1访问的应该是b。
当我们访问server2的时候,如果返回的还是未修改的a,那么则不符合一致性,如果返回的是b,则符合数据的一致性。

A

Availability,可用性的意思。
这个比较好理解,就是说,只要我对服务器,发送请求,服务器必须对我进行相应,保证服务器一直是可用的。

P

Partition tolerance,分区容错的意思。
一般来说,分布式系统是分布在多个位置的。比如我们的一台服务器在北京,一台在上海。可能由于天气等原因的影响。造成了两条服务器直接不能互相通信,数据不能进行同步。这就是分区容错。我们认为,分区容错是不可避免的。也就是说 P 是必然存在的。

为什么CAP只能达到 CP 或者 AP?

由以上我们得知,P是必然存在的。
如果我们保证了CP,即一致性与分布容错。当我们通过一个服务器修改数据后,该服务器会向另一个服务器发送请求,将数据进行同步,但此时,该数据应处于锁定状态,不可再次修改,这样,如果此时我们想服务器发送请求,则得不到相应,这样就不能A,高可用。
如果我们保证了AP,那么我们不能对服务器进行锁定,任何时候都要得到相应,那么数据的一致性就不好说了。

最新文章

  1. 把PDF的底色改成护眼色,这样读起文章来就不是很累了······
  2. 在APACHE服务器上的访问方式上去除index.php
  3. SharePoint SC "Audit Settings"功能与CSOM的对应
  4. 做最好的日期控件,My97 DatePicker 4.8 Beta4
  5. HDU 4325-Flowers(线段树+离散化)
  6. linux-redhat5找回root密码
  7. Unity3D C#脚本开发学习
  8. PHP多线程的实现(PHP多线程类)
  9. android判断文件是否是图片文件的方法
  10. Myeclipse设置文件编码
  11. shell队列实现线程并发控制(转)
  12. 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)
  13. tensorflow1.0.0 弃用了几个operator写法
  14. Redux thunk中间件
  15. edu9E. Thief in a Shop
  16. git切换远程仓库地址
  17. 使用Mybatis Generator插件自动生成映射文件(cmd无法进入文件,dns服务器对区域没有权威等问题)遇到问题
  18. Jmeter性能测试之一 性能测试的流程和步骤介绍
  19. Android侧滑菜单和轮播图之滑动冲突
  20. 使用Xfire发布WebService接口遇到的问题:

热门文章

  1. 开源日志框架Exceptionless使用教程
  2. 【1封新邀请】想跟谷歌、七牛、kyligence等大佬面对面的交流吗?
  3. abp模块生命周期设计思路剖析
  4. EXT grid单元格点击时判断当前行是否可编辑
  5. Pikachu-Sql Inject
  6. 研究STM32F4的IEEE1558 PTP网络时间同步协议实现,软件是RL-TCPnet V7.X的底层
  7. redis的介绍与操作及Django中使用redis缓存
  8. Axure导出的原型无法在谷歌浏览器浏览
  9. Android 下载进度对话框 ProgressDialog
  10. 2019 DevOps 必备面试题——容器化和虚拟化