一、分布式系统的CAP理论是什么
分布式系统的构建有一个重要理论——CAP理论,这一理论的出现深刻影响着分布式系统的发展和设计,那么什么是CAP理论呢?
CAP理论是加州理工大学伯克利分校的Eric Brewer教授在2000年7月的ACMPODC会议上首次提出的,它是Eric Brewer在Inktomi期间研发搜索引擎、分布式Web缓存时得出的关于数据一致性(C:Consistency)、服务可用性(A:Availability)、分区容错性(P:Partition-tolerance)的一个猜想。
在这个猜想提出的2年以后,来自麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了Eric Brewer教授的CAP猜想是成立的,从此,CAP理论在学术上正式成为了分布式领域公认的定理,并深刻影响着分布式系统的发展。
CAP理论告诉我们, 一个分布式系统不可能同时满足数据一致性、服务可用性和分区容错性这三个基本需求,最多只能同时满足其中的两个。
二、分布式系统CAP特性如何取舍
分布式系统的CAP理论告诉我们,分布式系统只能满足CAP中的两个需求,那么舍弃哪一个比较好呢?
1、满足CA舍弃P,也就是满足一致性和可用性,舍弃容错性。但是这也就意味着你的系统不是分布式的了,因为涉及分布式的想法就是把功能分开,部署到不同的机器上。
2、满足CP舍弃A,也就是满足一致性和容错性,舍弃可用性。如果你的系统允许有段时间的访问失效等问题,这个是可以满足的。就好比多个人并发买票,后台网络出现故障,你买的时候系统就崩溃了。
3、满足AP舍弃C,也就是满足可用性和容错性,舍弃一致性。这也就是意味着你的系统在并发访问的时候可能会出现数据不一致的情况。
实时证明,大多数都是牺牲了一致性:就好比是你买火车票,本来你看到的是还有一张票,其实在这个时刻已经被买走了,你填好了信息准备买的时候发现系统提示你没票了,这就是牺牲了一致性。
但是不是说牺牲一致性一定是最好的,就好比张三给李四转了100块钱,这时候必须保证张三的账户上少了100,李四的账户多了100,因此需要数据的一致性,而且什么时候转钱都可以,也需要可用性,但是转钱失败是可以允许的,即可以舍弃容错性。