CAP定理

CAP定理,第1张

CAP定理 一 点睛

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。

分布式系统的最大难点,就是各个节点的状态如何保持一致。CAP 理论是在设计分布式系统的过程中,处理数据一致性问题时必须考虑的理论。

二 什么是 CAP 理论

Consistency:一致性,等同于所有节点访问同一份最新的数据副本。

Availability:可用性,每次请求都能获取非错的响应,但不能保证获取的数据都是最新的。

Partition tolerance:分区容错性,分区相对于通信的时限要求。如果系统不能在时限内达成数据一致性,则意味着发生了分区的情况,必须就当前 *** 作在 C 和 A 之间做出选择。

这三个性质对应了分布式系统的三个指标。

CAP 理论说的就是:一个分布式系统,不可能同时做到这三点。如下图所示。

三 解读

在互联网系统中,P是前提,一定要保证。因为用户分布在全世界的不同地方,用户和服务可能不在同一网络中,即使是服务本身,也会部署在不同的网络中。这样就只能在A 和 C 之间进行选择了。

对于大多数的互联网免费业务来说,为了提升用户体验,保证高可用,往往会牺牲短时间的一致性,并不会影响用户体验的流畅性。所以我们在考虑柔性服务的时候,大都考虑如何满足可用性,在一致性得不到满足的时候,如何让用户感知更好。

例如,即时通信软件中的好友资料修改了,如果是昵称,则尽快同步给多个服务副本,让他的好友可以尽快获取更新的资料,如果是图像,则可以等用户主动点击的时候再去更新。用户主动点击的时间间隔,往往会超过系统的同步时间间隔。用户使用客户端缓存查看头像,也是能够接受的体验。

有时用户不会关心数据是否同步,关心的是 *** 作是否受影响。例如,用户浏览电商网站,把商品加入购物车。如果用户本地数据和网站服务端不一致(网络不好),那么还可以让用户继续进行 *** 作(将产品加入购物车)。当网络变好后,可以把两边数据合并,让用户一直保持流畅的体验。

根据 CAP 理论,我们发现,在实现分布式系统的过程中,只能在 A 和 C 之间做选择。

所以实现架构层面的柔性需要根据产品的特性,选择在异常情况下,是优先保证可用性,还是优先保证一致性。

例如,在支付类业务中,用户资产的准确性相对可用性来说更重要,否则数据不一致会造成资产损失,而且很难追回消费的资产。当数据未同步时,可以先禁止用户的写 *** 作,此时一致性的重要性优于可用性。

在互联网大多数免费服务中,更多的是要 *** 作服务的可用性。例如,搜索引擎更新的搜索缓存,各个节点的数据没有同步,不同时刻用户搜索同一个词得到的结果不同,但并不影响用户体验。如果此时不让用户搜索,则会严重影响用户体验。

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存