1 CAP理论

CAP理论是所有分布式理论的基础

(1) Consistency (一致性)

更新操作成功并返回客户端后, 所有节点在同一时间的数据完全一致

(2) Available (可用性)

服务一直可用, 而且是正常响应时间

(3) Partition Tolerance (分区容错性)

在遇到某节点故障时, 分布式系统 仍然能对外提供 满足一致性和可用性的服务

(4) 取舍策略

CAP三个特性只能满足其中两个
image.png

2 BASE理论

同时满足CAP是不可能的, 于是提出了BASE理论, 每个分布式系统都应该满足BASE理论

(1) Basically Available (基本可用)

分布式系统出现故障时, 允许 损失部分可用性
1) 响应时间的损失, 0.5秒变为2秒
2) 系统功能上的损失, 熔断限流, 引导消费者进入一个降级页面

(2) Soft state (软状态)

允许系统中的数据存在中间状态, 即允许 在不同节点的数据副本之间进行同步的过程存在延时

(3) Eventually consistent (最终一致性)

所有节点上的数据副本, 经过一段时间同步后, 最终达成一致

3 分布式事务的解决方案

(1) TCC分布式事务

TCC: try, confirm, cancel
image.png

  • 订单服务: 修改订单状态为”已支付”
  • 库存服务: 扣除库存
  • 积分服务: 增加积分
  • 仓储服务: 创建销售出库单

上面几个步骤,虽然跨了4个数据库,但它们必须是一个整体的事务, 要么都成功, 要么都失败
image.png
所以在try阶段, 我们要引入一个freeze字段, 来记录被预扣除的库存,
等到confirm阶段, 再真正扣除stock字段

(2) 本地消息表

通过本地事务 保证 数据业务操作和消息的一致性, 然后通过定时任务将消息发送至消息中间件, 待确认消息发送给消息方, 再将消息删除
image.png