首页 > 其他分享 >系统设计:快速粗略计算系统容量和性能需求

系统设计:快速粗略计算系统容量和性能需求

时间:2023-05-28 20:38:03浏览次数:32  
标签:信封 粗略 背面 估算 AI 系统 性能需求 QPS 数字

原文标题是"Back-of-the-envelope estimation",直译是信封背面估算的意思,"Back-of-the-envelope estimation"是一个短语,用于描述使用简化的假设和基本原理进行的粗略或快速计算,通常在信封背面或任何可用的纸上进行。它是一种在不进行详细分析或复杂计算的情况下进行粗略估计或近似的方法。 信封背面估算的目的是提供一个大致数字或对概念的规模或可行性有个大致的了解,而无需投入大量时间或资源进行精确计算。它可用于评估一个想法的可行性,评估决策的潜在影响,或快速比较不同选项。 虽然信封背面估算可能缺乏详细分析的精确性,但它们对于快速决策、启动进一步调查或以简明易懂的方式传达思想是有价值的。

在系统设计面试中,你有时会被要求使用信封背面估算来评估系统容量或性能需求。根据谷歌高级研究员杰夫·迪恩的说法,“信封背面的计算是你利用思想实验和常见性能数字组合创建的估算,以便对哪些设计将满足你的需求有一个好的理解”[1]。

你需要有对可扩展性基础的良好理解,以有效地进行信封背面估算。以下概念应该得到充分理解:二的力量[2],每个程序员应该知道的延迟数字,以及可用性数字。

AI不会取代你,使用AI的人会。欢迎关注我的公众号:更AI。以程序员的视角来看AI能带给我们什么~

二的力量

虽然在处理分布式系统时,数据量可能会变得非常大,但所有的计算都归结为基本的计算。为了得到正确的计算结果,知道以二的幂来表示的数据量单位至关重要。一个字节是8个比特的序列。一个ASCII字符使用一个字节的内存(8比特)。下面是一个解释数据量单位的表格(表2-1)。

image-20230520205201026

每个程序员都应该知道的延迟数字

谷歌的迪恩博士揭示了2010年典型计算机操作的长度[1]。随着计算机变得更快、更强大,一些数字已经过时。然而,这些数字仍然应该能够让我们对不同计算机操作的快慢有个大致的了解。

image-20230520205234204

注释


ns = 纳秒,μs = 微秒,ms = 毫秒 1 ns = 10^-9 秒 1 μs= 10^-6 秒 = 1,000 ns 1 ms = 10^-3 秒 = 1,000 μs = 1,000,000 ns

一位谷歌软件工程师建立了一个工具来可视化迪恩博士的数字。这个工具也将时间因素考虑在内。图2-1显示了截至2020年的可视化延迟数字(图源:参考材料[3])。

image-20230520205300147

通过分析图2-1中的数字,我们得到以下结论:

  • 内存速度快,但磁盘速度慢。
  • 尽可能避免磁盘寻址。
  • 简单的压缩算法速度快。
  • 如果可能,压缩数据后再通过互联网发送。
  • 数据中心通常位于不同地区,发送数据之间需要时间。

可用性数字

高可用性是一个系统能够连续运行一个期望的长时间段的能力。高可用性以百分比衡量,其中100%表示服务没有停机时间。大多数服务的可用性在99%到100%之间。

服务级别协议(SLA)是服务提供商常用的术语。这是你(作为服务提供商)与你的客户之间的协议,这个协议正式定义了你的服务将提供的运行时间水平。云服务提供商Amazon [4],Google [5]和Microsoft [6]将他们的SLA设定在99.9%或以上。运行时间传统上以九为单位衡量。九的数量越多,表现越好。如表2-3所示,九的数量与预期的系统停机时间相关。

image-20230520205315686

示例:估算Twitter的QPS和存储需求

请注意,以下数字仅用于此练习,因为它们并非来自Twitter的真实数字。

假设:

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

估算:

每秒查询数(QPS)估算:

  • 每日活跃用户(DAU)= 300 million * 50% = 1.5亿
  • 推文QPS = 1.5亿 * 2 条推文 / 24小时 / 3600秒 = ~3500
  • 峰值QPS = 2 * QPS = ~7000

我们只在这里估算媒体存储。

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

提示

信封背面的估算完全是关于过程的。解决问题比获得结果更重要。面试官可能会测试你的问题解决能力。这里有一些可以遵循的提示:

  • 取整和近似。在面试过程中进行复杂的数学运算是困难的。例如,“99987 / 9.1”的结果是什么?没必要花宝贵的时间去解决复杂的数学问题。不需要精确。利用取整和近似。这个除法问题可以简化为:“100,000 / 10”。
  • 写下你的假设。写下你的假设以便稍后参考是个好主意。
  • 标记你的单位。当你写下“5”时,是指5 KB还是5 MB?你可能会因此混淆自己。写下单位,因为“5 MB”有助于消除模糊性。
  • 常被问到的信封背面估算:QPS、峰值QPS、存储、缓存、服务器数量等。在为面试做准备时,你可以练习这些计算。熟能生巧。

恭喜你已经到了这一步!现在给自己一个赞扬。干得好!

