2025年一篇文章读懂什么是CAP(基础入门)

一篇文章读懂什么是CAP(基础入门)辰兮要努力 hello 你好我是辰兮 很高兴你能来阅读 昵称是希望自己能不断精进 向着优秀程序员前行 博客来源于项目以及编程中遇到的问题总结 偶尔会有读书分享 我会陆续更新 Java 前端 后台 数据库 项目案例等相关知识点总结 感谢你的阅读和关注

大家好,我是讯享网,很高兴认识大家。

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…

一、什么是CAP

Consistency (一致性)

一致性是指“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。

Availability (可用性):

可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。

Partition Tolerance (分区容错性):

分区容错性是说“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。

It states, that though its desirable to have Consistency, High-Availability and Partition-tolerance in every system, unfortunately no system can achieve all three at the same time. 在分布式系统的设计中,没有一种设计可以同时满足一致性,可用性,分区容错性 3个特性 

讯享网

二、业务场景

2.1 权衡取舍

分布式系统中,分区容错性必不可少,因为需要总是假设网络是不可靠的。

在这里插入图片描述
讯享网
其实我们也只会对分布式系统谈分区容错性,单体系统不存在此概念

所以CAP 理论实际上是要在可用性和一致性之间做权衡。

可用性和一致性往往是冲突的,很难使它们同时满足。在多个节点之间进行数据同步时

2.2 AP应用案例

举例:比如分布式系统中的订单系统和库存系统一般是两套系统,正常是新建订单后调用库存系统再减少库存,再返回给用户,但是这样执行流程太长,用户可能等待时间,所以一般用户下单后我们采用异步扣除库存【解耦】,放弃了数据的高一致性,保障了用户的使用流畅性
在这里插入图片描述
继续分析:如果库存系统挂掉,订单系统也是可以正常下单的,不会影响用户体验

如果最后数据不一致怎么解决:我们可以通过日志的形式去记录对应的订单信息,同样会有专门的运营人员对数据,如果数据不一致,我们可以通过人工补偿等方法实现最终一致性


相同举例:比如用户抢购的应用场景,可能前几秒你浏览商品的时候页面提示是有库存的,当你选择完商品准备下单的时候,系统提示你下单失败,商品已售完。这其实就是先在 A(可用性)方面保证系统可以正常的服务,然后在数据的一致性方面做了些牺牲,虽然会影响一些用户体验,但也不至于造成用户购物流程的严重阻塞。

2.3 CP应用案例

举例: 比如我们在涉及到银行金钱相关系统注册验证,转账等等,可能会发现等待时间较长,这里我们就要保证数据的高度一致性,用户可以适当等待也不应该照成系统数据错误。


📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

📚愿我们奔赴在各自的热爱里!

小讯
上一篇 2025-03-15 12:30
下一篇 2025-01-26 14:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/59301.html