在CAP理论中,C代表一致性,A代表可用性(在一定时间内,用户的请求都会得到应答),P代表分区容错。
这里分区容错到底是指数据上的多个备份还是说其它的 ? 我感觉分布式系统中,CAP理论应该是C和A存在不可同时满足, 既要保证高可用,又要保证强一致性,因为多个节点之间存在数据复制,所以要么保证强一致性,就不一定能在指定的时间内返回客户的请求, 要么保证高可用,但是各个节点的数据不一定是一致的。 但是和P有什么关系呢 ?

一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。

当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。

提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。

然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。

总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

 
https://www.zhihu.com/question/54105974?from=profile_question_card
 
 

最新文章

  1. C#之事件
  2. Uvaoj 10048 - Audiophobia(Floyd算法变形)
  3. hdu 1022 Train Problem I 解题报告
  4. Jquery--string
  5. Android IOS WebRTC 音视频开发总结(三二)-- WebRTC项目开发建议
  6. LA 2797 (平面直线图PLSG) Monster Trap
  7. 多线程编程学习四(Lock 的使用).
  8. 怎么用SQL语句备份和恢复数据库?
  9. html_javascript
  10. BZOJ.4653.[NOI2016]区间(线段树)
  11. vs2013 error LNK2005 已经在***.obj中定义
  12. 【struts2】Struts2的异常处理
  13. The superclass "javax.servlet.http.HttpServlet" was not found 问题解决
  14. What Powers Instagram: Hundreds of Instances, Dozens of Technologies(译文,转)
  15. CountDownLatch的简单实现
  16. easyui 控件获取焦点方式
  17. Java笔记13:统计文件中每个字符出现的次数
  18. n皇后问题[分支限界法]
  19. maven 内置属性有哪些?该如何使用?
  20. Java基础入门 - Hello world

热门文章

  1. Python中的 set 与 深浅拷贝
  2. MySQL OSC(在线更改表结构)原理
  3. Open XML 检索 EXCEL
  4. 01 asp.net编程笔记
  5. Java,猜猜输出是什么?
  6. LoadRunner简明教程
  7. ARCGIS空间叠加分析(转)
  8. SQL 数据排重,去掉重复数据 有用
  9. 多线程编程为什么要sleep
  10. Luogu 3899 [湖南集训]谈笑风生