【问题标题】:Fallback to another service endpoint if the first is busy according to status code如果第一个服务端点根据状态码忙,则回退到另一个服务端点
【发布时间】:2018-10-24 04:04:32
【问题描述】:

如果第一次尝试失败,状态码为 429 或 500,如何回退到另一个 API 服务?

考虑这种情况: 网关应该首先尝试微服务主机,但如果它超时或回答非 2xx 状态码,它应该尝试下一个。

【问题讨论】:

  • 当您说“另一个 API 服务”时,您是指完全不同类型的 API 服务,还是指存在于另一台主机上的另一个服务实例?
  • 例如 localhost:8080/get “重定向”到 httpbin.org/v1/get 如果它返回 4xx 或 500 它应该回退到 example.org/v2/get
  • 在这种情况下,您不能只编写向第一个服务发送请求的代码,如果失败,编写更多代码将请求发送到第二个服务吗?理论上,您也可以在其上编写另一个抽象。也有许多不同类型的集成模式。我还有一个问题是httpbin.org/v1/get 是否是example.org/v2/get 的首选数据源?
  • 对客户来说应该是完全透明的。我不想为 web、移动等中的每种类型的客户端编写代码 也许有序数组委员会的优先领域是一个很好的顺序偏好。你认为我可以通过 express gateway 实现这个目标吗?
  • API 网关或逻辑所在的另一个代理服务。

标签: node.js express microservices express-gateway


【解决方案1】:

开箱即用的 Express Gateway 不支持此功能。如果请求失败,您将收到失败的请求。

现在您可以指定多个urls for a serviceEndpoint 将被使用,但以循环方式;因此,在使用第二个服务重试之前,您仍然会首先收到错误。

Express Gateway 可以——也许应该——处理这种情况。同时,我建议您寻找您的基础设施提供的其他替代方案。领事可能是要走的路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 2019-04-04
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多