大规模数据处理09:cap定理
在设计分布式系统架构时都会讨论到的一个定理--CAP定理
在任意的分布式系统中,一致性,可用性和分区容错性,这三种属性最多只能同时存在两个属性。
C属性:一致性
一致性在这里指的是线性一致性。在线性一致性的保证下,所有分布式环境下的操作都像是在单机上完成的一样
A属性:可用性
在分布式系统中,任意非故障的服务器都必须对客户的请求产生响应,当系统满足可用性的时候,不管出现什么状况(除非所有的服务器全部崩溃),都能返回消息。
P属性:分区容错性
分区容错性,分为两个部分,“分区”和“容错”
在一个分布式系统里,如果出现一些故障,可能会使得部分节点之间无法连通,由于这些故障节点无法联通,整个网路就会被分成几块区域,而数据分散在这些无法连通的区域中的情况,就被叫做“分区”
分区容错性,在这里指的是我们的系统允许网络丢失从一个节点发送到另一个节点的任意多条消息 。 如果没有了分区容错性,也就是说系统不允许这些节点间的通讯出现任何错误的话,那我们日常所用到的很多系统就不能再继续工作了。
所以在大部分的情况下,系统设计都会保留P属性,而在C和A中二选一。
CP系统:GoogleBigtable,HBase,MongoDB,Redis,MEMCacheDB,这些存储架构都是放弃了高可用性,而选择CP属性的。
AP系统:Amazon Dynamo系统以及它的衍生存储系统Apache Cassandra和Voldemort都是属于AP系统。
CA系统:Apache Kafka是一个比较典型的CA系统。