系统设计(架构师)指南2封底估算&新浪微博实例

这篇具有很好参考价值的文章主要介绍了系统设计(架构师)指南2封底估算&新浪微博实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2 封底估算

在系统设计面试中,有时会要求你使用 "封底估算"(back-of-the-envelope estimation)来估算系统容量或性能需求。根据谷歌高级研究员杰夫-迪恩(Jeff Dean)的说法,"封底估算是你结合思想实验和常见性能数字进行的估算,目的是让你对哪些设计能满足你的要求有一个良好的感觉"。

2.1 常用单位

2的方次 近似值 全称 简称
10 Thousand 千字节(Kilobyte) KB
20 Million 兆字节(Megabyte) MB
30 Billion 千兆字节(Gigabyte) GB
40 Trillion 太字节(Terabyte) TB
50 Quadrillion 百亿字节(Petabyte) PB

系统设计(架构师)指南2封底估算&新浪微博实例

2.2 延迟

来自谷歌的迪恩博士揭示了 2010 年典型计算机操作的时长。随着计算机速度越来越快、功能越来越强大,有些数字已经过时。不过,这些数字仍能让我们了解不同计算机操作的快慢。

操作 时间
L1缓存 0.5ns
分支误预测 5ns
二级缓存 7ns
互斥锁定/解锁 100ns
主内存引用 100ns
Zippy压缩1K字节 10 μs
1Gbps网络发送2K字节 20 μs
内存顺序读取1MB 250μs
同一数据中心内往返 500μs
磁盘寻道 10ms
网络顺序读取1MB 10ms
磁盘顺序读取1MB 30ms
发送数据包CA(California)->Netherlands->CA 150ms

系统设计(架构师)指南2封底估算&新浪微博实例

谷歌的一名软件工程师制作了一个工具,将Dean博士的数字可视化。该工具还考虑了时间因素。下图显示了截至 2020 年的可视化延迟数字(数字来源:参考资料 https://colin-scott.github.io/personal_website/research/interactive_latency.html )。

系统设计(架构师)指南2封底估算&新浪微博实例

  • 内存速度快,但磁盘速度慢。
  • 尽可能避免磁盘寻道。
  • 简单的压缩算法速度快。
  • 尽可能在通过互联网发送数据前对其进行压缩。
  • 数据中心通常位于不同地区,在它们之间发送数据需要时间。

2.3 可用性数字

高可用性是指系统在理想的长时间内持续运行的能力。高可用性是以百分比来衡量的,100%表示服务没有停机时间。大多数服务介于99%和100%之间。

服务水平协议(SLA:service level agreement)是服务提供商的常用术语。这是您(服务提供商)与客户之间的协议,该协议正式规定了您的服务将提供的正常运行时间水平。云服务提供商亚马逊、谷歌和微软将其 SLA 定义为 99.9% 或以上。正常运行时间传统上以9为单位。9越多越好。

系统设计(架构师)指南2封底估算&新浪微博实例

参考资料

  • 软件测试精品书籍文档下载持续更新 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 "有助于消除歧义。文章来源地址https://www.toymoban.com/news/detail-683962.html

到了这里,关于系统设计(架构师)指南2封底估算&新浪微博实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统设计(架构师)指南3系统设计面试

    你刚刚获得了梦想公司梦寐以求的现场面试机会。HR给你发来了当天的日程安排。扫了一眼名单,你感觉良好,直到你的目光落到了这个面试环节--系统设计面试。 系统设计面试通常让人望而生畏。可能是\\\"设计一款知名产品 X\\\"这样含糊不清的问题。问题模棱两可,似乎宽泛得

    2024年02月09日
    浏览(37)
  • 系统设计(架构师)指南4设计限速器

    在网络系统中,限速器用于控制客户端或服务发送流量的速率。在HTTP世界中,限速器限制在指定时间内允许发送的客户端请求数量。如果API请求数超过了限速器定义的阈值,超出调用都会被阻止。下面是几个例子: 用户每秒最多只能写2篇文章。 同一IP地址每天最多只能创建

    2024年02月09日
    浏览(51)
  • 系统设计(架构师)指南5设计一致哈希(HASHING)

    要实现横向扩展,就必须在服务器之间高效、均匀地分配请求/数据。一致哈希是实现这一目标的常用技术。不过,首先让我们深入了解一下这个问题。 如果有n台缓存服务器,平衡负载的常用方法是使用下面的散列方法: serverIndex = hash(key)%N,其中N是服务器池的大小。 当服务

    2024年02月09日
    浏览(45)
  • 系统设计(架构师)指南1从零扩展到百万用户

    设计支持数百万用户的系统是一项挑战,是需要不断完善和无止境改进的过程。在本章中,我们将构建一个支持单个用户的系统,并逐步将其扩展到为数百万用户提供服务。 下图展示了单服务器设置的示意图,其中所有内容都运行在一台服务器上:网络应用程序、数据库、缓

    2024年02月10日
    浏览(42)
  • 微博舆情分析系统的设计与实现(python)

    随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,微博舆情分析系统的资讯信息通过网络进行信息管理掀起了热潮

    2024年02月20日
    浏览(38)
  • 【ELK 使用指南 3】Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构(附部署实例)

    分布式应用管理框架 。 Zookeeper是个开源的,分布式的,为分布式框架提供协调服务的Apach项目。 主要用于解决分布式应用集群中 应用系统的一致性问题 。 作为 文件系统 ,用于注册各种分布式应用, 储存管理分布式应用的元信息 ; 作为 通知机制 ,如果节点或者服务本身的

    2024年02月08日
    浏览(57)
  • 2个场景实例讲解GaussDB(DWS)基表统计信息估算不准的处理方案

    摘要: 通过2个实例场景讲解GaussDB(DWS)运维解决方案。 本文分享自华为云社区《GaussDB(DWS)运维 -- 基表统计信息估算不准的常见场景及处理方案》,作者:譡里个檔。 这种场景绝大部分场景DWS能够处理,但是如果隐式类型转后的结果与统计信息中的字段枚举值的表达式不一样

    2024年02月07日
    浏览(36)
  • 毕业设计:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年01月19日
    浏览(49)
  • 设计高并发分布式锁架构的实用指南

    在面对Java超大并发需求时,设计一个高效的分布式锁架构是至关重要的。本文将为您提供一套清晰明了、实践方便的设计指南,以确保系统在高并发场景下能够稳定可靠地运行。 首先,了解业务需求对分布式锁的具体要求至关重要。考虑到系统的高并发性质,通常需要满足

    2024年01月24日
    浏览(52)
  • 企业私有云:安全架构设计与安全运营实践指南

    概述 云计算被称为是继个人PC、互联网之后的第三次信息化革命,不仅实现了IT技术的革新,更是IT商业模式和服务模式的一次重大变革。越来越多的商业活动几乎都采用云计算技术作为后台支撑,实现按需服务,按需计费。 我国对云计算的产业高度重视,已把云计算产业的

    2024年01月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包