对cap定理的理解

CAP定理是设计分布式系统的基础。web

CAP定理指出分布式系统不能同时知足如下三个点:网络

1.一致性(Consistent)tcp

2.可用性(Availability)分布式

3.分区容忍性(Partition Tolerance)设计

这三点对于设计分布式的web services是很是重要的。同步

这里先说一下这三点的含义,要理解它们的含义,首先须要知道CAP定理提出时是针对分布式的web services系统,这样一个系统是由N多节点构成,为了便于说明,咱们假定系统只有两个节点{N1,N2}。
it

一致性是说在节点上的操做是原子性的,对一个节点上的数据的修改,在全部节点上同步,这期间不能有其余操做。好比一个在N1上的write操做,必须是原子性的,也即在N1写完并同时同步到N2上,这整个过程是原子性的,在这个写的过程当中不能有读的操做,不然可能读到不一致的结果(例如N1修改完数据但N2还未同步)。io

可用性是指节点一旦接受到请求(好比web request),必须给予 回应。回应的内容能够是成功取到的数据或者失败消息。好比N1接到一个请求,必须返回一个请求结果或者失败结果,若是不给予任何回应,就违背了可用性。基础

分区容忍性是指容许节点间丢失任何消息。节点间的通讯会发送消息,这些消息在网络中可能会丢失,这是客观存在的。好比N1和N2在一个局域网里相互发送消息,无论使用什么协议(tcp,udp等),二者之间均可能丢失消息包,理论上最坏状况会丢掉全部的包。service

因此CAP定理是说,分布式系统在有消息丢失的网络节点间不可能同时保证操做的原子性以及对请求一定给予回应这一特性。例如知足原子性不能知足可用性的状况:在N1上写数据,N2须要同步数据,假设N1和N2之间的消息所有丢失(最坏的状况),此时N2上的数据不一致,要保证这个写操做的原子性,须要等到N2上的数据同步完成,此时其余操做都不能进行,节点接受的请求不能给予回应,系统知足不了可用性。

相关文章
相关标签/搜索