java - 基于百分位的 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
解决方案
选择选项 A)这将低于下游服务的中值,即您将获得低于 50% 的 SLA 合规性。
选择选项 B)设置 100 毫秒更好,因为您可以获得 50% 的调用,但是您不知道其他 2 个下游 API 的 SLA 是什么。因此,您将再次获得少于 50% 的 SLA 合规性。
我会在这里选择选项 C)。选项 A 和 B 给你的成功率低于 50%,这非常糟糕。我会尝试谈判。
推荐阅读
- c# - 绑定上下文初始化组件问题
- java - 无法在 Oracle Cloud 中创建 Oracle Java Cloud Service 实例
- excel - 当我转置字典项目时 vba 字典,我得到全零
- c++ - C++ 函数调用到 RISC-V 系统调用
- mysql - 在表 A 上插入后触发将表 C 中的值插入表 B
- xaml - 在 Xamarin 中添加自定义字体
- python - 如何使用 NaN 和重复的连接键压缩两个 Pandas Dataframes 之间的合并?
- reactjs - 无法读取未定义 React 的属性“toLowerCase”
- python-3.x - 如何返回指向对象属性的链接而不是 Python3 中的值?
- amazon-web-services - AWS 访问用户组的 S3 存储桶文件夹