架构设计(九):估算

时间:2022-12-25 22:06:55

作者:Grey

原文地址:

博客园:架构设计(九):估算

CSDN:架构设计(九):估算

估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握

第一个概念:二的幂

尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以归结为基础知识。为了获得正确的计算结果,关键是要知道使用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%或以上。

参考资料

System Design Interview