WED · 08.05 · WEEK 02 · DAY 3
Dropbox:把 blob path 与 metadata path 分开
Dropbox 是 full-coverage application case。完整读到 HLD,用它验证缓存、派生视图、blob/metadata 分离、download CDN 与 sync cursor,不把它升级为第二根架构主柱。
学习源包
按顺序打开。Hello Interview 与 DDIA 链接都直达今天需要的 live subsection,不做整章地毯式阅读。
Dropbox · Understanding the ProblemEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · Functional RequirementsEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · Non-Functional RequirementsEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · The Set UpEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · Planning the ApproachEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · Defining the Core EntitiesEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · API or System InterfaceEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
Dropbox · High-Level DesignEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
required reading;完成后在白板或口述中留下对应证据。
required reading;完成后在白板或口述中留下对应证据。
required reading;完成后在白板或口述中留下对应证据。
required reading;完成后在白板或口述中留下对应证据。
Dropbox · Tying it all togetherEXACT SECTION
required reading;完成后在白板或口述中留下对应证据。
DDIA Ch4 · 多列索引与二级索引EXACT SECTION
为 owner files 与 shared files 画两条可查询路径,禁止扫描 sharelist。
Hello Interview · Scaling Reads / Read ReplicasEXACT SECTION
解释 metadata read replica 能做什么,以及 replica lag 对刚分享文件的影响。
把 CDN 定义为 blob 的派生读路径,不让它拥有 ACL 或文件版本事实。
今日验收
- blob bytes 不穿过 application server;服务端只签发有限权限、有限时间、限定 object key 的 URL。
- metadata.status=uploaded 之前,文件不能进入可见目录;orphan blob 与 orphan metadata 都有回收路径。
- notification 只负责低延迟唤醒;丢通知后 cursor pull 仍能修复。
必须产出:Dropbox 控制面/数据面图 + metadata schema + upload/download/share/sync 四条时序。
08:50—10:55
系统设计块保持完整。最后十分钟永远用于无稿 close,防止学习退化为被动阅读。
| 时间 | 今日时间表 |
|---|---|
| 08:50—09:00 | 写一句迁移目标:用缓存基础设施思维审查文件系统的两条数据路径。 |
| 09:00—09:25 | 闭卷画 control plane / data plane:metadata、ACL、blob、change log、CDN 各归谁。 |
| 09:25—09:50 | 读问题、实体、API;把朴素 POST /files 改写为可演进接口。 |
| 09:50—10:20 | 读 upload/download 的 Bad → Good → Great;画 direct-to-blob signed path。 |
| 10:20—10:35 | 读 share 与 sync;建立 SharedFiles 反向关系、change cursor 和 notification 的边界。 |
| 10:35—10:45 | 读 tying together;闭卷重画一遍,只保留权威状态和关键箭头。 |
| 10:45—10:55 | 口述 upload commit invariant:用户何时才能看到 uploaded。 |
算法模块
NeetCode Tag:Two Pointers。三个 slot 全在同一连续 tag;每题记录 Pattern / Invariant / Bug / Complexity。
14:30—16:15NeetCode Tag · Two Pointers3 required slots
| # | 题目 | 当日目标 | 时间 |
|---|---|---|---|
| 1 | 3Sum | 复刷 · 去重逻辑写在正确层级。 | 14:30—15:05 |
| 2 | Two Sum II | 复刷 · 解释单调性而非背模板。 | 15:05—15:40 |
| 3 | Container With Most Water | 复刷 · 20 分钟内写完并证明移动规则。 | 15:40—16:15 |
20:30—21:15
口述块只接受录音、实际回答或 repair 证据,不用“看完了”作为完成。
20:30—21:15 · 英文 10 分钟 Dropbox recall:blob/metadata split → direct upload → change cursor;最后明确它是应用迁移题,不是本周第二架构主线。
Detailed lecture notes, audio, recall scripts, PDFs, Staff Q&A, and mock packs are archived locally and are intentionally not published on this site.