作者:Grey
原文地址:
估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握
第一个概念:二的幂
尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以归结为基础知识。为了获得正确的计算结果,关键是要知道使用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 年。
通过分析上述数字,可以得到以下结论。
-
内存很快,但磁盘很慢。
-
如果可能的话,要避免磁盘寻道。
-
简单的压缩算法是快速的。
-
如果可能的话,在通过互联网发送数据之前要进行压缩。
-
数据中心通常在不同地区,在它们之间发送数据需要时间
第三个需要了解的概念是:系统可用时间百分比
高可用性是指一个系统在一个理想的长时间内持续运行的能力。高可用性是以百分比来衡量的,100%意味着一个服务没有停机时间。大多数服务在99%和100%之间。服务水平协议(SLA)是服务提供者的一个常用术语。这是你(服务提供商)和你的客户之间的协议,这个协议正式定义了你的服务将提供的正常运行时间水平,正常运行时间传统上是以九为单位衡量。九位数越多,越好。如表2-3所示,九位数与预期的系统停机时间相关。
可用性 | 平均每天停机时间 | 平均每年停机时间 |
---|---|---|
99% | 14.40分钟 | 3.65天 |
99.9% | 1.44分钟 | 8.77小时 |
99.99% | 8.64秒 | 52.6分钟 |
99.999% | 864毫秒 | 5.26分钟 |
99.9999% | 86.4毫秒 | 31.56秒 |
云供应商亚马逊、谷歌和微软将其SLA设定为99.9%或以上。