CAP通俗解释
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),这三个基本需求,最多只能同时满足其中的2个。尽管没有严谨的证明,但这一假设被广泛认可,以致被作为一种事实来接受。
Consistency (一致性)
简单的说就是在分布式环境中,用于存储相同数据的多个节点中所保存的数据是否完全相同,如果完全相同就是一致,否则就是不一致。
Availability(可用性)
指系统提供的服务必须一直处于可用的状态,每次请求都能得到非错的响应,但不保证获得的数据是最新数据。
Partition tolerance(分区容错性)
分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
为了解释CAP同时只能满足其中两个条件,我们看这样一个场景,假设有五个节点: n1-n5, 出现网络分区时被分成两组:[n1-n2]和[n3-n5],当n1处理客户端请求时:
如果要保证C(一致性),那么它需要把消息复制到所有节点,但是网络分区导致无法成功复制到n3-n5,所以它只能返回"处理失败"的结果给客户端,这时系统就处于不可用状态,即丧失了A。
如果要保证A(可用性),那么n1就只能把消息复制到n2,而不用复制到n3-n5,这样n1-n2、n3-n5的状态就不一致了,于是就丧失了C。
如果不支持P(也就是不容忍网络分区), A和C同时满足,这就意味着系统不会出现网络分区,当然在分布式环境下这是不可能的。
CAP通俗解释的更多相关文章
- java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)
一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer”); 2) 与数据库建立连接 Co ...
- Spring的IOC原理[通俗解释一下]
Spring的IOC原理[通俗解释一下] 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图 ...
- 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用
通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (2012-04-02 09:17:28) 转载▼ 对于glLoadIdentity(), ...
- JVM分代通俗解释
JVM分代通俗解释 学习了:https://www.cnblogs.com/zgghb/p/6428395.html
- Oracle 0至6级锁的通俗解释及实验案例_ITPUB博客 http://blog.itpub.net/30126024/viewspace-2156232/
Oracle 0至6级锁的通俗解释及实验案例_ITPUB博客 http://blog.itpub.net/30126024/viewspace-2156232/
- 关于WIndows内核自映射方案的通俗解释
在一次操作系统课程上听老师说了这么一个有意思的东西,windows的自映射方案居然达到了把4K的页目录的线性地址“藏”在4M页表里的效果,感觉甚是奇特,于是乎就想着说怎么去算.光会算之后仍旧不满足,我 ...
- 特征提取(Detect)、特征描述(Descriptor)、特征匹配(Match)的通俗解释
特征匹配(Feature Match)是计算机视觉中很多应用的基础,比如说图像配准,摄像机跟踪,三维重建,物体识别,人脸识别,所以花一些时间去深入理解这个概念是不为过的.本文希望通过一种通俗易懂的方式 ...
- 小波变换(wavelet transform)的通俗解释(一)
小波变换 小波,一个神奇的波,可长可短可胖可瘦(伸缩平移),当去学习小波的时候,第一个首先要做的就是回顾傅立叶变换(又回来了,唉),因为他们都是频率变换的方法,而傅立叶变换是最入门的,也是最先了解的, ...
- 傅里叶变换通俗解释及快速傅里叶变换的python实现
通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ...
随机推荐
- SQL Server ->> 性能调优案例之 -- 包含递归查询的视图导致整个查询语句性能下降
有个语句最近性能下降很厉害,原本1秒就可以查询完毕的事情现在居然需要3-4分钟. 首先我的做法是先快速找出导致整个语句下降的元凶.在这个例子里面查询语句有3个JOIN字句,我通过删除某一个JOIN节点 ...
- 【转】snmpwalk常用用法
在日常监控中,经常会用到snmp服务,而snmpwalk命令则是测试系统各种信息最有效的方法,现总结一些常用的方法如下: 1.snmpwalk -v 2c -c public 10.103.33.1 ...
- Http扫盲
https://www.kancloud.cn/kancloud/tealeaf-http/43832
- c++计算器后续(1)
自娱自乐: 大概是一直在说的代码规范,大概是玩一玩,以上. 代码规范: 参考原文:链接 相关节选: 4 程序的版式 4.4规则:较长的语句(>80字符)要分成多行书写. 4.5规则:不允许把多个 ...
- 13、Node.js 全局对象
主要用于调试,显示信息,重点看例子在浏览器 JavaScript 中,通常 window 是全局对象, Node.js 中的全局对象是 global ####__filename__filename ...
- JavaScript设计模式导学
如何成为一名合格的工程师? 作为一名合格的工程师,不仅需要懂代码,还要懂设计,一名合格工程师的必备条件: 前端开发有一定的设计能力,一般三年开发经验的同学,面试必须考设计能力 成为项目技术负责人,设计 ...
- 在windows下解压缩rar文件
这是一篇比较无聊的博文.只是给博客除草的. 我从我的移动硬盘里翻出来了一堆电子书,从哪拿到的我忘了,但是都打在rar的压缩包里,这让我查找起来非常不方便.前几天找某本书看,就没有查到,又百度到的下载地 ...
- 密码加密MD5,Bash64
基于jar : org.apache.commons.codec 一.MD5概述:不可逆加密 Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广 ...
- 随手记——数据结构可视化(graphviz)
普通二叉树 void writedot(BTree tree, FILE* fw) { if (tree == NULL) return; else{ fprintf(fw, "%d [la ...
- H、CSL 的拼图 【多维点的交换】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
题目传送门:https://ac.nowcoder.com/acm/contest/551/H 题目描述 众所周知 CSL 不仅玩魔方很强,打麻将也很强.今天他打魔法麻将的时候,在路上撞到了一个被打乱 ...