架构设计:估算
估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握
第一个概念:二的幂
尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以归结为基础知识。为了获得正确的计算结果,关键是要知道使用2的幂的数据量单位。一个字节是一个8位的序列。一个ASCII字符使用一个字节的内存(8位)。可参考如下表格
| 次幂 | 近似值 | 名称 |
|---|---|---|
| 10 | 1000 | 1KB |
| 20 | 100万 | 1MB |
| 30 | 10亿 | 1GB |
| 40 | 1万亿 | 1TB |
| 50 | 1千万亿 | 1PB |
第二个概念:关于延时指标的常见场景
注:以下指标说明来自J. Dean.Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design ,虽然是基于2010年的状况,但是目前这些指标还是有一定的参考价值。
| 操作 | 参考时间量级 |
|---|---|
| L1高速缓存 | 0.5 ns |
| 分支错误预测 | 5 ns |
| L2高速缓存 | 7 ns |
| 互斥器锁定/解锁 | 100 ns |
| 主内存 | 100 ns |
| 用Zippy压缩1K字节 | 10,000 ns |
| 通过1 Gbps网络发送2K字节 | 20,000 ns |
| 从内存中连续读取1MB | 250,000 ns |
| 在同一数据中心内的数据往返 | 500,000 ns |
| 磁盘搜索 | 10,000,000 ns |
| 从网络中连续读取1MB | 10,000,000 ns |
| 从磁盘顺序读取1MB | 30,000,000 ns |
上述场景也有一个可视化的工具可以查看,见Latency Numbers Every Programmer Should Know
目前展示到了 2020 年。

通过分析上述数字,可以得到以下结论。
-
内存很快,但磁盘很慢。
-
如果可能的话,要避免磁盘寻道。
-
简单的压缩算法是快速的。
浙公网安备 33010602011771号