在多个服务器上运行时,Web 应用程序会话如何工作?

how do web application sessions work when running on more than one server?

这是一个基于网络会话如何跨多个服务器工作的一般性问题,我对网络会话的了解不是很深,但据我所知,网络会话通常直接存储在正在运行的网络服务器应用程序的内存中,因此当请求进来它不必发出数据库请求来获取会话数据。如果一个受欢迎的网站需要多个服务器来处理它接收到的流量级别,当一个请求进来时,我假设它可以被一些负载均衡器定向到任何服务器,但是处理该请求的服务器如何获得关联的如果先前的请求是由不同的服务器处理的会话数据?多服务器站点是否需要特殊的会话处理基础设施,或者负载平衡器是否知道如何将来自同一客户端的请求路由到同一服务器?

This question on ServerFault与本题相同。有一个很好的答案。总的来说有 3 种常用方法:

  • 仅存储在 cookie 中的会话信息
  • 负载均衡器始终将用户定向到同一台机器
  • 共享后端数据库或key/value 存储。

请参阅 link 了解每项内容的更深入的详细信息。