为什么在这种情况下“平均值”作为一种度量指标受到青睐(胜过“延迟”)

83次阅读
没有评论

问题描述

在关于 RED 方法的一个演讲中,演讲者在与延迟进行比较的情况下,为什么他选择使用“平均值”进行度量。演讲中的部分内容如下(非逐字逐句,经过整理格式):

“有两个原因我选择绘制平均值:
1. 延迟不会相加。如果你有一个服务的延迟很高,并且你查看它调用的两个服务。通常情况下,后两个服务的延迟很低。这对你没有帮助,因为延迟不是这样相加的。
2. 平均值却会相加。因此,如果你有一个平均值很高的服务,那么它下面提到的两个服务之一,将会有一个高的平均值。这有助于你进行准确定位。”

你能解释一下他所说的“延迟不会相加,而平均值会相加”吗?另外,我们难道不能立即确定被调用的服务是有问题的吗(因为它是唯一一个延迟高的服务)?

解决方案

请注意以下解释可能涉及个人观点,但基于技术知识和常见理解。

在这个演讲中,演讲者介绍了为什么在特定情况下使用“平均值”作为度量指标,而不是使用“延迟”。让我们逐步解释他所提到的观点。

延迟与平均值的区别

延迟指的是一个操作或服务完成所需的时间。通常,延迟的度量可以包括最小延迟、最大延迟以及平均延迟。而平均值是所有值的总和除以值的数量,表示了一个数据集的中间值。

延迟不会相加

演讲者提到的“延迟不会相加”是指多个服务的延迟不能简单地相加得到总体延迟。举例来说,假设有一个服务 A 调用了服务 B 和服务 C,以及服务 B 和服务 C 各自的延迟分别为 10 毫秒和 15 毫秒。在这种情况下,服务 A 的总体延迟不是 10 + 15 = 25 毫秒,因为这并不准确地表示服务 A 完成所需的时间。这是因为服务 A 可能会并行调用服务 B 和服务 C,它的完成时间不仅仅是延迟之和。

平均值会相加

与延迟不同,平均值的性质使得它可以用于相加。假设有多个服务的平均延迟,这些平均值可以被相加,从而给出整体的平均延迟。这可以帮助我们更好地了解在整个系统中的性能问题。演讲者的观点是,如果一个服务的平均延迟较高,那么它所调用的子服务的平均延迟也可能会较高,这有助于定位问题。

为什么不能立即定位被调用的服务?

你提到演讲者是否正确,即被调用的服务是唯一一个延迟较高的服务,那么是否可以立即确定它有问题。然而,这里的关键是理解系统的复杂性。即使一个服务的延迟较高,它可能仍然是多个并行或串行操作中的一部分,而这些操作的总体影响可能会导致其他服务的性能下降。因此,通过查看整体平均延迟,我们可以更全面地评估系统性能问题,而不仅仅关注单个服务的延迟。

综上所述,演讲者在这个演讲中强调使用平均值作为度量指标的好处,因为平均值在某些情况下更能够提供关于系统性能的全面视角,而不仅仅是关注单个延迟较高的服务。这有助于更好地定位问题并进行性能优化。

正文完