一站式了解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!

相关推荐
校招VIP2 小时前
简历魔改短链接?不是好选择
面试·秋招·校招·简历·实习·27届·开发岗
阳明山水2 小时前
销量预测2025—2026:技术演进、实证发现与系统架构的系统性综述
人工智能·深度学习·算法·机器学习·架构
谢文峰2 小时前
当每个 Agent Skill 都在构建记忆层,记忆就已经成为 Runtime 基础设施
架构
预知同行2 小时前
AI Native 应用缓存架构实战:语义缓存、Prompt 缓存与响应缓存的三层设计
后端·架构
Lafar2 小时前
iOS 文件下载 断点续传
面试
预知同行2 小时前
AI 应用的可观测性设计:从 OpenTelemetry GenAI 语义约定到生产级落地架构
架构
TunerT_TQ2 小时前
证据优先:从“我认为”到“我证明”——大模型工程的第一性原理(第1期)
安全·架构
吴声子夜歌3 小时前
Java面试——设计模式(四)
java·设计模式·面试
yuqifang3 小时前
var deferred = jQuery.Deferred(); 使用示例
前端·javascript·面试
广东帝工智能安防3 小时前
BCAS桥梁防撞预警系统五层架构深度解析:从感知层到对接层的技术实现与选型指南
开发语言·人工智能·架构·边缘计算·桥梁防撞预警系统