CAP 理论

CAP 理论

CAP 是反应了分布式系统中的三个指标: Consistency (一致性), Availlability (可用性)Partion Tolerance(分区容错性)。

CAP 理论的核心是说 ,C、A 、P 这三个指标不能同时做到。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvCPpWuk-1605430605169)(https://imgkr2.cn-bj.ufileos.com/8f0ef11c-dbaa-40d8-9100-35dc41733170.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=gxFF1V5RQ4YcRvOUSnrjwGlFVrU%253D&Expires=1605516800)]

Consistency(一致性)

指数据在多个副本之间能够保持一致的特性(严格的一致性)

Availability(可用性)

指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据)

Partition tolerance(分区容错性)

分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障

为啥不能同时满足?

比如说 G1 G2 两台跨区服务器。G1 向 G2 发送一条消息,G2 是收不到的,这样分区问题就必须考虑, 也就是分区容错性。一般来说 P(分区容错是要成立的)。剩下的C 与 A 是无法同时满足的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ug9mHiXs-1605430605172)(https://imgkr2.cn-bj.ufileos.com/119c90a8-f8ad-42a0-9cd1-d54d5ce4b7a3.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=YfR71EGXlv7%252FV7EcM7v3enkLHN4%253D&Expires=1605496226)]

G1 G2 服务器开始都是 v0 但是对 G1 进行了写操作,记录变成了 v1 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uojKYxkg-1605430605175)(https://imgkr2.cn-bj.ufileos.com/dbc84038-cfd7-42e7-b1d0-89da43949cae.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=d%252F7PdTMrIdsKsn%252FjpuGpEnpHKjE%253D&Expires=1605503183)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ctmMEFJi-1605430605177)(https://imgkr2.cn-bj.ufileos.com/4ed0e466-17ea-4eec-9d89-50f0211d551f.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=m8pTmdHQtA9fv7OoFGUYv%252F2pgvY%253D&Expires=1605503399)]

用户向 G1 发起读操作,返回v1; G2 返回的是 v0 这样就不一致了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDo2w0YL-1605430605179)(https://imgkr2.cn-bj.ufileos.com/8f5d97eb-4a90-4508-8676-b7fc31220b15.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=pyRNUKZrMcK7kMHLUSW3Ra0Kt7I%253D&Expires=1605505051)]

为了数据一致性,也就是为了让 G2 也变成为 v1,就要在 G1 写操作的时候, 让 G1 向 G2 发送一条消息,要求 G2 改成 v1。这样下次读的时候,读到的就是 v1。

但是要注意的是,在 G1 向 G2 的同步过程中, G2 是不可用的,只有等数据同步完之后,才放开读写,这样才能保证一致性。否则在同步过程中,放开读写,这样数据就不一致了。

BASE 理论

Base 理论,也叫做基本可用,是采用合适的方式达到最终一致性(Eventual Consitency)。

  • (Basically Available) 基本可用

分布式系统出现故障的时候,允许损失部分可用性,保证核心可用。

  • Soft State(软状态)

接受一段时间的状态不同步,与中介状态,而改中间状态不影响整体的可用性。这里中间状态就是 CAP 理论中的数据不一致。

  • Eventually Consistent 最终一致性

不可能一直都是软状态,必须有个时间期限,数据最终一定能达到一致的状态,一次所有客户端对系统的数据访问最终都能够获取最新的值。

参考资料

  • 英文版的:https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/

  • CAP 理论十二年回顾:"规则"变了:https://www.infoq.cn/article/cap-twelve-years-later-how-the-rules-have-changed

  • CAP 定理的含义:http://www.ruanyifeng.com/blog/2018/07/cap.html

欢迎关注公众号:程序员开发者社区

在这里插入图片描述

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 19.89元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值