README · universal-patterns

跨栈通用机制

这个模块研究的是:同一批底层思想,如何在 MySQL、Redis、Kafka、NGINX、Netty 这些看似无关的组件里反复复现。

四大件的四个分册按学科纵向走,本模块横向切:每章追一个思想,从它在硬件或操作系统里的第一次出现,一路追到各个技术栈组件里的产品化形态。epoll 同时是 Redis、NGINX、Netty 的地基;16 KB 数据页和 4 KB 内存页是同一个决定;redo log、AOF 和 Kafka 共用一个骨架;渐进式 rehash 和过期删除是同一种”把大代价拆碎”的手艺。认出这些复现,新组件的学习成本就从全量降到增量。

跨栈通用机制系列封面

十二个思想总图

本模块适合写成的博客问题

问题对应章节
Redis、NGINX、Netty 的高并发是不是同一个东西?01 IO 多路复用与事件循环
OS 页 4 KB、InnoDB 页 16 KB,这类数字怎么定的?02 定长块
从 CPU 缓存到 TCP 缓冲区到浏览器缓存,共享什么难题?03 缓存分层
为什么所有存储系统都在写日志?04 日志先行
MySQL、Redis、Kafka 的主从复制差在哪?05 主从复制
哨兵、MGR、KRaft 为什么长得像?06 心跳、多数派与选主
16384 个槽、分库分表、partition 的共同函数是什么?07 分片
页表和反向代理有什么关系?08 间接层
线程池、连接池、内存池共享什么骨架?09 池化复用
fork 快照、MVCC、CopyOnWriteArrayList 是一家人吗?10 写时复制与多版本
pipeline、组提交、Kafka 攒批在摊什么成本?11 批处理
渐进式 rehash 和过期删除是什么手艺?12 惰性与摊销
学新中间件怎么只学增量?13 大一统总图
Cookie 到 JWT、HTTP 到 HTTPS,技术怎么被病逼着迭代?14 需求驱动的演进链
IoC、SPI、事件机制到底在解什么耦?15 解耦
S0/S1 和 Redis 双 dict 为什么长得一样?16 双空间轮换

学习路线

顺序章节核心问题
01IO 多路复用与事件循环一个线程怎么管十万连接
02定长块为什么各层都按固定块管理存储
03缓存分层数据停留的每一站怎么放、淘汰、保一致
04日志先行顺序追加怎么同时换来性能和恢复
05主从复制为什么复制的都是日志
06心跳、多数派与选主判死、投票、防脑裂
07分片route(key) 的四种写法和配套零件
08间接层加一层到底加的是什么
09池化复用三大池的骨架和反噬
10写时复制与多版本先共享,谁写谁付钱
11批处理攒一批摊掉固定成本
12惰性与摊销大代价怎么拆碎或推迟
13大一统总图十二个思想拼成一张表
14需求驱动的演进链每一代技术治上一代的什么病
15解耦IoC、SPI、事件与职责分离的谱系
16双空间轮换S0/S1、双 dict 到蓝绿部署的同一骨架

本模块固定观察点

  1. 这个思想应对的是哪条硬件事实。
  2. 它在操作系统或硬件里的原型长什么样。
  3. 每个技术栈组件对它做了什么本地化修改,为什么。
  4. 它的反噬边界在哪里,什么时候不该用。

本模块读法

前置假设:读过操作系统分册的 03(内存管理)、05(文件系统)、06(IO 模型),数据结构分册的 05(哈希表)、07(B+ 树)。没读过也能跟上,每章开头会把要用的结论接过来,但推导在原章节里。

顺序建议按编号走:01 到 04 讲单机骨干(事件、块、缓存、日志),05 到 08 讲分布式(复制、选主、分片、间接层),09 到 12 讲四个横切手艺(池化、多版本、批处理、惰性),13 收总。相邻章节层层咬合:日志是复制的载体,复制进度决定选主结果,分片的槽位表又是一层间接,快照靠写时复制,rehash 忌惮快照。

每章结构一致:物理前提,机制逐个拆解,技术栈实例对照,排查清单。机制拆解是主菜,每个实例都当正主讲,不做一笔带过的目录。

延伸阅读