Skip to content
基础

一句话答案

BASE 是 CAP 的妥协:基本可用(Basically Available)+ 软状态(Soft State)+ 最终一致(Eventually Consistent)。

核心要点

BASE 理论: 对 CAP 中一致性和可用性权衡的实践总结,核心思想是放弃强一致性,追求最终一致性。

缩写全称含义
BABasically Available(基本可用)系统出现故障时,允许损失部分可用性(如响应时间变长、部分功能降级)
SSoft State(软状态)允许系统中的数据存在中间状态,即不同节点的数据副本之间可以存在同步时延
EEventually Consistent(最终一致性)经过一段时间后,系统中的数据最终可以达到一致,不需要实时保证强一致性

BASE 与 CAP 的关系:

ACID ←────────── 强一致性 ────────────→ BASE
(传统关系型数据库)                    (分布式系统实践)

CAP 理论告诉我们:P 必须保证,C 和 A 不可兼得
BASE 理论告诉我们:既然强 C 很难,那就用「最终一致性」来换取更好的 A
BASE 是 CAP 中 AP 方案的工程实践指南

ACID vs BASE 对比:

维度ACIDBASE
适用场景单机/强一致事务分布式/大规模系统
一致性强一致性(事务提交后立即生效)最终一致性(允许一段时间后才一致)
可用性可用性较低(加锁等待)基本可用(允许降级但不拒绝服务)
中间状态不允许(事务原子性)允许(软状态)
并发能力低(锁竞争)高(异步、无锁)
典型代表MySQL InnoDB 事务电商订单系统、消息队列

实际案例——电商下单流程体现 BASE:

1. 用户下单 → 订单状态:待支付(软状态,中间态)
2. 用户支付 → 支付系统处理中(软状态,不同系统间数据暂时不一致)
3. 支付回调 → 订单状态:已支付,库存扣减确认(最终一致性达成)

整个过程中:
  BA:系统一直可用,用户随时可以查订单(即使状态还没更新完)
  S :订单"待支付"就是软状态,支付系统和订单系统暂时不一致
  E :最终通过回调/补偿确保订单和支付状态一致
追问与易错

追问方向:

  • BASE 和 ACID 矛盾吗?
  • 最终一致的「最终」是多久?
  • 你项目中的最终一致性例子?

易错点:

  • ❌ BASE 就是不要一致性——是最终一致
  • ❌ 混淆 BASE 和 CAP

💡 记忆锚点

ACID 是刚性事务,要求"要么全对要么全错";BASE 是柔性事务,像快递签收——下单后状态经历"待发货→运输中→已签收"这些软状态(S),中途查物流可能信息滞后(BA基本可用),但包裹最终一定送到(E最终一致)。口诀:基本可用撑住、软状态过渡、最终一致兜底。