CAP理论

分布式系统在设计与处理时,往往会考虑可用性与数据一致性的问题,因此引入了 CAP 理论分析分布式系统设计

定义

维基百科:

  • Consistency : Every read receives the most recent write or an error

  • Availability : Every request receives a (non-error) response, without the 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

解释

  • 一致性: 客户端每次读取数据时,要么返回错误,要么返回最新数据。

    • 一致性强调的是数据是最新、一致且正确的。
  • 可用性: 客户端每次请求都能得到非异常的响应,可以不保证数据是最新的。

    • 可用性强调的是不向外界暴露错误或异常
  • 分区容错性: 当节点之间的网络出现丢包时,系统仍能对外提供服务。

    • 分区容错性强调的是服务不会因一个节点故障导致系统错误,整个系统能够保证不宕机。

CAP 理论即:一个分布式系统,不可能同时做到以上三点

在这里插入图片描述

C、A、P的冲突

若要保证一致性与可用性,就必须舍弃分区策略。

在单机服务上,我们可以保证数据的高一致性与可用性,但加入分区之后就不可以,因为我们无法忽略网络延迟与网络故障。

若要保证一致性和分区容错性,就无法保证可用性。

维护数据一致性在分区策略中必须采取数据同步策略,那么在数据同步期间,就必须使得新的请求阻塞,否则就会破坏数据一致。

若要保证可用性和分区容错性,就必须舍弃一致性。

若保证系统实时访问,就必定存在在节点之间做数据同步的过程中,访问不同节点出现的不同数据。

C、A、P的取舍

舍弃 P,即放弃分区。

这在单机服务中是可行的,但违背了分布式系统的设计初衷,所以分布式系统一般都是在 C、A之间抉择。

舍弃 A,即放弃高可用。

这类系统一般是要求强数据一致性的系统,例如对于大多数的分布式数据库来说,数据一致性是最基本的要求。但分区之间的同步会限制用户对系统的访问,而且需要面临网络故障或消息丢失导致的同步时间延长,影响客户体验的问题。

舍弃 C,即放弃一致性。

为了保证高可用,分区之间会使用本地数据提供服务,因此会出现全局数据可能不一致的情况。此类系统一般是为了提高用户体验而牺牲了一定的数据一致性。例如商品抢购、订单等场景,可能用户浏览的库存余量并不是真实的库存,但是避免了用户访问时出现严重的阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值