算法 - 跟踪从一个服务到另一个服务的数据延迟

时间:2016-09-08 16:24:05

标签: algorithm

假设我订阅了一项服务,该服务可以为我提供我所在城市的温度,并且有时发送数据的时间非常快,有时间隔更长。

Temp Timestamp (ms)
20C 1
21C 2
20C 286
21C 287
21C 288
21C 289
20C 423
etc.

现在让我们假设订阅者服务转换为华氏温度,并在我公司内部重新发布这些数据,并提供它自己的时间戳。

警告1:一些数据滴答被删除,因为某些滴答的速度比可以重新计算到华氏温度要快,因此它将采用队列中的最新值。

警告2:如果在减少可用带宽时出现大量滴答声,则发布的华氏数据可能需要“更长”(即具有更高的延迟)。

Temp Timestamp (ms)
68F 2:00:00:0001
69F 2:00:00:0023
68F 2:00:00:0063
etc..

“匹配”可能的相应节拍并计算两种服务之间的延迟的最佳方法是什么?报告两个延迟会更好吗?一个在高负荷期间,一个在标准负荷期间?如果是这样,我如何确定高负载何时?当某些延迟值是某些std偏差时?

1 个答案:

答案 0 :(得分:0)

您有摄氏服务C,华氏服务F和华氏用户S.

您可以通过三个地方来衡量延迟:

C--->F (The time it takes for outbound C to go to F)
F--->S (The time it takes for outbound F to go to S)
F(c)   (The time of computation for Celsius to Fahrenheit).

如果您为所有出站流量添加时间戳,无论是C还是F的出站,您都可以通过将时间戳与当前时间进行比较并获得延迟来从用户的角度衡量服务延迟。有类似的方法来计算F内的延迟。

关于你的两个警告:

  1. 如果数据丢失,则没有延迟。它从未到达终点,因此您无法衡量开始和结束时间之间的差异。

  2. 当使用率增加时,延迟更高是正常的。按照惯例报告,无需特殊处理。

  3. 如果您定期报告平均延迟,您应该能够确定何时“高负荷”。您可以创建一个时间序列图表,当有更多连接时,它应显示延迟时间。