CAP原理认为一个提供数据服务的存储系统无法同事满足数据一致性(Consistency所有应用程序都能访问得到相同数据),数据可用性(Availibility,在任何时候,任何程序都可以访问),分区耐受性(Partition Tolerance,系统可以跨网络分区线性伸缩)。
大型网站中为保证分布式系统的高可用性,一般会选择强化可用性(A)和伸缩性(P),而在一定程度上放弃一致性(C)。
数据一致性可分为:
1.数据强一致性
各个副本数据在物理存储中总是一致,数据更新操作和操作相应是一直的,只要操作相应通知失败,那么数据一定没被更新
2.数据用户一致
物理存储的各个副本的数据可能是不一致的,但是终端用户访问时,通过纠错和校验机制,可以确定一个一直的且正确的数据返回给用户。
3.数据最终一致
物理存储数据可能不一致,终端用户访问的数据也可能不一致(同一用户连续访问,结果不同;或不同用户同时访问结果不同),但是系统通过一段时间(通常比较短)的自我恢复和修正,数据最终会达到一致。
因为数据的强一致性很难满足,所以需要结合具体的业务逻辑使存储系统达到用户一致,保证最终用户访问的数据正确行。