首页 > 解决方案 > 基于百分位的 API 调用超时设置

问题描述

我有要求,下面提供了它的选项,这个实现的最佳选择是什么?

正在设计一个新的上游 API,以提供 500 毫秒中值和 800 毫秒最大(第 99 个百分位)响应时间的 SLA。对应的 API 实现需要依次调用 3 个复杂度非常相似的下游 API。

这些下游 API 中的第一个为其响应时间提供以下 SLA:中位数:100 毫秒,第 80 个百分位:500 毫秒,第 95 个百分位:1000 毫秒。

如果可能,如何在上游 API 中为调用第一个下游 API 设置超时以满足新的上游 API 所需的 SLA?

A.设置50毫秒的超时时间;这会超时对该 API 的更多调用,但会为重试提供更多空间

B、设置超时时间为100毫秒;剩下 400 毫秒让其他两个下游 API 完成

C. 满足上游 API 期望的 SLA 没有超时是可能的;必须与第一个下游 API 协商不同的 SLA 或调用替代 API

标签: javaapirestpercentagepercentile

解决方案


选择选项 A)这将低于下游服务的中值,即您将获得低于 50% 的 SLA 合规性。

选择选项 B)设置 100 毫秒更好,因为您可以获得 50% 的调用,但是您不知道其他 2 个下游 API 的 SLA 是什么。因此,您将再次获得少于 50% 的 SLA 合规性。

我会在这里选择选项 C)。选项 A 和 B 给你的成功率低于 50%,这非常糟糕。我会尝试谈判。


推荐阅读