0

我想做一个对第三方网络服务高度可靠的网络服务。这里的高可靠性意味着来自第三方 Web 服务的任何单个请求都将由我的 Web 服务成功处理。第三方服务没有针对失败请求的重试机制,也无法更改其请求格式(正文中包含字段和值的 http POST)。

我不考虑故障转移解决方案,例如负载均衡器后面的多个节点满足要求,因为一个节点可能会发生故障,并且负载均衡器可能在将请求从池中删除之前仍将请求路由到它。

我正在考虑使用诸如 Amazon SQS 之类的东西来接收来自第三方请求的请求并将其传递到我的 Web 服务,因为 SQS 具有重试机制。但是,这里的难点是SQS似乎要求在“消息”参数中填写内容,而第三方服务无法做到这一点。

有没有办法解决?

4

2 回答 2

1

我能想到的确保完成请求的唯一真正解决方案是向第三方 Web 服务添加一个包装器,以便它具有重试机制。包括 HA 在内的任何其他解决方案都会有故障点。考虑一下,如果 Amazon SQS 服务失败,您仍然有第三方 Web 服务会从停机服务请求信息并失败。

于 2013-07-06T06:13:27.203 回答
1

我不考虑故障转移解决方案,例如负载均衡器后面的多个节点满足要求,因为一个节点可能会发生故障,并且负载均衡器可能在将请求从池中删除之前仍将请求路由到它。

您认为 SQS 的架构是什么样的。它们在负载均衡器后面有前端。如果前端失败,那么这些请求将失败。SQS 仍然具有高可用性,因为如果您重试请求,它很可能会成功。为避免向用户显示错误,您应该在客户端构建重试。

于 2013-07-19T22:32:00.053 回答