早上在CSDN上看到一篇文章 介绍了分布式存储系统的几条原则,感觉CAP理论对于理解关系型数据库和NoSQL的优劣和分布式系统非常有帮助。
CAP:Consistency、availability、Tolerance of network Partition即一致性、可用性和分区容忍性。
一致性(C):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;
可用性(A):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的;
分区容忍性(P):在出现网络分区(比如断网)的情况下,分离的系统也能正常运行;
对于分布式存储系统而言,分区容错性(P)是基本需求,因此只有CP和AP两种选择。CP模式保证分布在网络上不同节点数据的一致性,但对可用性支持不足,这类系统主要有BigTable, HBASE, MongoDB, Redis, MemcacheDB, Berkeley DB等。AP模式主要以实现"最终一致性(Eventual Consistency)"来确保可用性和分区容忍性,但弱化了数据一致性要求,典型系统包括Dynamo, Tokyo Cabinet, Cassandra, CouchDB, SimpleDB等。
-------以下摘录:
2000年Eric Brewer教授提出了著名的CAP理论,即:一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。2002年MIT的Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。因此系统架构师不要把精力浪费在如何设计才能同时满足CAP三者的完美分布式系统,而是应该研究如何进行取舍,满足实际的业务需求。