← 返回

把工作经验形成体系:以 I/O 路径为主线

核心思路:找一条主线,而不是列公司

按公司罗列只是"简历"。能讲出来的是"体系",需要一个贯穿所有经历的问题:

一次数据 I/O,从应用到存储介质,整条路径上的每一层我都做过,并且一直在把这条路径做得更短、更快、更可控。


一、按 I/O 路径分层,把经历放进坐标系

层次经历(阶段)关心的问题
平台 / OS阶段 A:Linux kernel、ACPI硬件如何被发现、配置、供电,内核如何抽象它
设备驱动阶段 B:WiFi driver设备到内核的数据面与控制面
传输 / 协议阶段 C:NVMe over RDMA;阶段 D:NBD远程访问块设备,协议开销和延迟
分布式存储阶段 D:Ceph、云数据库存储层副本、一致性、故障恢复
存储引擎阶段 D:RocksDB、InnoDB;阶段 E:LMDBLSM、B+Tree、mmap,各自的读写放大与取舍
用户态 / 卸载阶段 D:SPDK;阶段 F:DPDK、DPU、JBOF、自研存储系统绕过内核,再把 CPU 的活卸载到硬件

这张图本身就是"体系",听众一看就知道你的覆盖面和位置。


二、提炼 3~4 个跨阶段反复出现的"母题"

体系的深度来自母题,而不是技术名词。可从下面选:

  1. 去掉拷贝和上下文切换:内核协议栈 → RDMA、SPDK、DPDK 的 kernel bypass。
  2. 轮询 vs 中断:吞吐、延迟、CPU 占用之间的权衡,从驱动一直到 SPDK reactor。
  3. 存储引擎的放大问题:LSM(RocksDB)、B+Tree(InnoDB)、mmap 单层(LMDB)的写放大、读放大、空间放大对比。三种都做过,是很少见的对比视角。
  4. 软件复杂度往哪放:从 CPU 软件栈 → DPU / JBOF 硬件卸载,控制面留在哪里,数据面卸载到哪里。
  5. 持久化与一致性:从 NVMe 的 flush 语义,到 WAL、副本一致性,每层的持久化保证是什么。

每个母题回答三件事:问题是什么 / 各层怎么解决 / 你在其中做了什么决策。


三、一条演进叙事

按时间重新讲一遍,职业路径正好是行业路径的缩影:

内核 / 驱动(理解硬件)→ 远程块存储(NVMe-oF、NBD、Ceph,理解网络存储)→ 存储引擎(RocksDB、InnoDB、LMDB,理解数据结构)→ 用户态高性能(SPDK、DPDK)→ 硬件卸载(DPU、JBOF)。

主题是:瓶颈在哪,就往哪层下沉——先从内核到用户态,再从 CPU 到专用硬件。


四、每段经历用同一个模板,且必须带数字

每段准备 1~2 个能讲 3~5 分钟的故事:

  • 背景约束:规模、延迟目标、硬件条件
  • 瓶颈定位:怎么测、怎么发现的(工具、指标)
  • 方案与取舍:为什么选 A 不选 B,放弃了什么
  • 结果:延迟从 X 降到 Y,IOPS 提升多少,CPU 占用降多少
  • 反思:现在回头看会怎么改

没有数字的经历听起来像"参与过",有数字的才是"做成过"。


五、准备三个长度的版本

版本内容
30 秒主线一句话,加两三个最有代表性的节点
3 分钟分层图 + 演进叙事
深挖版针对 2~3 个最深的方向(如 NVMe-oF/RDMA、存储引擎、DPU 卸载),准备到能被追问五层"为什么"

六、落地步骤

  1. 在纸上画出分层表,每格写 1~2 个关键词。
  2. 每段经历写下:最难的一个问题、最大的一次取舍、一个最硬的数字。
  3. 挑出 3 个母题,在每段经历里找对应例子,填成一张"母题 × 经历"矩阵。填得最满的行,就是核心竞争力。
  4. 对着矩阵练习:先口述主线,再随机抽一格展开讲。

矩阵模板

母题 \ 阶段ABCDEF
去掉拷贝 / 上下文切换
轮询 vs 中断
引擎放大问题
复杂度往哪放
持久化与一致性

最终效果:讲出来的是"我对 I/O 路径有端到端的理解,并且在多个层面做过取舍",比"我用过很多技术"有力得多。