登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
系统设计(架构师)指南2封底估算&新浪微博实例 ...
系统设计(架构师)指南2封底估算&新浪微博实例
[ 复制链接 ]
宇文之
2025-6-5 20:02:40
2 封底估算
在系统设计面试中,有时会要求你使用 "封底估算"(back-of-the-envelope estimation)来估算系统容量或性能需求。根据谷歌高级研究员杰夫-迪恩(Jeff Dean)的说法,"封底估算是你结合思想实验和常见性能数字进行的估算,目的是让你对哪些设计能满足你的要求有一个良好的感觉"。
2.1 常用单位
2的方次近似值全称简称10Thousand千字节(Kilobyte)KB20Million兆字节(Megabyte)MB30Billion千兆字节(Gigabyte)GB40Trillion太字节(Terabyte)TB50Quadrillion百亿字节(Petabyte)PB
2.2 延迟
来自谷歌的迪恩博士揭示了 2010 年典型计算机操作的时长。随着计算机速度越来越快、功能越来越强大,有些数字已经过时。不过,这些数字仍能让我们了解不同计算机操作的快慢。
操作时间L1缓存0.5ns分支误预测5ns二级缓存7ns互斥锁定/解锁100ns主内存引用100nsZippy压缩1K字节10 μs1Gbps网络发送2K字节20 μs内存顺序读取1MB250μs同一数据中心内往返500μs磁盘寻道10ms网络顺序读取1MB10ms磁盘顺序读取1MB30ms发送数据包CA(California)->Netherlands->CA150ms
谷歌的一名软件工程师制作了一个工具,将Dean博士的数字可视化。该工具还考虑了时间因素。下图显示了截至 2020 年的可视化延迟数字(数字来源:参考资料 https://colin-scott.github.io/personal_website/research/interactive_latency.html )。
内存速度快,但磁盘速度慢。
尽可能避免磁盘寻道。
简单的压缩算法速度快。
尽可能在通过互联网发送数据前对其进行压缩。
数据中心通常位于不同地区,在它们之间发送数据需要时间。
2.3 可用性数字
高可用性是指系统在理想的长时间内持续运行的能力。高可用性是以百分比来衡量的,100%表示服务没有停机时间。大多数服务介于99%和100%之间。
服务水平协议(SLA:service level agreement)是服务提供商的常用术语。这是您(服务提供商)与客户之间的协议,该协议正式规定了您的服务将提供的正常运行时间水平。云服务提供商亚马逊、谷歌和微软将其 SLA 定义为 99.9% 或以上。正常运行时间传统上以9为单位。9越多越好。
参考资料
软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
https://www.drawio.com/doc/faq/
J. Dean.Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design:
http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html
System design primer: https://github.com/donnemartin/system-design-primer
Latency Numbers Every Programmer Should Know:
https://colin-scott.github.io/personal_website/research/interactive_latency.html
Amazon Compute Service Level Agreement:
https://aws.amazon.com/compute/sla/
Compute Engine Service Level Agreement (SLA):
https://cloud.google.com/compute/sla
SLA summary for Azure services: https://azure.microsoft.com/en-us/support/legal/sla/summary/
2.4 实例:估算新浪微博QPS和存储需求
请注意以下数字仅用于本练习,并非新浪微博的真实数字。
假设
3亿月活跃用户。
50%的用户每天使用。
用户平均每天发布2条微博。
10%的微博包含媒体内容。
数据存储 5 年。
估计值:
每秒查询次数 (QPS Query per second) 估计值:
日活跃用户(DAU Daily active users) = 3亿 * 50% = 1.5亿
博文QPS = 1.5亿*2条推文/24小时/3600秒 = ~3500
峰值QPS =2*QPS = ~7000
我们在此仅估算媒体存储量。
平均微博大小
weibo_id 64 字节
文本 140 字节
媒体 1 MB
媒体存储量 每天1.5亿 * 2 * 10% * 1 MB = 30TB
5年媒体存储: 30TB * 365 * 5 = ~55PB
2.5 面试小结
封底估算的关键在于过程。解决问题比获得结果更重要。面试官可能会测试你解决问题的能力。以下是一些应遵循的技巧:
圆周率和近似值。面试时很难进行复杂的数学运算。例如,"99987/ 9.1"的结果是什么?没有必要花费宝贵的时间来解决复杂的数学问题。不要求精确。使用整数和近似值对你有利。除法问题可简化如下: "100,000/10".
写下你的假设。最好写下你的假设,以便日后参考。
标注单位。写下 "5 "时,是指 5 KB 还是 5 MB?这可能会让你感到困惑。写下单位,因为 "5 MB "有助于消除歧义。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
宇文之
2025-6-5 20:02:40
关注
0
粉丝关注
12
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多