分布式理论之CAP
分布式理论之CAP

分布式理论之CAP

前言

在分布式系统理论中,以CAP理论为基石,Base理论为拓展,paxos算法为模板。逐渐形成了一套分布式系统的主体框架。

本文主要以CAP理论为引导,展开讲解分布式的算法原理。

 

什么是CAP

CAP是Consistency ,Availability,Partition Tolerance的单词首字母缩写。

Consistency(一致性)

是分布式系统所要解决的核心问题,即 如何在多个数据节点间通过一致性算法,使得客户端收到操作成功的返回值时,该系统中的所有节点对某一个数据达成一致。

(备注:客户端收到失败或者超时时,该系统中数据仍然是一致的)

Availability(可用性)

是一个分布式系统的正常响应时间,占总运行时间的比重。当比重越高,则称其为可用性越强。

Partition Tolerance(分区容错性)

是当分布式系统中因为部分节点的网络消息暂时不可达,但是仍然可以对客户端提供服务。

 

CAP理论指出,现在的分布式系统中,这三者必不可能同时达成,只能最多达成其中两个。

 

CAP的使用

CP:同时具备了分区容错性和一致性。特点为不保证可用性,但保证分布式的节点可以容忍部分节点失效时提供服务,并且保证有效节点内的数据一致。代表为etcd,ZooKeeper。CP系统一般遵从base理论,从而在一段时内达成最终一致性,从而间接提高了系统的实际可用性。完全的cp在工程实现中其实是不好的实现(可用性太低)。

AP:和CP偏执于一致性相比,AP系统偏向于用户友好型,高响应。整体可用性提升,很少遇上等半天收到一个超时或者失败的情况。(略微夸张的说法)。古人云有得必有失,AP可用性提升的背后是节点数据的不一致,最坏的情况下,可能某一个时刻每个节点的数据都不一样。查询的时候虽然会立即获得一个返回值,但不一定正确。代表为eureka.

CA:放弃了分区容错性,最直接的后果就是少了任何一个节点,都无法进行服务。如果是CA的分布式系统属实没人敢用。一般以单节点的系统为代表,例如传统的mysql.

 

 

当我们设计一个分布式系统的时候,正如同其他算法一样,没有一种可以应对所有的场景。

具体选择AP或是CP首先要分析需求,分解实际的应用场景。一般来说,如果单条数据不重要,而且会连续更新,则使用AP.如果单条数据特别重要,或者数据只会发送一次则使用CP。

 

发表评论

您的电子邮箱地址不会被公开。