分布式系统的CAP理论简介

分布式系统定义

分布式系统是其组件分布正在连网的计算机上,组件之间通过传递消息进行通信和动作协调的系统[1]。通过该定义可知,分布式系统具有以下重要特征:组件的并发性、缺乏全局时钟、组件故障的独立性。

CAP理论

CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容错性(Partition Tolerance)

一致性(Consistency)

在分布式系统中,是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的结果达成一致。更详细的解释就是,当其中某个服务器收到客户端的一组指令时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到同样的指令,这样的话所有的服务器会产生一致的结果,看起来就像是一台机器一样。

分布式系统的一致性算法分为:

  • 弱一致性(最终一致性),例如DNS域名解析。
  • 强一致性,例如主从同步、多数派(读/写)、Paxos、Raft(multi Paxos)、ZAB(multi Paxos)。

可用性(Availability)

对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。所以,一般我们在衡量一个系统的可用性的时候,都是通过停机时间来计算的。

通常我们描述一个系统的可用性时,我们说淘宝的系统可用性可以达到5个9,意思就是说他的可用水平是99.999%,即全年停机时间不超过 $(1-0.99999)36524*60 = 5.256 min$ ,这是一个极高的要求。

分区容错性(Partition Tolerance)

分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

好的分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,或者是机器之间有网络异常,将分布式系统分隔未独立的几个部分,各个部分还能维持分布式系统的运作,这样就具有好的分区容错性。

简单点说,就是在网络中断,消息丢失的情况下,系统如果还能正常工作,就是有比较好的分区容错性。

参考连接

  1. George Coulouris, Jean Dollimore, Tim Kindberg,Gordon Blair,金蓓弘,马应龙,等译. 分布式系统概念与设计[M].2013.
  2. Zookeeper之分布式系统的一致性算法, by 养兔子的大叔.
  3. 分布式计算,by wikipedia.
  4. 分布式系统的CAP理论,by HollisChuang.