c#Http请求KeepAlive请求顺序
本文关键字:请求 顺序 KeepAlive c#Http | 更新日期: 2023-09-27 18:25:54
我的问题是关于Http标头Connection: Keep-Alive
和Connection: Close
我正在呼叫一个网络服务。web服务托管在多个服务器上,并且是负载平衡的。如果Connection
标头设置为Keep-Alive
,则请求保持在同一服务器上
我的程序需要执行两个操作(对服务的两个调用),但我需要确保这两个请求被发送到同一服务器。
例如,如果负载均衡器后面有3台服务器:
- 请求#1(操作#1)-调用服务并路由到服务器#1
- 请求#2(操作#1)-调用服务并路由到服务器#1
- 请求#3(操作#2)-调用服务并路由到服务器#2
- 请求#4(操作#2)-调用服务并路由到服务器#2
- 请求#5(操作#3)-调用服务并路由到服务器#3
- 请求#6(操作#3)-调用服务并路由到服务器#3
- 请求#7(操作#4)-调用服务并路由到服务器#1
- 请求#8(操作#4)-调用服务并路由到服务器#1
- 等等
所以我的问题是:
为了实现上述目的,我需要在哪些请求中发送Close
/Keep-Alive
?
Keep-Alive
是否为NEXT请求准备服务器?还是告诉服务器记住PREVIOUS请求?
您应该至少在每次操作的第一个请求中使用它:
- 第一个请求:
Connection: Keep-Alive
- 第二个请求:
Connection: Close
如果你要一起打所有的电话,你也可以把它保存在所有的电话中,但最后一个除外,这会加快连接过程:
- 第一个请求:
Connection: Keep-Alive
- 第二次及以后:
Connection: Keep-Alive
- 上次请求:
Connection: Close
然而,这也将取决于负载平衡实现,但我认为它们倾向于遵循标准。