分布式理论

官官方信息技术老师·8 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

分布式理论

系统设计与场景题 · 第 1 章 方法论与分布式理论

按 空格/→ 演示下一步

问一句
1 / 8 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

分布式理论

系统设计与场景题 · 第 1 章 方法论与分布式理论

1第 1 页 · 分布式理论

CAP 与 BASE

分布式三选二,而 C 在网络分区下必让步:BASE 接受最终一致换可用。

CAP
一致性、可用性、分区容忍不可兼得
P 是前提
分区必然发生,实际是 CP 与 AP 之选
BASE
基本可用、软状态、最终一致
2第 2 页 · CAP 与 BASE

一致性哈希

环上定位:节点与数据都哈希到环上,增删节点只搬邻居的数据。

哈希环
数据顺时针找第一个节点归属
虚拟节点
每物理节点挂多个虚拟点,均衡负载
迁移量
增删节点只迁移 1/N,不是全量
3第 3 页 · 一致性哈希

分布式事务选型(2PC/TCC/

强一致到最终一致的光谱:2PC 同步阻塞,TCC 业务两阶段,Saga 拆本地事务。

2PC
协调者两阶段提交,强一致但阻塞易单点
TCC
Try 预留、Confirm 确认、Cancel 补偿
Saga
长流程拆本地事务,失败反向补偿
4第 4 页 · 分布式事务选型(2PC/TCC/

幂等性设计

重试的通行证:同一操作执行多次结果不变。Token、唯一索引、状态机三板斧。

唯一约束
唯一索引兜底,重复插入直接失败
Token 机制
先领 token,执行时原子校验并删除
状态机
状态流转条件约束,重复请求被拒
5第 5 页 · 幂等性设计

分布式 ID 生成

分库分表后的身份证:UUID 无序、号段批取、雪花时序,各有取舍。

UUID
本地生成无依赖,但无序且偏长
雪花算法
时间戳+机器+序列,趋势递增需防时钟回拨
号段模式
DB 批量发号内存分配,双 buffer 平滑
6第 6 页 · 分布式 ID 生成

本节要点

  • ✓分区之下,CP 与 AP 二选一
  • ✓一致性哈希:环加虚拟节点
  • ✓事务选型:2PC、TCC、Saga
  • ✓幂等:唯一约束+Token+状态机
延伸主题:手推一致性哈希迁移量给订单接口设计幂等
7第 7 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1为什么说实际工程选的是 CP 或 AP,而不是「三选二」?

参考答案网络分区不可避免,P 是前提不是选项;分区发生时只能在一致与可用之间站队。平时无分区两者可兼得,设计核心是分区发生时的行为预案。

2雪花算法时钟回拨会怎样,怎么应对?

参考答案回拨后可能生成重复 ID。回拨小则等待追平,大则拒绝发号或切换备用位;也可改用逻辑时钟或号段兜底。全局唯一性不能赌运气。

3为什么「先查再写」不是幂等方案?

参考答案查与写之间存在竞态:两个并发请求都查到「不存在」,随后都写入成功。幂等必须靠原子手段(唯一索引、setnx、CAS)在写入点拦截,而非应用层两次操作。

8第 8 页 · 课后思考