c#Http请求KeepAlive请求订单

时间:2014-10-08 14:36:55

标签: c# web-services http-headers load-balancing

我的问题是关于Http标头Connection: Keep-AliveConnection: Close

我正在调用一个Web服务。 Web服务托管在多个服务器上并且是负载平衡的。 如果Connection标头设置为Keep-Alive

,请求将保留在同一服务器上

我的程序需要执行两次操作(2次调用服务) - 但我需要确保将这两个请求发送到同一服务器。< / p>

例如,如果负载均衡器后面有3台服务器:

  1. 请求#1(操作#1) - 调用服务并路由到服务器#1
  2. 请求#2(操作#1) - 调用服务并路由到服务器#1
  3. 请求#3(操作#2) - 调用服务并路由到服务器#2
  4. 请求#4(操作#2) - 调用服务并路由到服务器#2
  5. 请求#5(操作#3) - 调用服务并路由到服务器#3
  6. 请求#6(操作#3) - 调用服务并路由到服务器#3
  7. 请求#7(操作#4) - 调用服务并路由到服务器#1
  8. 请求#8(操作#4) - 调用服务并路由到服务器#1
  9. 等...
  10. 所以我的问题是:

    我需要在哪些请求中发送Close / Keep-Alive才能实现上述目标?

    Keep-Alive是否为 NEXT 请求准备服务器?或是它告诉服务器记住 PREVIOUS 请求?

1 个答案:

答案 0 :(得分:1)

您应该至少在每次操作的第一次请求时使用它:

  • 第一次请求:Connection: Keep-Alive
  • 第二次请求:Connection: Close

如果你要一起做所有的电话,你也可以将它们全部保留在最后一个,这将加快连接过程:

  • 第一次请求:Connection: Keep-Alive
  • 第二次及以后:Connection: Keep-Alive
  • 上次申请:Connection: Close

然而,它还取决于负载平衡实现,但我认为它们倾向于遵循标准。