一站式了解CAP理论

引言

现代网站搭建的一般都是分布式系统,而聊到分布式系统的设计与构建,那就无法避开CAP理论,今天来聊一下CAP理论

CAP定义😪

cap理论是指设计分布式系统时,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个属性最多只能同时满足两个。

  1. 一致性(Consistency) :每个读操作都能看到最近一次写操作的结果。在这个前提下,所有的节点在同一时间点上看到的数据是一致的。这与ACID事务中的一致性概念相似。CAP理论中的一致性是指强一致性,即所有节点在同一时间看到相同的数据。
  2. 可用性(Availability) :系统持续响应请求的能力。即使出现一个或多个节点故障,整个系统仍然能够处理请求,并返回响应。
  3. 分区容忍性(Partition tolerance) :系统能够在网络分区的情况下继续运作。网络分区指的是由于网络原因导致分布式系统中的部分节点之间无法通信的情况

CA,CP,AP😵

CA

ca是指放弃了分区容忍性,选择可用性和一致性,但是这样就不符合分布式系统的设计初衷,在实践中,由于网络分区几乎是不可避免的,因此这种组合实际上很少被考虑。在这里就不做多解释

CP

ca是指放弃了可用性,优先选择一致性和分区容忍性。那么系统在遇到网络分区时,会优先保证数据的一致性,可能会牺牲系统的可用性。

在需要强一致性的场景,就需要选择cp来作为指导原则。如银行转账、交易系统等,应选择CP系统,保证数据的一致性。为了保证各个节点数据的强一致性,放弃了可用性,所以当某个分区出现故障,系统可以不断重试直到分区恢复可用,事务统一成功或者统一失败。

AP

ap是指放弃了一致性,优先选择可用性和分区容忍性。则在网络分区发生时,系统会优先保证可用性,可能会牺牲一致性。

在需要强一致性的场景,就需要选择ap来作为指导原则。如社交网络、电商网站等,可以选择AP系统,保证系统的可用性。放弃了一致性,我们可以选择合适多的分区,这样用户访问速度和体验感就越高,实现高可用性,当数据写入主节点之后,通过异步方式同步数据到其他节点。

总结❤️

注意,在一个系统中,cap并不是三选二的情形,也可以在不同场景中选择不同的组合。这意味着在实际应用中,系统可以在不同时间点对不同的操作做出不同的权衡。此外,现代分布式系统通常通过各种方式来尽量平衡三者之间的关系,以达到最佳实践效果。在不同的业务场景下,可以根据实际需求动态调整一致性和可用性的优先级。

如果你看了这篇文章有收获可以点赞+关注+收藏🤩,这是对笔者更新的最大鼓励!如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!

相关推荐
huipeng9261 小时前
企业级微服务开发实战(一):项目启动与工程化设计
java·开发语言·spring boot·spring cloud·微服务·云原生·架构
kyriewen4 小时前
用魔法打败魔法:我让AI替我去面试前端岗,AI面试官给我打了92分,还发了offer
前端·javascript·面试
沪漂阿龙4 小时前
Hermes Agent Sessions 架构详解:AI 如何跨平台延续任务、找回历史、持续推进工作
人工智能·架构
500844 小时前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
Lkstar5 小时前
Vue keep-alive 原理全解:LRU 缓存策略、源码级理解
前端·vue.js·面试
贵慜_Derek5 小时前
《从零实现 Agent 系统》连载 07|记忆系统:短期上下文 vs 长期外部记忆
人工智能·设计模式·架构
plainGeekDev5 小时前
Android内存面试题:OOM都解决不了,性能优化从何谈起?
android·面试·kotlin
05候补工程师6 小时前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
dinl_vin6 小时前
FastAPI 系列·(三):依赖注入——用 Depends 构建分层架构
架构·fastapi
marsh02066 小时前
56 openclaw与Serverless:无服务器架构下的应用实践
云原生·架构·serverless