CAP理论: C:这里的C指的是强一致性,同一时刻不同的客户端获取到的数据版本都是相同的 A: 可用性,指的是系统会响应客户端的每一个请求 P:分区容忍性,指的是当系统里面某个节点与其他节点通讯切断(导致节点间数据不一致)系统仍然可以正常工作
互联网应用P是必须保证的,但是A和P为什么不能同时满足呢?
因为如果需要保证强一致性,那么当系统节点出现数据不一致的时候就要进行数据同步,那么这期间系统是无法保证强一致性的,所以如果数据同步期间有请求打到Node1节点,系统将会告知客户端系统不可用请稍后重试,当然系统也可以把Node1节点上的旧版本的数据返回给客户端(最终一致性,Base理论)举个AP的例子: 用户在Node1节点设置了自己的新的头像,然后在Node2节点查看自己的头像,有可能看到的还是老头像。
举个CP的例子: 用户在Node1节点充值了100元,然后在Node2节点查看余额,如果这个时间节点之间还没有同步,那么将告知服务重试.
CP:redis、zookeeper(最终一致性还是强一致性?)
AP:euraka、关于Raft协议,可以看一下这个文章