c#Http请求KeepAlive请求顺序



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

我正在呼叫一个网络服务。web服务托管在多个服务器上,并且是负载平衡的。如果Connection标头设置为Keep-Alive ,则请求保持在同一服务器上

我的程序需要执行两个操作(对服务的两个调用),但我需要确保这两个请求被发送到同一服务器

例如,如果负载均衡器后面有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. 等等

所以我的问题是:

为了实现上述目的,我需要在哪些请求中发送Close/Keep-Alive

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

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

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

如果你要一起打所有的电话,你也可以把它保存在所有的电话中,但最后一个除外,这会加快连接过程:

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

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

最新更新