如何locking来自多个Web服务器的共享Web服务的并发访问?

我们的生产环境由n台Apache Web服务器通过前端负载均衡器通过浏览器访问。 很典型。 我们99%的HTTP请求都是由这个并行架构来处理的,没有任何问题。

不幸的是,Apache处理的请求中有1%需要访问外部服务器上的层级SOAP Web服务,这绝对无法处理并发性 ,导致许多严重错误。

我正在寻找一种方法来通过一种代理来pipe理这些SOAP请求,能够将请求同步排队并locking到外部服务器。

像Pound,Nginx,Squid或Varnish这样的标准代理是否实现了这样的队列

亚马逊有一个你可以使用的服务。 它被称为简单队列服务。 http://aws.amazon.com/sqs/

您可以使用它来对作业进行排队,并逐个从队列中select它们。

收到消息时,在处理过程中会变为“locking”状态。 这使其他计算机不能同时处理消息。 如果消息处理失败,则locking将过期,消息将再次可用。 在应用程序需要更多处理时间的情况下,可以通过ChangeMes​​sageVisibility操作dynamic更改“locking”超时。

有许多替代品可以适合您的使用情况:

Redis可能是解决这类问题的方法。 因为它处理primefaces操作 。