三分钟分布式CAP理论
分布式系统架构理论,定义了三种指标,理论说我们最多只能满足两个。
## 分布式系统
首先我们这个理论所说的分布式系统,是指系统内会共享数据,互相有连接有交互,才能完成系统功能的的分布式系统。而这个理论的关注点是**数据**的读写。
## 三种指标
- Consistency 一致性:
这里的一致性是针对于分布式读写的。对于一个分布式系统,当一条数据写成功,那么无论我怎么使用这个系统,我都应当能马上读取到这条最新的数据。
不一致性的例子:我更新了一条微博,而我的关注者还不能看到。
- Avalilability 可用性:
是指系统应当随时可用,在reasonable的时间内返回reasonable的结果。
一个反例:我更新了一条微博,我的关注者在刷我微博的时候显示对方正在更新微博,请稍后再试,或者显示一直在读取中。
- Partition Toleranc 分区容忍性:
分布式环境中数据必然会被划分成多个区分到不同的机器上,不同的机器之间会有数据交换。
而机器一多某台机器发生发生故障的概率就会比较高,而且机器间数据的交换依赖于网络,网络也很有可能会有延时、丢包之类的问题。
分区容忍性就要求在分布式系统要考虑到分布式环境的复杂性的前提下能正常提供服务。
(原版cap中的p其实指的是网络分区现象[参考Wiki network partition] ,只由于网络设备的影响,分布式集群被划分成多个子网,但这样理解我始终想不通,可能这样解释更合理)
## 三种指标的意义
- CAP-P:
首先我们来看分区容忍性,由于我们讨论的就是分布式环境,我们的系统肯定不能被这网络环境机器环境所影响,分区容忍性就是个公认的前提,要么你就是很多个单机提供服务,但那不是分布式。为了实现分区容忍性,就需要我们设计多个数据副本,多个副本还不能在同一台机器上,甚至要在多个机房、多个地区存放副本。如果有必要机器之间的网络也需要多个通道,防止网络通路出现问题。
- CAP-CA:
三分钟分布式CAP理论就这么复杂
cap理论
前提环境保证了,我们就来讨论下读写功能。系统的功能无外乎输出输出,也就是读写操作咯。对于读写操作我们需要在一致性和可用性之间有所取舍,当然并不是完全舍去另一方,而是我们不能完美的同时实现C和A。
为啥呢,前提P已经说了我们需要多副本分布在多机器上,这副本之间同步数据是会有延时,其次如何保证在写的同时(副本未同步完成)我的读操作可能会发生在各个副本上,那我应该如何返回正确的数据。所以C和A只能完美保证一个。
## 例子
- 舍C保A(AP)的例子:
比如刚刚的微博这个例子,我们更新了一条微博,不是所有的人都能马上刷出来的,对于哪些还只能刷出旧的微博数据的人来说数据就和我真实的操作不一致了。然而这种业务也不需要要求我们强一致性,没有刷出我的最新微博,也不是什么大事,大不了认为我没有更新而已,对业务影响很小。但是呢也不能一直都不一致是吧,所以C还是不能丢的,可以迟到。
- 舍A保C(CP)的例子:
比如银行账户的例子,大家生活中也许也已经注意到了,银行转账需要几个小时甚至几天,都会显示正在转账中。这时就是视作一种丢失可用性的状态。当然这是业务决定的。
- 舍P保C又保A的场景:
不是分布式的场景的话,我们可以选择CA,比如我是个小银行,我的转账功能可以设计为多地账户不互通,只能本地转账,只在一台服务器上操作,保证可用性和一致性。但整体来看可用性和一致性都丢失了。
# 思考题 acid
通用的关系型数据库设计理论,需要满足四种指标:
- Atomicity 原子性:
- Consistency 一致性:
- Isolation 独立性:
- Durability 持久性:
三分钟分布式CAP理论的更多相关文章
- 分布式CAP理论
分布式CAP理论 来自wiki: 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下 ...
- 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consisten ...
- 分布式零基础之--分布式CAP理论
研究到分布式系统CAP理论,记录下来下回详细分析它: CAP是指三个单词的简称 C: 一致性(Consistence) 所有节点访问的都是同一份最新的数据副本. A: 可用性(Availability ...
- 分布式系统及CAP理论
一.集中式系统 在学习分布式之前,先了解一下与之相对应的集中式系统是什么样的. 集中式系统用一句话概括就是:一个主机带多个终端.终端没有数据处理能力,仅负责数据的录入和输出.而运算.存储等全部在主机上 ...
- 10分钟了解分布式CAP、BASE理论
CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. ...
- [转]10分钟了解分布式CAP、BASE理论
原文: https://www.cnblogs.com/chengtian/p/11278072.html ---------------------------------------------- ...
- 看完这篇,保证让你真正明白:分布式系统的CAP理论、CAP如何三选二
引言 CAP 理论,相信很多人都听过,它是指: 一个分布式系统最多只能同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance) ...
- 从分布式一致性谈到CAP理论、BASE理论
问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...
- 【转】分布式理论-CAP理论
一 CAP理论简述 CAP (Consistency, Availability, Partition Tolerance,) 理论是NoSQL数据库管理系统构建的基础. 强一致性:等同于所 ...
随机推荐
- Spring的一些资源
1.http://spring.io/ 2.http://projects.spring.io/spring-framework/
- extJS 动态引用加载(转)
ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取.这些代码都要写在Ext.onReady外面. 1.动态引用外部Js //加载配置可用 Ext.Loa ...
- zabbix主动监测客户端设置
主动/被动模式 主动模式和被动模式的区别一开始我也非常模糊,其实这是zabbix的两种工作方式,是相对于zabbix的agent端来说的,定义为: 主动模式:zabbix的agent端,也就是客户端, ...
- python使用websocket简单组建聊天室
server端 ###websocket_server### import socket import threading sock = socket.socket(socket.AF_INET, s ...
- 进程实时监控pidstat命令详解
pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行 ...
- map按照value值排序
map可以实现key到value的一一映射,如果是一对多的,我们可以使用multimap multimap<int,int>mp; mp.insert(make_pair(first,se ...
- Shell教程 之流程控制
1. if else 1.1 if if语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if ...
- MYSQL启用日志,和查看日志
mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: ...
- unity3d休闲篮球类游戏《Flick Basketball 》上线项目完整源码
下载地址: https://item.taobao.com/item.htm?id=576135964241
- bulk
bulk - 必应词典 美[bʌlk]英[bʌlk] n.大部分:主体:(大)体积:大(量) v.扩展:增大:堆积起来:形成大块 网络散装:大批:大量 变形复数:bulks:现在分词:bulking: ...