编程界的小学生

  • 一、什么是CAP
  • 二、细说CAP
  • 三、CAP组合
    • 1、CP
    • 2、AP
    • 3、CA
  • 四、Base理论
  • 五、个人公众号

一、什么是CAP

是一种定理,多用于描述分布式架构,CAP这三个字母对应三种理念,且这三种理念只能两两组合,不能CAP三种理念同时共存(为什么?下面说)。

  • C:Consisteny(一致性)
  • A:Availability(可用性)
  • P:Partition Tolerance(分区容错性)

二、细说CAP

  • C:Consisteny(一致性),比如数据库是主从模式,一个写库请求进来了,master库完成了写入操作,但是再slave同步数据之前,另一个用户查了这条数据,结果没查到,但是也没报错,这就不是强一致性。虽然最终会同步成功,但这是最终一致性的体现。强一致性的体现在于我不管你因为什么没同步成功(可能网络延迟或其他等),只要没同步成功,我这个slave就不能对外提供服务。必须主从数据一致才可以提供服务。(很少有做到这点的)
  • A:Availability(可用性),还是上面的例子,就是保证了可用性。因为虽然主从没同步完成,但是我从库照样能提供服务而且及时响应结果。也就是说可用性保证服务可用,而不在乎数据是否一致。明显和C是冲突的,那CA怎么还能组合到一起?后面说。
  • P:Partition Tolerance(分区容错性),集群部署了三台服务。挂了一台,其他两台还能继续对外提供服务,这时候我就认为他是没问题的,也就是我能容忍你挂了一台,只要还有服务能对外提供请求即可。所以一般分区容忍性是必须的,一般都需要从C和A之间做选择。

三、CAP组合

1、CP

即一致性和分区容忍性。


把节点A和节点B理解成mysq主从的话,那么就是A和B之间不能互相通讯,网络出问题了,当有客户端向A写入msg1的时候,会直接失败,因为C要保证A和B两个节点之间的数据强一致性。
假如有另一个客户端向B节点进行读取msg2消息的时候,B返回是成功的,因为msg2节点是A和B之间网络通顺时存在的老数据,数据是一致的。这就是虽然你A不可用,但是我B还能提供服务,这就保证了分区容忍性。

2、AP

即可用性和分区容忍性。


节点A和B之间不能互相通讯,当有客户端向A节点写入msg1的时候,节点A允许 写入,请求操作成功,但此时由于A和B不能通信,所以导致B节点的msg1的数据是旧的,或者根本不存在。但是另一个客户端向B节点读取msg1的时候是可以成功的,要么读到的是旧数据要么读取不到。但是服务是可用的,只是数据可能有问题。这就保证了可用性,舍弃了强一致性。

3、CA

CA的话我只能想到单机上是可以保证的,一台机器数据肯定一致,服务肯定可用。不可用的时候服务也不能用,也能保证一致性。单台机器也没有分区容错性的概念。所以完美CA。

四、Base理论

Base理论是对CAP理论的延申,核心思想就说既然无法做到强一致性(CAP中的C),但是可以采取合适的方式达到最终一致性。
Base的全称是:Basically Available(基本可用)、Soft State(软状态)、Eventual Consistency(最终一致性)。

  • Basically Available(基本可用)

指分布式系统再出现故障的时候,允许损失部分可用性,即保证核心可用。比如电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务,这就是损失部分可用性的体现。

  • Soft State(软状态)

指系统允许存在中间状态,而这个中间状态不会影响系统整体可用性。比如分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延迟就是软状态的体现。

  • Eventual Consistency(最终一致性)

指系统中的所有数据副本经过一定时间后最终能够达到一致的状态。也是弱一致性的体现。

五、个人公众号

微信公众号【Java码农社区】

