封底估算
Jeff Dean,
封底估算是你将想象中的实验和常见性能指标数据结合而得到出的一些估算值,这些值使你对何种设计可以满足系统需求有初步的概念。
2 的幂
1字节byte是8比特bit,一个ASCII字符占用1字节的内存(8比特)。
表2-1
操作耗时
Dean
揭示了典型计算机操作的时长,随着计算机的速度越来越快,算力越来越强,有些数字应该已经过时了。
但,通过它们,依然可以了解不同操作的耗时。
表2-2
- 内存的速度快,而硬盘的速度慢
- 如果有可能,尽量避免在硬盘中查找数据
- 简单的压缩算法速度快
- 进可能将数据压缩之后再通过因特网传输
- 数据中心通常位于不同的地区,在它们之间传输数据需要时间
可用性相关的数字
高可用性是指一个系统长时间持续运转的能力。
高可用性一般是百分比来衡量的,100%意味着服务没有不可用的时间,大部分服务的可用性在99%到100%之间。
SLA(服务水平协议)是服务提供商普遍使用的一个术语。
表2-3
估算推特QPS和存储需求
下面的数字是针对这个练习而设置的,并非推特的真实数据。
- 推特有3亿月活用户
- 50%的用户每天都使用推特
- 用户平均每天发两条推文
- 10%的推文包含多媒体数据
- 数据要存储5年
(1)估算QPS(每秒查询量)
- 每日活跃用户(DAU)= 300,000,000X 50% = 150,000,000
- 推文 QPS = 150,000,000 X 2 +24 小时 +3600 秒 = 3500
- 峰值 QPS = 2 X 推文 QPS = 7000
(2)这里仅估算多媒体数据的存储量
- 平均推文大小,tweet_id 64字节、文本 140 字节、多媒体文件 1MB
- 多媒体数据存储量 = 150,000,000 X 2 X 10% X 1 MB = 30 TB/天
- 5年的多媒体数据存储量 = 30 TB X 365 X 5 = 55 PB