小编典典

粘性和非粘性会话

all

我想知道粘性会话和非粘性会话之间的区别。从网上阅读后我的理解是:

Sticky :只有一个会话对象会在那里。

非粘性会话 :每个服务器节点的会话对象


阅读 102

收藏
2022-04-26

共1个答案

小编典典

当您的网站仅由一个 Web 服务器提供服务时,对于每个客户端-服务器对,都会创建一个会话对象并保留在 Web 服务器的内存中。来自客户端的所有请求都转到此
Web 服务器并更新此会话对象。如果在交互期间需要将一些数据存储在会话对象中,则将其存储在此会话对象中,并在会话存在时一直保留在那里。

但是,如果您的网站由位于负载均衡器后面的多个 Web 服务器提供服务,则负载均衡器会决定每个请求应该发送到哪个实际(物理)Web
服务器。例如,如果负载均衡器后面有 3 个 Web 服务器 A、B 和 C,则 www.mywebsite.com
可能服务器 A
提供,www.mywebsite.com从服务器 B
提供,而www.mywebsite.com / 由服务器 C
提供。

现在,如果请求是从(物理上)3
个不同的服务器提供的,每个服务器都为您创建了一个会话对象,并且因为这些会话对象位于三个独立的盒子上,所以没有直接的方法可以知道会话对象中有什么的另一个。为了在这些服务器会话之间进行同步,您可能必须将会话数据写入/读取到所有人通用的层中
- 例如数据库。现在,为此用例向数据库写入数据和从数据库读取数据可能不是一个好主意。现在, 粘性会话 的作用来了。

如果负载均衡器被指示使用粘性会话,那么您的所有交互都将发生在同一台物理服务器上,即使存在其他服务器也是如此。因此,在您与本网站的整个交互过程中,您的会话对象将是相同的。

总而言之,在粘性会话的情况下,您的所有请求都将被定向到同一个物理 Web 服务器,而在非粘性负载均衡器的情况下,可以选择任何 Web 服务器来处理您的请求。

例如,您可以在此处阅读有关 Amazon 的 Elastic Load Balancer 和粘性会话的信息:http:
//aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-
sessions.html

2022-04-26