分布式系统 - CAP

定义

It is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees:

  • Consistency: every read receives the most recent write or an error
  • Availability: every request receives a (non-error) response – without guarantee that it contains the most recent write
  • Partition Tolerance: the system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes

在一个分布式存储系统中,不可能同时满足以下三点:

  • 一致性:每次读请求都可以获取到数据的最新副本或者出错
  • 可用性:每次读请求都能获得一个非错响应 - 但是不保证获取的数据为最新数据
  • 分区容错性:系统仍然能够对外提供一致性和可用性保障,即使有任意数量的消息在网络传输时被丢弃或延时送达

解释

CP系统

分布式系统 - CAP_第1张图片
CP系统

在上图的CP系统中,网络分区阻止了Slave从Master同步最新数据到本地,因此Slave无法得知本地数据副本是否为最新数据,为了保证一致性,因而拒绝对外提供响应。

  • 该系统具备分区容错性,因为它允许节点通信出现故障
  • 该系统具备一致性,因为它拒绝对外提供非最新的数据副本
  • 该系统可用性较低,因为它会因为无法判断本地副本是否为最新而拒绝响应

AP系统

分布式系统 - CAP_第2张图片
AP系统

在上图的AP系统中,网络分区阻止了Slave从Master同步最新数据到本地,因此Slave无法得知本地数据副本是否为最新数据,为了保证可用性,Slave对外提供本地的副本,即使它可能不是最新数据。

  • 该系统具备分区容错性,因为它允许节点通信出现故障
  • 该系统具备高可用性,因为它总会提供一个数据副本,即使它非最新
  • 该系统一致性较差,因为它无法确保提供的数据总是最新

CA系统

分布式系统 - CAP_第3张图片
CA系统

在上图的CA系统中,网络是可靠的,因此可以确保Master节点的数据更新同步到Slave节点

  • 该系统具备一致性,因为它总能提供数据的最新副本
  • 该系统具备高可用性,因为它的所有节点总能提供一个数据响应
  • 该系统不具备分区容错性,因为这里网络是可靠的,不会出现分区(现实很残酷)

你可能感兴趣的:(分布式系统 - CAP)