我想做一个对第三方web服务高度可靠的web服务。这里的高可靠性意味着来自第三方web服务的任何单个请求都将被我的web服务成功处理。第三方服务没有针对失败请求的重试机制,也不能更改其请求格式(主体中包含字段和值的http POST )。
我没有考虑故障转移解决方案,例如负载均衡器后面的多个节点满足要求,因为一个节点可能会出现故障,负载均衡器仍然可能在请求从池中删除之前路由请求到该节点。
我正在考虑使用像Amazon SQS这样的东西,它接收来自第三方请求的请求,并将其传递到我的web服务上,因为SQS有一个重试机制。然而,这里的困难在于SQS似乎需要在"Message“参数中填充内容,而这不能由第三方服务实现。
有可能有解决方案吗?
发布于 2013-07-06 14:13:27
我能想到的确保完成请求的唯一真正的解决方案是向第三方web服务添加一个包装器,以便它具有重试机制。包括HA在内的任何其他解决方案都会有一个故障点。考虑一下,如果Amazon SQS服务失败,您仍将拥有一个第三方web服务,该服务将从关闭服务请求信息,然后失败。
发布于 2013-07-20 06:32:00
我不考虑故障转移解决方案,例如负载均衡器后面的多个节点满足要求,因为一个节点可能会出现故障,负载均衡器仍然可能在请求从池中删除之前路由请求到该节点。
你认为SQS的架构是什么样子的?它们在负载均衡器后面有前端。如果前端失败,那么这些请求将失败。SQS仍然是高可用性的,因为如果您重试请求,它很可能会成功。为了避免向用户显示错误,您应该在客户端构建重试。
https://stackoverflow.com/questions/17500045
复制相似问题