在分布式系统中,有一个基础理论叫做CAP
C:Consistence 系统数据一致性
A:Avalibility 系统可用性
P:Partition Tolerance分区容忍度
在分布式系统的设计中,没有一种设计可以同时满足一致性,可用性,分区容错性 3个特性。
1.由于分布式的系统,技术结构复杂,节点是集群,分区Partition会由于网络波动,故障,天灾人祸等各种原因,常态得到出现,分区是常态。
2.数据一致性的要求:可以根据需求和业务的逻辑而定,可能不要求一致性,也可能是要求一致性,在partition是常态下对数据一致性的要求。
3.如果对数据一致性的要求极高(强一致性:任意时间,访问系统的数据,都是完全一致性),加锁加事务出现,导致系统有可能在某些时间段不可用(web应用体现在响应极慢),对系统的可用性Avalibility要求低,反之,对数据一致性要求不高时,系统可用性高。
4.分区容忍度,数据的一致性要求高,分区容忍度(不允许分区影响太大),系统可用性,数据一致性要求低是分区容忍度低,可用性高。
结论:
CAP只允许其中3个存在,不能同时存在。
CP:分区出现时,要求容忍度高,数据一致性高,牺牲可用性。
AP:分区出现时,容忍度低,可用性高,牺牲了一致性。
AC:没分区的时候
数据的最终一致性(互联网系统系统可用性比较重要,可以根据CAP实现一个折中的效果,既有重要的可用性,数据一致性也可以使用):数据的强一致性,数据可以经过一段时间(计算时间单位,毫秒级,秒级),最终保持一致。