CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
网上有很多关于CAP的介绍,其中关于一致性、可用性及分区容错性的介绍也有很多,但是这里需要重新纠正一下CAP中这三个特性的意思(https://en.wikipedia.org/wiki/CAP_theorem ):
一致性
每次读取都会收到最新的写入数据或错误信息。
可用性
每个请求都会收到(非错误的)响应,但不能保证响应包含最新的写入数据。
分区容忍性
尽管网络节点之间会丢弃(或延迟)任意数量的消息,系统仍然能够继续运行。
注意,可用性和分区容错性很多人都不会理解错误,但是一致性可能和大家认为的不太一样(甚至和网上99%讲CAP的文章都不一样)。
这里面的一致性,其实指的是强一致性,但是强一致性也并不是大家普遍认为的:"all nodes see the same data at the same time",这只是其中一种情况,或者说是一种强一致性模型。