|
|
1
3
我们有硬件负载均衡器和memcached。它们有不同的用途,memcached实际上与粘性会话没有太多关系。 这是非常高级的,但是您可以这样想:负载平衡允许您将对CPU和其他资源的请求分散到一堆服务器上。但是,memcached使它成为您甚至不需要这些资源的第一位。 例如,假设您有一个搜索页面,并决定缓存搜索结果。假设您有20台服务器。当一个搜索请求出现时,它将被路由到一个服务器,我们可以称之为服务器A。该服务器将进行搜索,然后将结果缓存到memcached中。 现在,如果相同的搜索请求来自不同的会话或用户,它很可能被路由到不同的服务器,服务器B。但是服务器B将能够从服务器A放置的memcached中检索缓存的结果,因此它将不必实际执行搜索。 Caveat: 如果您正在使用memcached进行缓存,这将不适用。 只有 特定于会话并在会话之间发生变化的内容,例如唯一的登录令牌。对于这些事情,如果您有粘性会话,那么您最好只在服务器上缓存具有特定会话的缓存。然而,大多数值得缓存的东西被更广泛地访问。 |
|
|
2
3
从我开发高级负载均衡器设备的长期经验来看,cookie粘性实际上会破坏您的负载平衡,因为平衡只在每个会话的第一个请求上进行,从那时起,所有用户请求都将转到同一个服务器。这就造成了一个不平衡的环境。 在memcached中保存会话是实现这一点的最佳解决方案,因为每个web/app服务器都可以访问共享memcached以获取用户状态,并且负载平衡是基于每个请求而不是每个会话来完成的。 |
|
|
3
2
但是,启用粘性会话可能会降低负载平衡的效率。我们在生产站点上看到了这一点,其中一个服务器(只是偶然)会有很多低活动会话,而另一个服务器会有很多高活动会话。会话平衡,但不一定是负载或流量。 这不是一个完整的答案,但这是一个重要的考虑因素。 |