ASP.NET Core SignalR (十一)【下】:托管和缩放

这篇文章解释了对于使用ASP.NET Core SignalR 的高流量app的托管和缩放的注意事项。

粘性会话

       SignalR 要求对于某一个特定连接的所有HTTP 请求都需要被一个相同服务进程处理。当SignalR 运行在一个服务场时(多个服务器),则必须使用“粘性会话”。“粘性会话”也被一些负载均衡器成为“会话类同”(session affinity)。Azure app 服务使用 Application Request Routing(ARR)来路由请求。在你的Azure app 服务中启用 ”ARR Affinity“设置就会启用”粘性会话“。仅有的不需要使用”粘性会话“的场景是:

  1.  当托管在一个单独的服务器上,在一个单独的进程中。
  2. 当使用Azure SignalR 服务时。
  3. 当所有的客户端被配置为仅使用WebSocket,并且在客户端配置中,启用了SkipNegotiation

       除了以上场景之外,在所有其他的场景下(包括当使用Redis底板时),服务端环境必须被配置为”粘性会话“。

       关于为SignalR 配置 Azure App Service的指南,请参考Publish an ASP.NET Core SignalR app to Azure App Service

TCP 连接资源

猜你喜欢

转载自www.cnblogs.com/qianxingmu/p/12553068.html