CAP理论
2007年7月,在PODC会议上Eric Brewer提出了著名的CAP理论,CAP分别代表的是Consistency,Availability,Partition-Tolerance三个短语的首字母,翻译成中文即数据一致性,数据可用性,分区耐受性。如图所示:
- Consistency:所有的节点在同一时刻看到的数据是一样的,也就是数据的一致性
- Availability:无论成功与否,都要保证每个请求都能收到响应。
- Partition-Tolerance:如果有错误或者信息丢失,系统依然可以继续运行。
在分布式系统中想让以上三个条件全部满足那是基本不可能滴,但是我们可以根据系统的实际需求可以对以上三项进行设计和权衡。
- CA:放弃P——分区耐受性,正如上图所示,正是我们传统的单机数据库——DBMS。
- AP:放弃C——数据一致性,这个是大部分分布式系统设计的选择。
- CP:放弃A——数据可用性,一般不会这么干,如果网络有问题的话,系统也基本就废了。
所以一般来讲还是首选A,至于P和C,根据实际需求在做讨论。
BASE模型
- Basically Available:基本可用。
- Soft State:软状态,可以一段时间内状态不同步。
- Eventually consistent:最终一致性。
以上就是BASE模型,在大型网站中,一般都不会选择强一致性,强一致性意思就是数据在物理存储中总是一致的,想要保住强一致性,服务器需要付出较大的代价,所以一般会选择最终一致性,过程中一致不一致无所谓,只要最终结果一致就行了。