我想制作一个对第三方Web服务高度可靠的Web服务。此处的高可靠性意味着我的Web服务将成功处理来自第三方Web服务的任何单个请求。第三方服务在失败的请求上没有重试机制,也不能更改其请求格式(包含正文中字段和值的http POST)。
我没有考虑故障转移解决方案,例如负载均衡器后面的多个节点满足要求,因为一个节点可能会失败,并且负载均衡器可能仍然会在从池中删除之前将请求路由到它。
我正在考虑使用类似Amazon SQS的东西接收来自第三方请求的请求并将其传递到我的Web服务,因为SQS具有重试机制。但是,这里遇到的困难是SQS似乎要求在“消息”参数中填写内容,而第三方服务无法实现这一点。
可以有解决方案吗?
答案 0 :(得分:1)
确保完成我能够想到的请求的唯一真正解决方案是向第三方Web服务添加包装器,以便它具有重试机制。包括HA在内的任何其他解决方案都会出现故障。请注意,如果Amazon SQS服务失败,您仍将拥有第三方Web服务,该服务将从服务中心请求信息并失败。
答案 1 :(得分:1)
我没有考虑多个节点等故障转移解决方案 在负载均衡器后面满足要求,因为一个节点可能 失败并且负载均衡器可能仍然在其之前将请求路由到它 从游泳池中移除。
您认为SQS的架构如何?它们在负载平衡器后面有前端。如果前端失败,那么这些请求将失败。 SQS仍然是高可用性,因为如果您重试请求,它可能会成功。为避免向用户显示错误,您应在客户端进行重试。