架构师训练营第六周作业
CAP原理:
C:Consistency
即一致性,访问所有的节点得到的数据应该是一样的。注意,这里的一致性指的是强一致性,也就是数据更新完,访问任何节点看到的数据完全一致,要和弱一致性,最终一致性区分开来。
A:Availability
即可用性,所有的节点都保持高可用性。注意,这里的高可用还包括不能出现延迟,比如如果节点B由于等待数据同步而阻塞请求,那么节点B就不满足高可用性。
也就是说,任何没有发生故障的服务必须在有限的时间内返回合理的结果集。
P:Partiton tolerence
即分区耐受性,这里的分区是指网络意义上的分区。由于网络是不可靠的,所有节点之间很可能出现无法通讯的情况,在节点不能通信时,要保证系统可以继续正常服务。
当网络分区失效发生的时候,如果取消操作,这样数据一致但是系统不可用;如果继续写入数据,那么数据的一致性就无法保证。
对于一个分布式系统而言,网络失效一定会发生,这也就代表着,分区耐受性必须保证,那就需要在可用性和一致性上必须二选一。
当网络分区失效,即网络不可用,如果选择一致性,那么系统就可能返回一个错误码或者反馈超时,即系统不可用;如果选择了可用性,那么系统一定可以返回一个数据,但是无法保证这个返回的数据是最新的。
对于分布式系统来说,三者无法同时满足,由于分区耐受性必须满足,即代表着可用性和一致性无法同时满足。
评论