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

相关推荐
蜀道山老天师3 分钟前
从零读懂 K8s:核心概念、集群架构与工作原理
容器·架构·kubernetes
zlinear数据采集卡1 小时前
2mV纹波的代价:硬核拆解ZLinear模拟前端放大器与正负可调电源设计
arm开发·单片机·嵌入式硬件·fpga开发·架构·开源
阳明山水1 小时前
TimesFM与Moirai MoE零样本预测解析
人工智能·深度学习·算法·机器学习·架构
SamDeepThinking2 小时前
Java面向对象在JVM里怎么实现
java·后端·面试
霸道流氓气质2 小时前
微服务架构核心概念业务示例
微服务·云原生·架构
带娃的IT创业者2 小时前
当推理速度突破物理极限:深度解析 MiMo-v2.5-Pro-UltraSpeed 的 1000 TPS 架构革命
人工智能·架构·大模型·架构优化·mimo·tps·推理速度
XUHUOJUN2 小时前
从 S2D 到 Azure Local Storage Capability:微软 HCI 存储控制面的演进趋势
架构·azure local·storage spaces
一枚码农出身的猎头3 小时前
岗位招聘:架构师,base湖南长沙,70-80w
java·架构
2601_954706493 小时前
云虚拟化终端架构解析:ARM 云端集群部署与自动化运维实践
运维·arm开发·架构
米尔的可达鸭3 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构