大白话图文结合的方式讲解什么是CAP相关推荐

  1. 两种可以支持跨域的方式 - 讲解篇

    针对项目:vue.js + Express 本例的vue.js项目使用Express框架作为后台数据服务端 什么叫做跨域? 通常情况下是指两个不在同一域名下的页面无法进行正常通行,或者无法获取其他域名 ...

  2. Android系统 (190)---Android:JSON 简介 amp; 解析方式 讲解(Gson、AS自带org.json、Jackson)

    Android:JSON 简介 & 解析方式 讲解(Gson.AS自带org.json.Jackson) 前言 现今最主流的数据交换格式 非 JSON莫属 今天,我将全面介绍 JSON &am ...

  3. javascript 设计模式_用英雄联盟的方式讲解JavaScript设计模式(二)

    前言 大家好,这是第三篇作者对于设计模式的分享了,前两篇可以参考: 手写一下JavaScript的几种设计模式 (工厂模式,单例模式,适配器模式,装饰者模式,建造者模式) 用英雄联盟的方式讲解Java ...

  4. mysql select count() count(1)_select count()和select count(1)的区别和执行方式讲解

    select count()和select count(1)的区别和执行方式讲解 发布时间:2020-09-06 13:26:14 来源:脚本之家 阅读:227 作者:CODETC 在SQL Serv ...

  5. 3dmax最全选择方式讲解

    3dmax最全选择方式讲解 在用3dmax建模工作中有一大半的时间是在进行各种选择,活用选择方式会很大提高工作效率. 选择方式在主菜单栏位置:在编辑菜单中.主要分为点击选择,区域选择(框选),按名称选 ...

  6. 用通俗易懂的方式讲解:主成分分析(PCA)算法及案例(Python 代码)

    文章目录 知识汇总 加入方式 一.引入问题 二.数据降维 三.PCA基本数学原理 3.1 内积与投影 3.2 基 3.3 基变换的矩阵表示 3.4 协方差矩阵及优化目标 3.5 方差 3.6 协方差 ...

  7. 移动电源当中的自动检测负载方式讲解

    本文引用地址: http://power.21ic.com//ce/technical/201603/46836.html 移动电源当中的自动检测负载方式讲解 时间:2016-03-29 来源: 随着 ...

  8. 用通俗易懂的方式讲解:CatBoost 算法原理及案例

    文章目录 知识汇总 解惑答疑 1.梯度提升概述 2.什么是 CatBoost 3.CatBoost 的主要特点 01 对称树 FloatFeature OneHotFeature OnlineCtr ...

  9. RTC芯片——DS1302驱动方式讲解(附代码)

    RTC芯片--DS1302驱动方式讲解(附代码) 最近的一个项目中用到了DS1302rtc芯片,中间弯弯绕绕也费了点时间,好在最后还是成功搞定,现做一下总结,希望能让各位少走些弯路. 写代码前所需了解 ...

  10. map容器对象插入数据的4种方式讲解

    map容器对象插入数据的4种方式讲解 map容器对象插入数据的4种方式 #include <string> #include <iostream>  #include < ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——探索和设计
  2. D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)
  3. 机器学习实战-贝叶斯算法-24
  4. Navicat远程连接linux下mysql服务器1045错误解决办法在这儿
  5. 不使用任何路由协议使3台路由器通信
  6. .Net下几种日志管理方法
  7. mysql数据库优化skip_优化配置mysql数据库优化
  8. Salesforce.com + AutoCAD WS集成研究集锦
  9. (五)ThinkPHP实践之Session驱动-TTLSA
  10. java使用d3_D3 快速入门指北
  11. 信息学奥赛一本通c++【1033】
  12. IntelliJ配置jenkins服务的Crumb Data
  13. 软装和硬装又有哪些不同?
  14. 企立方:拼多多关键词出价多少合适
  15. ubuntu中搜狗输入法怎么翻页
  16. 炼丹志 | 2021显卡挑选指南
  17. 思维导图02----Java面向对象
  18. 【UNIAPP】APP快速免费生成一键发布页面
  19. 备用内存 释放_Windows备用内存过大问题分析
  20. 通过自定义ServiceHost实现对WCF的扩展[实例篇]

热门文章

  1. 计算机专业考信息安全研究生,我是计算机科学与技术专业的学生,想考信息安全的研究生,我们本专业涉及的知识主要是计算机的组成原理,...
  2. PVE系列教程(七)、安装iKuai软路由
  3. 模数转换器ADC的常用术语和主要技术指标(一)
  4. Shopee卖家如何布局产品合理定价,新手必知的定价策略
  5. EOF是什么意思以及怎么输入
  6. 基于python-实现仿天眼查-企查查-完整源码
  7. c语言混合运算优先级判断,《C语言解惑》—— 3.1 混合运算要小心
  8. pcap报文80211-8023区别
  9. 贝尔商道赚钱思维36道第04道:二八定律,约仅有20%的因素影响80%的结果
  10. 魔兽世界WOW服务器端的模拟器【2010】