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

相关推荐
C澒2 分钟前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
roman_日积跬步-终至千里5 分钟前
【架构实战-Spring】动态数据源切换方案
架构
C澒9 分钟前
Remesh 框架详解:基于 CQRS 的前端领域驱动设计方案
前端·架构·前端框架·状态模式
晚霞的不甘33 分钟前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
马猴烧酒.33 分钟前
【面试八股|JVM虚拟机】JVM虚拟机常考面试题详解
jvm·面试·职场和发展
C澒38 分钟前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架
Re.不晚1 小时前
MySQL进阶之战——索引、事务与锁、高可用架构的三重奏
数据库·mysql·架构
松☆1 小时前
深入理解CANN:面向AI加速的异构计算架构
人工智能·架构
麦聪聊数据1 小时前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构
2的n次方_2 小时前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构