分布式事务--CAP理论
概念
cap理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项.
- 一致性:对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败;即所有节点拥有数据的最新版本。
- 可用性:任何客户端的请求都能得到响应数据,不会出现响应错误;即服务一直可用且响应时间正常
- 分区容忍性:大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。
应用
权衡C、A、P
- 对于分布式系统而言,P为必选项,因为不选P等于放弃了分布式;
- CP架构:放弃可用性,追求一致性和分区容错性。我们熟悉的ZooKeeper就是采用了CP一致性,这意味着面对网络分区时,为了一致性,它是不可用的。
- AP架构:放弃强一致性,追求分区容错性和可用性,这是很多分布式系统设计时的选择。Base理论也是根据AP来扩展的。
注意:在不存在网络失败的情况下(分布式系统正常运行时),C和A能够同时保证。只有当网络发生分区或失败时,才会在C和A之间做出选择。
C与A的矛盾
- 一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。
- 如果保证Partition1和Partition2的一致性,那么 Partition1 必须在写操作时,锁定 Partition2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,Partition2 不能读写,没有可用性。
- 如果保证 Partition1和Partition2 的可用性,那么势必不能锁定 Partition2,所以一致性不成立。
- 综上所述,Partition1和Partition2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2020-04-11 linux系统资源限制———ulimit命令