将一个请求“拆分”到多个服务器

时间:2011-12-06 03:59:35

标签: http proxy httpwebrequest

是否可以将请求拆分为多个端点服务器?

所以例如: 如果服务器A接收到一个请求,它将把它转发到3个不同的服务器(B,C和D),这些服务器将通过X-Forwarded-For标头接收该原始请求。

              forward
request => A ========> B  
             ========> C
             ========> D

对此问题的回答可以很简单200 OK。

到目前为止,我已经使用过HAProxy和Apache的mode_proxy而没有成功。

另请阅读HTTP Pipelining,但我不认为这是这种情况。

3 个答案:

答案 0 :(得分:6)

编写

Gor就是为了做到这一点。

Arthur Lutz提示,以便发布答案here

答案 1 :(得分:1)

嗯。我该怎么办?大多数网络设置,无论是执行代理请求还是负载平衡,都会在传入请求与特定请求的最终目标之间保持一对一的关系。我想你需要一些代码。我想我会在C中使用mod_perl或自定义apache模块在早期阶段拦截请求,并使用子请求进行多路由。

答案 2 :(得分:0)

这是我为与Node.js类似目的而编写的反向代理/负载平衡器(它只是出于娱乐目的,目前还不能用于生产)。

https://github.com/losnir/ampel

这很自以为是,目前支持:

  • GET使用循环选择(1:1)
  • POST使用请求拆分。没有“主”和“影子”的概念-响应的第一个后端是将服务于客户端请求的后端,然后所有其他响应都将被丢弃。

如果有人发现它有用,那么我可以改进它以使其更加灵活。