AI不会取代你,使用AI的人会。欢迎关注我的公众号:更AI。以程序员的视角来看AI能带给我们什么~

参考资料

[1] J. Dean. Google Pro Tip: 使用信封背面计算法选择最佳设计:

​​​http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-​​​calculations-to-choo.html

[2] 系统设计入门:​​​https://github.com/donnemartin/system-design-primer​​​[3] 每个程序员都应该知道的延迟数字:

​​​https://colin-scott.github.io/personal_website/research/interactive_latency.html​​​[4] 亚马逊计算服务级别协议:

​​​https://aws.amazon.com/compute/sla/​​​[5] 计算引擎服务级别协议 (SLA):

​​​https://cloud.google.com/compute/sla​​​[6] Azure服务的SLA摘要:​​​https://azure.microsoft.com/en-​​​us/support/legal/sla/summary/

标签:信封,粗略,背面,估算,AI,系统,性能需求,QPS,数字
From: https://blog.51cto.com/u_16138421/6365968

相关文章

  • 系统设计面试的框架
    面试你刚刚得到了梦寐以求的公司现场面试机会。招聘协调员给你发送了当天的日程安排。扫视这个列表,你对此感到非常满意,直到你的目光落在这个面试环节上——系统设计面试。系统设计面试经常让人感到紧张。问题可能含糊如“设计一个知名的产品X?”。问题含糊不清,似乎过于宽泛。你的......
  • 网安--Linux操作系统基础知识
    1、Linux系统结构(1)内核1、管理进程(2)shell(包围在内核外的壳)接收用户的命令,经过转换,交给内核去执行查看shell工具 切换shell工具chsh-s例:chsh-s/bin/csh shell编程/shell脚本(.sh)#!/bin/bash(3)文件系统 "一切皆文件":以文件的方式进行访问lsof/bin/bash 查......
  • 雷达原理与系统 第五讲 雷达发射机主要质量指标
    雷达原理与系统第五讲雷达发射机主要质量指标1.雷达发射机的工作频率2.信号波形3.输出功率4.信号形式5.脉冲波形6.信号稳定度7.频谱纯度注解:雷达发射机的质量指标=主要技术参数,质量指标决定了发射机的类型。 1.雷达发射机的工作频率A.选择雷达工作频率,需要......
  • [转]一篇文章教你学会使用三维重建知名开源系统
    如何把一组图像转换为3D模型,这可能是三维重建初学者们最常遇到的问题。这个过程融合了计算机视觉、计算机图形学、图像处理等多门学科的知识,是一套非常复杂的工程系统,许多同学想要学习却苦于没有资料参考,导致入门难度大大提高。为了帮助想要学习三维重建的同学快速上手实践,本......
  • 系统设计:从零用户扩展到百万用户
    设计一个支持百万用户的系统是具有挑战性的,这是一段需要不断改进和不断提升的旅程。在本章中,我们将构建一个支持单个用户的系统,并逐渐扩展以服务于数百万用户。阅读本章后,您将掌握一些技巧,帮助您解决系统设计面试问题。AI不会取代你,使用AI的人会。欢迎关注我的公众号:更AI。以程......
  • 基于C语言开发菜鸟驿站管理系统
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]这是用C语言写的简单的菜鸟驿站管理系统,还配有的我的学年设计文档,内容应该很详细一、绪论1.1设计背景随着社会的发展,互联网的兴起,网络购物渐成为人们购物的新时尚。快递行业也在网络购物的带动下蓬勃发展,成为人们生活中必不可少的......
  • 基于Arduino和Java实现的教室桌面控制系统
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]摘要物理实验室类的专业教室目前使用状况十分混乱,为了改变这一现状,我们提出并设计了一个专业教室桌面控制系统。这个系统主要由客户端和服务端两大部分构成。客户端又可以分为门禁机、通信机、桌面机和读卡机四部分。门禁机负责控制......
  • 2023上半年软考系统分析师科目一整理-02
    (2023上半年软考系统分析师科目一整理-02)1.安全对称加密算法中,由于加密解密都使用同样的密钥,所以密钥需要进行共享,故也被称共享密钥算法。三重DES加密是使用2个DES密钥,进行多次操作来完成的,所以其密钥长度是:56*2=112位。对称加密算法(私钥加密算法)包括:DES、3DES、RC-5、IDEA、......
  • 转载-如何结合FT2232HL/CMSIS-DAP+Eclipse+OpenOCD软硬件工具使用SWD调试接口在Window
    原文链接:https://blog.csdn.net/zhuwade/article/details/121944736由于我们公司自己需要开发烧录工具,本人通过google搜相关文档和看ARM公司的技术文档,终于实现了这个功能。因为涉及的内容知识点比较多,对于玩嵌入式MCU的小白来说要普及的知识,逐个介绍篇幅会比较长,本文中只介绍......
  • 设计高性能的售票系统
    设计高性能的售票系统在当今数字化时代,一个高性能的售票系统对于任何企业或机构来说都是至关重要的。无论该系统服务于电影院、剧院、运输公司还是其他类型的场所,它必须始终可靠、快速和易于使用。以下是几个要点,有助于为您的售票系统设计出高性能的解决方案。1.高负载处理能力售......