week06 作业
CAP原理:
C:Consistency
即一致性,访问所有的节点得到的数据应该是一样的。这里的一致性指的是强一致性,也就是数据更新完,访问任何节点看到的数据完全一致,不同于弱一致性和最终一致性。
A:Availability
即可用性,所有的节点都保持高可用性。这里的高可用还包括不能出现延迟,比如节点B由于等待数据同步而阻塞请求,那么节点B就不满足高可用性。也就是说,任何没有发生故障的服务必须在有限的时间内返回合理的结果集。
P:Partiton tolerence
即分区容忍性,这里的分区是指网络意义上的分区。由于系统是分布式部署,任何一台服务器都有可能处于不可用的状态,另外还有一个原因是网络不可靠,导致对某台服务的通信出现异常。那么分区容忍就是要保证分布式系统里面任何一台服务宕机或者失联的时候,系统仍然是可用的。
CAP原理说的是一个分布式系统不可能同时满足C和A和P这3个条件。所以系统架构师在设计系统时,不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。由于服务器宕机的不可抗力因素以及网络的不可靠性质,大多数分布式系统都会实现P,也就是分区容忍性,之后在C和A中做抉择。
虽然说我们设计系统时不能同时保证拥有三点。但是也并不是说,保证了其中2点后,就要完全抛弃另外一点。只是相对的要做一些牺牲。比如在保证CP的情况下,虽然没办法保证高可用性,但这不意味着可用性为0,我们可以通过合理的设计尽量的提高可用性,让可用性尽可能的接近100%。同理,在AP的情况下,也可以尽量的保证数据的一致性,或者实现弱一致性,即最终一致性。
评论