跳到正文

互联网常用方案 — 学习路线 ​

本目录是一组横切设计方案,不是某一款中间件的使用手册。索引只做导航:每篇讲一个问题的机制、最小验证和边界,具体参数与版本以正文为准。

怎么读 ​

先读 01、03、05、11,建立「唯一 ID、缓存、身份、流量控制」四个基础件;再读 02、10、09、04,理解跨服务一致性、重复请求、分区取舍和秒杀链路;最后读 12、13,看流量与数据如何按版本、按客户切开。06、07、08 相对独立,按需查阅。

篇目与产出 ​

#篇目读完能产出什么
01分布式 ID 生成能选 Snowflake、号段、UUID v7;能写出原子的取号 SQL,并处理时钟回拨和 workerId 冲突
02分布式事务能按一致性要求选 2PC/TCC/Saga/本地消息表/Seata AT;能解释 AT 的全局锁和 undo_log 边界
03缓存设计能写 Cache Aside 读写路径,处理穿透/击穿/雪崩;能说清 Write Behind 的丢数据窗口
04秒杀系统设计能画出层层过滤链路,用 Lua 原子扣库存,并把成功请求经收件箱搬到 MQ
05认证与鉴权能区分 OAuth2 与 OIDC,配 PKCE,按 JWKS 校验 JWT 的 alg/iss/aud/exp
06序列化与负载均衡能按 schema、体积、兼容性选序列化;能写对平滑加权轮询和一致性哈希
07海量数据处理能用分治、Bitmap、布隆、HyperLogLog 解题,并说清各自不能做什么
08文件传输方案能设计断点续传、分片校验和重试;能解释为什么分段 MD5 不能合并
09CAP 与共识能用 CAP/PACELC 判断组件取舍,讲清 Raft 的 leader/term/log 和多数派边界
10幂等性设计能用唯一索引、Token、状态机、乐观锁做幂等;能补状态机崩溃后的超时重抢与补偿
11限流算法详解能区分固定窗口、滑动窗口、漏桶、令牌桶,并按下游能否接受突发选型
12蓝绿灰度与多级路由能设计染色、透传、路由、生效、回滚五环节;能说清熔断不是回滚
13单元化架构能设计按客户分片的单元、DLS/GNS 路由、四阶段迁移和分级容灾

篇目依赖 ​

篇目建议先读读完接哪篇
01 分布式 ID无04、13
02 分布式事务0104、10、13
03 缓存设计无04、11
04 秒杀系统03、10、1112
05 认证鉴权无12、18 卷安全架构
06 序列化与负载均衡无12、13
07 海量数据处理无03、08
08 文件传输0713
09 CAP 与共识0213
10 幂等性设计0204、13
11 限流算法0304、12
12 蓝绿灰度1113、K8s 卷
13 单元化02、09、12K8s 卷企业级特性

依赖只表示概念上的先后,不是硬性前置;每篇都尽量自包含,遇到跨篇概念会给出链接。

版本基线 ​

正文中的版本前提集中在各篇开头,常用基线如下:

  • MySQL 8.0+、Redis 7.x/8.x、RocketMQ 5.x、Kafka 3.x。
  • Nginx 1.24+、Sentinel 1.8+、Guava 33.x、Seata 2.x。
  • OAuth 2.1 草案、OIDC 1.0、RFC 7636(PKCE)、RFC 7517(JWKS)。
  • Protocol Buffers 3.x、etcd 3.5+、Consul 1.16+、Apollo 2.x。

版本只用于说明命令和默认值的适用范围;升级前以官方 Release Notes 为准。

三条阅读路径 ​

交易链路:01 → 02 → 10 → 04 → 03 → 11。重点看同一笔业务在「发号、跨库、重复请求、抢购、缓存、限流」上分别怎么保证正确。

流量与发布:11 → 12 → 13 → 09。重点看流量如何被限制、如何按版本和客户切开,以及切开之后一致性怎么退化。

数据与传输:07 → 08 → 06 → 03。重点看内存放不下时怎么分治、大文件怎么续传和校验、RPC 怎么编码和选节点。

交叉引用 ​

什么时候拆成独立专栏 ​

这一组是横切方案的暂存区,不追求每个主题都独立成卷。一个主题同时满足下面三条时,再拆成独立专栏:

  1. 至少有 3 篇能各自独立成篇的内容,分别是机制、工程落地、故障处置,而不是同一个观点的三种写法。
  2. 共性跨组件,不属于某一款中间件;只讲 Redis 或只讲 Dubbo 的内容留在对应卷。
  3. 有企业落地素材,且已去掉公司名、内部产品名、内部类名和具体业务数据。

按这个标准,当前最接近拆出的是「流量治理」(灰度、限流、单元化、多入口拉入拉出)和「可靠事件」(事务消息、本地消息表、幂等、重试与死信)。在篇目不够之前,仍留在这里,避免出现只有一篇的空专栏。

约定 ​

  • 每篇按「一句话、为什么需要、核心机制、最小上手、生产动作、边界、讲清楚」组织。
  • 命令和配置标明版本前提;经验值会明确写成「经验值/示例」,不冒充基准测试。
  • 近似算法、异步链路和跨单元方案,都要在接口或报表里标明一致性与精度边界。

把一门技术讲透到既懂也会用