基于常见的性能数据对QPS、宽带、数据量、延迟、可用性等指标进行预估,不要求非常精准,但要尽量接近真实值。

开发人员应该对规模预估有比较敏锐的意识,下面几点有助于有效进行规模预估:

2的指数

指数数据量预估
101KB,近似1000
201MB,近似1百万
301GB,近似十亿
401TB,近似1万亿
501PB,近似千万亿

典型的延迟指标描述

一些常见的计算机操作的延迟数据,有的可能已经过时了:

操作耗时
L1缓存引用0.5ns
分支预测错误5ns
L2缓存引用7ns
加锁/解锁100ns
主内存引用100ns
使用Zippy压缩1K数据10000ns=10us
在1Gbps网络上发送2K数据20000ns=20us
从内存连续读取1MB数据50000ns=50us
磁盘查找10ms
从网络上读取1MB数据10ms
从磁盘上读取1MB数据30ms
加州-荷兰-加州 RTT时间150ms
上海到纽约 RTT时间290ms,来自Ping time between New York and other cities - WonderNetwork

一些结论:

1. 内存比磁盘快

2. 尽量避免从磁盘查找

3. 简单的压缩算法效率很高

4. 在使用网络传输数据前尽量进行压缩

5. 数据中心通常分布在不同的区域,相互传输数据需要大量时间。

典型的可用性指标描述

可用性指系统可持续稳定运行的时间。可用性越高,则设备不需要关机的时间就越长。大部分系统的可用性都在99%~100%之间。

通常使用服务等级协议(SLA,service level agreement)来描述可用性。以下是具体的可用性等效的开关机时间:

可用性每天的关机时间每年的关机时间
99%14.4分钟3.65天
99.9%1.44分钟8.77小时
99.99%8.64秒52.60分钟
99.999%864毫秒5.26分钟
99.9999%86.4毫秒31.56秒

实例:预估Twitter QPS和存储需求

假设:

  • 每月3亿活跃用户
  • 50%的用户第天都会使用Twitter
  • 每个用户平均每天发2条推特
  • 10%的推特含有多媒体内容
  • 数据需要保存5年

预估如下:

QPS(query per second)预估:

  • 每天活跃的用户数(DAU,daily active users):3亿 * 50% = 1.5亿
  • 推特QPS:1.5亿 * 2 / 24小时 / 3600秒 ~= 3500
  • 峰值QPS:QPS * 2 ~= 7000

存储预估:

  • 每条推特大小:
    • id  64字节
    • 文本 140字节
    • 媒体内容  1MB
  • 每日媒体内容大小:1.5亿 * 2 * 10% & 1MB = 30TB
  • 5年期媒体内容大小:30TB * 365 * 5 ~= 55PB































  • 无标签