在系统设计中,估算系统容量和性能需求是一项至关重要的技能。

一、二次幂(Power of Two)

在处理分布式系统时,数据量可能会变得非常庞大。为了进行正确的计算,了解数据量单位的幂次是非常关键的。一个ASCII字符占用1字节(8位),下面是一些常见的数据量单位:

  • 2^10(1千):1千字节(KB)
  • 2^20(1百万):1兆字节(MB)
  • 2^30(10亿):1吉字节(GB)
  • 2^40(1万亿):1太字节(TB)
  • 2^50(1百万亿):1拍字节(PB)

二、程序员应知的延迟数字

了解不同计算机操作的延迟时间对于系统设计至关重要。以下是一些常见的操作及其对应的时间:

  • L1缓存引用:0.5 ns
  • 分支错误预测:5 ns
  • L2缓存引用:7 ns
  • 互斥锁/解锁:100 ns
  • 主内存引用:100 ns
  • 使用Zippy压缩1KB:10,000 ns = 10 µs
  • 通过1 Gbps网络发送2KB:20,000 ns = 20 µs
  • 从内存中顺序读取1MB:250,000 ns = 250 µs
  • 在同一数据中心的往返时间:500,000 ns = 500 µs
  • 磁盘寻道:10,000,000 ns = 10 ms
  • 从网络中顺序读取1MB:10,000,000 ns = 10 ms
  • 从磁盘中顺序读取1MB:30,000,000 ns = 30 ms
  • 从加利福尼亚发送数据包到荷兰:150,000,000 ns = 150 ms

谷歌的一位软件工程师开发了一个工具,将这些数据可视化,有助于理解

image

三、可用性数字

高可用性是指系统在期望的时间内持续运行的能力。高可用性通常以百分比表示,100%表示系统无停机时间。大多数服务的可用性在99%到100%之间。
服务水平协议(SLA)是服务提供商与客户之间的正式协议,定义了服务提供商将交付的服务水平。云服务提供商如Amazon、Google和Microsoft通常将SLA设定为99.9%或更高。可用性通常以九的个数来衡量,九的个数越多,系统停机时间越少。
以下是一些常见的可用性百分比及其对应的停机时间:

  • 99%:每年3.65天停机
  • 99.9%:每年8.76小时停机
  • 99.99%:每年52.56分钟停机
  • 99.999%:每年5.26分钟停机
  • 99.9999%:每年31.56秒停机

    四、估算Twitter的容量和存储需求

    假设:

  • 每月有3亿活跃用户。
  • 50%的用户每天使用Twitter。
  • 用户平均每天发布2条推文
  • 10%的推文包含媒体
  • 数据保存5年

估算:

  • 每秒查询数(QPS):

    • 每日活跃用户(DAU)= 3亿 * 50% = 1.5亿
    • 推文QPS = 1.5亿 * 2条推文/24小时/3600秒 ≈ 3500
    • 峰值QPS = 2 * QPS = 7000
  • 平均推文大小:

    • tweet_id 64字节
    • 文本140字节
    • 媒体1MB
  • 媒体存储:1.5亿 2 10% * 1MB = 30 TB每天
  • 5年媒体存储:30 TB 365 5 = 55 PB

参考博文
ByteByteGo


float64
1 声望0 粉丝