美文网首页架构设计
微服务架构设计-10封底估算

微服务架构设计-10封底估算

作者: holmes000 | 来源:发表于2023-12-25 14:41 被阅读0次

在系统设计中,可能会面临封底估算(Back-of-the-Envelope Estimation)的场景,这要求你通过合理的估算来评估系统的能力或性能需求。根据谷歌高级研究员Jeff Dean的观点,封底估算是通过将想象中的实验与常见性能指标数据结合,得出初步概念,以便了解何种设计可以满足系统需求。

为了有效地进行封底估算,你需要掌握可扩展性的基础知识,并且应该深入理解以下概念:2的幂、程序员应该了解的操作耗时,以及与可用性相关的数据。这些知识将帮助你在系统设计中更好地评估系统设计的可行性和性能要求。

在处理分布式系统时,尽管数据量可能变得非常庞大,但相关的计算本质上仍然是基本的数学运算。为了确保获得正确的计算结果,对于2的幂所代表的数据量单位有深刻的了解非常重要。在计算机科学中,数据存储的基本单位是字节(byte),而位(bit)则是字节的基本构成单元。一个字节等于8位(bit)也叫比特。

具体而言,一个ASCII字符通常占用1字节的内存,相当于8比特。这意味着,一个ASCII字符可以由8个二进制位表示。理解字节和位的关系对于有效地处理数据以及在分布式系统中执行正确的计算是至关重要的。在处理大规模数据时,2的幂的概念也经常用于确定适当的数据存储和处理容量。例如,存储容量经常以2的幂的形式表示,如2^10(1024字节)或 2^20(1兆字节)等。


image.png

1. 操作耗时

在2010年,谷歌的高级研究员Jeff Dean在他的文章中分享了典型计算机操作所需的时间。尽管随着计算机速度的提升和算力的增强,其中一些数据可能已经过时,但这些数字仍然为我们提供了对不同操作耗时的了解。这些数据虽然可能需要根据现代硬件和技术的发展进行更新,但仍然是一个有用的参考,帮助我们理解计算机操作的相对耗时。


image.png

以上数据我们可以得出结论:

  • 内存的速度相对较快,而硬盘的速度相对较慢。
  • 尽量避免在硬盘中进行数据查找,以提高数据访问效率。
  • 使用简单的压缩算法可以加速数据的处理速度。
  • 在通过因特网传输数据之前,最好在尽可能的程度上对数据进行压缩。
  • 数据中心通常分布在不同的地理区域,因此在它们之间传输数据可能需要较长的时间。

2. 可用性相关的数字

高可用性指的是系统能够长时间持续运行的能力。通常,高可用性使用百分比进行衡量,其中100%表示服务没有不可用的时间。大多数服务的可用性介于99%到100%之间。

SLA(服务水平协议)是服务提供商广泛使用的术语,它是服务提供商和客户之间的正式协议,明确规定了提供的服务应该正常运行的时间。云服务提供商,如亚马逊、谷歌和微软,通常将它们的SLA设定为99.9%或更高。正常运行时间通常以小数点后的“9”的个数来度量,而“9”的数量越多,代表可用性越高。下图详细列出了“9”的数量与系统预计不可用时长之间的关系。


image.png

例子:我们尝试估算下推特的QPS和存储需求

以下为练习数据,非真实数据。假设条件:

  • 推特有3亿用户
  • 50%的用户每天都使用推特
  • 用户平均每天发两条推文
  • 10%的推文包含多媒体数据
  • 数据要存储5年

根据上述条件估算QPS(每秒查询量),多媒体数据的存储量是多少?
1. 估算QPS
每日活跃数DAU = 300_000_000✖️50% = 150_000_000
推文QPS = 150_000_000✖️2 ➗ 24(小时) ➗3600(秒) ≈ 3500
峰值QPS(每秒查询量) = 推文QPS✖️2 =7000
2.多媒体数据存储量
平均推文大小:
推文ID = 64KB
推文 = 140KB
多媒体文件 = 1MB
每天多媒体文件存储量 = 150_000_000✖️2✖️1MB = 300_000_000MB ≈ 30000GB = 30TB
5年需要存储量 = 30TB✖️365✖️5 ≈ 55000TB = 55PB

这里问题的解决点不在于数据计算,而是在于你的估算逻辑。

相关文章

  • 封底估算

    时间概念: 对于同一个问题从两个维度上的改进及其影响 可以看出 硬件对着运算时间有着一定的影响 但是重点还是算法的...

  • 微服务架构设计实践

    微服务架构设计实践 目 次 1 序言 2 微服务 3 软件架构设计思想 4 微服务架构设计实践 4.1 项目概述 ...

  • 微服务架构设计实践系列4.2——4.3

    微服务架构设计实践 目 次 1 序言 2 微服务 3 软件架构设计思想 4 微服务架构设计实践 4.1 项目概述 ...

  • 微服务架构设计实践

    微服务架构设计实践 目 次 1 序言 2 微服务 3 软件架构设计思想 4 微服务架构设计实践 4.1 项目概述 ...

  • 服务架构比较

    服务架构演进方向: 模块化编程->面向事件设计->面向接口设计(单体)->SOA架构->微服务架构->Servic...

  • 微服务架构设计实践

    微服务架构设计实践 1 序言 最近,在软件架构设计领域,微服务非常火。 一提到软件开发、架构设计,如果不提微服务,...

  • 10个微服务架构设计的最佳实践

    10个微服务架构设计的最佳实践 微服务极大的改变了服务端引擎的架构方式。微服务不是一个单一的巨型的用来托管应用程序...

  • 软件架构模式

    CQRS架构 微服务架构 微核架构

  • 第10周

    关于微服务架构(中台架构、领域驱动设计、组件设计原则),你有什么样的思考和认识? 关于微服务架构 微服务其实早就存...

  • 01、DDD和微服务的关系

    软件架构模式的演进 微服务设计和拆分的困境 1、微服务的粒度应该多大呀?2、微服务到底应该如何拆分和设计呢?3、微...

网友评论

    本文标题:微服务架构设计-10封底估算

    本文链接:https://www.haomeiwen.com/subject/codkndtx.html