什么是分布式系统的CAP原理

在分布式系统中,一致性(C)指每一次读都得到最近的写数据,或者一个异常;可用性(A)指每一个请求都得到一个非异常的响应,而不保证取得最近的写数据;分区容错性(P)是指结点间网络异常时,系统仍然可以继续运行。原理指出,一个分布式系统最多只能提供CAP中的两个保障。

值得注意的是,CAP原理指的是在分区发生时,只能在保证一致性或可用性中二选其一。而非因为分区不可避免,在系统设计时必须放弃一致性或可用性,没有分区发生时可以同时保证一致性和可用性。

CAP原理的简单模型解释

如图,网络中有两个结点N1和N2,可以简单的理解N1和N2分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库V,N2也有一个应用程序B和一个数据库V。

正常运行时的场景如下图:

当结点间的网络发生问题时,N1和N2间的数据同步失效。此时系统只能在一致性和可用性中二选一。选择一致性时,结点将对请求返回不可用异常。选择可用性时,结点将返回现有的数据,而此时数据可能已经过时。

CAP原理在互联网场景的应用

对于多数大型互联网应用的场景,主机众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到N个9,即保证P和A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流失的严重程度。

对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁可停止服务(或者只读不写),这是保证CA,舍弃P。

CAP原理在数据库领域的应用

CAP理论在数据库领域也有广泛的应用,如下图中按照CAP中三选二对数据库系统的分类:

参考资料

1. http://www.hollischuang.com/archives/666

2. http://zohararad.github.io/presentations/big-data-introduction/

分布式系统的CAP原理及其应用相关推荐

  1. 分布式系统以及CAP原理

    分布式系统以及CAP原理 文章首发于微信公众号:大数据每日哔哔.文章:分布式系统以及 CAP 原理 ● 本文主要分为以下几个部分:<br />什么是分布式系统<br />对 C ...

  2. 分布式系统中CAP原理

    分布式系统CAP原理 分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一. CAP原理:指的是在一个分布式系统中,Consistency(一致性).Availability(可用 ...

  3. 分布式系统之CAP原理

    参考链接:http://blog.csdn.net/wireless_com/article/details/79153643 CAP是什么? CAP理论,被戏称为[帽子理论].CAP理论由Eric ...

  4. 分布式系统架构的远程调用(RESTFul、RPC)和CAP原理

    文章目录 分布式系统的远程调用 RestFul接口 RPC协议 RestFul和RPC的区别 分布式系统的CAP原理 分布式系统的远程调用 在微服务架构中,通常存在多个服务之间的远程调用的需求.远程调 ...

  5. 分布式系统架构以及 CAP 原理

    精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 ● 本文主要分为 ...

  6. 分布式系统:FLP Impossibility/CAP原理

    分布式系统: 分布式系统的概念: 分布式系统是一组自治计算机系统的集合,这些系统在物理上是分开的,但通过配备分布式系统软件的集中式计算机网络连接起来.自治计算机将通过共享资源和文件并执行分配给它们的任 ...

  7. redis学习之——CAP原理CAP+BASE

    Remote Dictionary Server 分布式系统 分布式系统(distributed system) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成.分布式系统是建 ...

  8. redis学习-分布式数据库CAP原理

    传统的ACID分别是什么 A (Atomicity) 原子性 C (Consistency) 一致性 I (Isolation) 独立性 D (Durability) 持久性 关系型数据库遵循ACID ...

  9. 分布式CAP原理:一致性、可用性、分区容错

    目录 CAP概念 分区容错(Partition tolerance) 一致性(Consistency) 可用性(Availability) 一致性和可用性之间的矛盾 使用场景 CAP概念 单机系统由于 ...

最新文章

  1. python检查URL是否能正常访问
  2. JavaBean笔记
  3. centos xampp安装mysql_在xampp上部署dvwa|centos(linux)环境
  4. IntelliJ IDEA 中无法下载Maven仓库源代码jar包到本地
  5. HDU2003 求绝对值【入门】
  6. HTTP API 设计指南
  7. phpstorm 2017.1.3 最新版激活方法
  8. Windows下Nginx的启动、停止、重启等命令
  9. 微星网卡linux驱动,微星b360系列win10无法安装网卡驱动解决方法_武汉久龙电脑维修中心...
  10. 见面会 | 创新工场执行董事王嘉平:高性能可伸缩性区块链系统揭秘!
  11. 近几年Linux TCP相关的漏洞被夸大了
  12. 前端高效开发必备的js库梳理,日常使用中会持续更新
  13. Designing Data-Intensive Applications翻译
  14. cgb2109-day02
  15. postgresql 执行sql文件
  16. linux关闭进程命令kill
  17. 源码交易网站高仿站源网
  18. FreeBSD 安装配置
  19. msk 频偏_msk同步性能
  20. 想用MP4格式,怎么把视频格式改成mp4格式?

热门文章

  1. Python光的干涉仿真
  2. 计算机英语编程词典,电脑编程,program,在线英语词典,英文翻译,专业英语
  3. 关于自动布局(Autolayout)
  4. 5个人站队,每个人不在原位置有多少种站法
  5. 打造心中的暗黑传奇3
  6. vm磁盘映射 不能启动_iOS 启动优化之Clang插桩实现二进制重排
  7. 构造方法:构造方法的格式和执行时机;构造方法的作用;构造方法的注意事项;
  8. 掩膜裁剪tif步骤_ENVI中掩膜掩膜操作及影像分类教程(转)
  9. js中 数组的操作 push(),pop(),shift(),unshift() 简介
  10. 用keil语言定义c51,51单片机Keil C51的使用(C语言)