Java常见技术分享-分布式篇-分布式系统基础理论

CAP 和 BASE

  • CAP定理

    • CAP定理就是说在分布式系统中, P(从跨度时间长的维度上看必然发生)发生时, C和A只能保证一个,而不是三选二。
      • CP系统 当网络分区发生时,节点之间无法同步数据, 为了保证数据一致, 系统会拒绝部分请求, 变得不可用。
      • AP系统 当网络分区发生时,节点之间无法同步数据, 为了继续提供服务允许不同分区可能返回不同的数据, 无法保证数据一致 。
    • C
      • 一致性 指的是 一旦数据更新, 所有节点立即能看到最新数据,就像单机数据库,一个事务提交后其他的事务立即能拿到最新值。
    • A
      • 可用性 不管系统内部是否有故障, 只要用户发起请求, 系统必须在合理的时间范围内返回结果, 不能让客户一直等待或返回错误。
    • P
      • 分区容错性 分布式系统部署在多个节点, 节点间依靠网络进行通信, 所谓分区 指的是网络分区, 假如说有A,B两个节点,原本是能互相通信的, 但是现在无法通信了, A发消息B接收不到, 我们就说他们之间分区了, 而容错性 就是在 网络出现分区的时候, 系统仍然能正常运行不会出现直接崩溃的情况。
  • BASE理论

    • B 是 Basically available 基本可用
    • S. 是 Soft State 软状态
    • E 是 Eventually Consistency 最终一致性
    • 这三者之间存在一个逻辑上的递进关系
      • 为了实现基本可用 (目标), 系统必须接受一个现实, 数据在不同的节点间同步会有延迟。
      • 这个延迟 导致了 软状态 (代价) 即 系统内部允许存在短暂的不一致。
      • 但系统承诺这种不一致是暂时的 (最终一致性), 最终所有数据都会同步 , 达到最终一致性

场景

  • 支付、交易系统: 通常选择CP, 钱绝对不能出错,哪怕有时无法支付。
  • 社交网络、内容发布: 通常选择AP, 刷不出新的动态 比 网络崩溃更容易接受。

现代分布式系统的设计, 本质上都是在CAP 这个 铁律之下, 通过各种精巧的技术 如BASE理论, 共识算法, 多副本策略 来管理 优化 和 弱化 这种权衡 带来的影响, 但永远无法从根本上消除他。

总结来说, CAP定理的 "一定性" 来源于: 网络故障的必然性 + 逻辑上的互斥性。 不是一个需要被推翻的假设, 而是一个必须接受、并在此基础上进行工程设计的客观规律。

相关推荐
2501_921649492 小时前
企业定制金融数据 API:从架构设计到 Python 接入实战
大数据·开发语言·python·websocket·金融·量化
直奔標竿2 小时前
SpringAI + RAG + MCP + Agent 零基础全栈实战(完结篇)| 27课完整汇总,Java开发者AI转型必看
java·开发语言·人工智能·spring boot·后端·spring
云烟成雨TD2 小时前
Spring AI 1.x 系列【31】向量数据库:进阶使用指南
java·人工智能·spring
reasonsummer2 小时前
【教学类-160-13】20260422 AI视频培训-练习013“豆包AI视频《师幼互动》+豆包图片风格:CG动画”
开发语言·python
万邦科技Lafite2 小时前
京东开放API接口:item_get返回参数指南
java·前端·javascript·api·电商开放平台
曹牧3 小时前
Java:处理 HTTP 请求的 Content-Type
java·开发语言
SamDeepThinking3 小时前
第1篇-开篇词:几亿用户规模下,我们是怎么做C端高并发商品系统的
java·后端·架构
weisian1513 小时前
Java并发编程--47-分布式ID生成器:雪花算法(Snowflake)与时钟回拨问题
java·算法·时钟回拨·雪花算法id
itzixiao3 小时前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
Lightning-py3 小时前
Python 配置日志(Logging)
开发语言·python