- 数据一致性(consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency)
- 服务可用性(availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待
- 分区容错性(partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务
如果选择了CA而放弃了P,那么当发生分区现象时,为了保证C,系统需要禁止写入,当有写入请求时,系统返回error(例如,当前系统不允许写入),这又和A冲突了,因为A要求返回no error和no timeout。
因此,分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构
反证:
如果CAP三者可同时满足,由于允许P的存在,则一定存在节点之间的丢包,如此则不能保证C
因为允许分区容错,写操作可能在节点1上成功,在节点2上失败,这时候对于Client 1 (读取节点1)和Client 2(读取节点2),就会读取到不一致的值,出现不一致的情况。
如果要保持一致性,写操作必须同时失败,也就是降低系统的可用性。
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END