广阔天地大有作为

你想拥有什么,就去追求什么

10 Mar 2024

2024-03-10 第十周:搞定系统设计

流水账

阅读

搞定系统设计:面试敲开大厂的门

一点想法

相关性的数据

2 的幂

通过这种估算可以快速换算成我们熟悉存储单位。

2的幂 近似值 缩写
$2^{10}$ 1000 1 KB
$2^{20}$ 1,000,000 1 MB
$2^{30}$ 1,000,000,000 1 GB
$2^{40}$ 1,000,000,000,000 1 TB
$2^{50}$ 1,000,000,000,000,000 1 PB

每个程序员该知道的操作耗时

操作名称 耗时
查询 L1 缓存 0.5 ns
分支预测错误 5 ns
查询 L2 缓存 7 ns
互斥锁定 / 解锁 100 ns
查询内存 100 ns
用 Zippy 压缩 1 KB 数据 10,000 ns = 10 us
通过带宽为1 GB / s 的网络发送 2 KB 数据 20,000 ns = 20 us
从内存中顺序读取 1 MB 数据 250,000 ns = 250 us
数据在同一个数据中心往返一次 500,000 ns = 500 us
在硬盘中查找数据 10,000,000 ns = 10 ms
从网络中顺序读取 1 MB 数据 10,000,000 ns = 10 ms
从硬盘中顺序读取 1 MB 数据 30,000,000 ns = 30 ms
将数据包从加州发送至荷兰,再从荷兰返回加州 150,000,000 ns = 150 ms

可用性相关的数字

这个数据其实也不用记,可以直接计算,比如 4 个 9 每年不可用时间。 365 * 24 * 60 * (100 - 99.99)

可用性(百分比) 每天不可用时长 每年不可用时长
99 % 14.4 分钟 3.65 天
99.9 % 1.44 分钟 8.77 小时
99.99 % 8.64 秒 52.6 分钟
99.999 % 864.00 毫秒 5.26 分钟
99.9999 % 86.4 毫秒 31.56 秒

总之,熟悉掌握这些数据或者数据的计算方法可以快速估算出一些系统指标。

系统设计面试的框架

书中总结为4个步骤

第一步 理解问题并确定设计边界 (3 - 10 分钟)

第二步 High Level 设计 (10 - 15 分钟)

第三步 设计继续深入 (10 - 25 分钟)

第四步 总结 (3 - 5 分钟)