高可扩展性的一种方法是使用网络负载均衡来将处理负载分配给多个服务器。
这种方法面临的一个挑战是,当服务器具有状态感知能力时,它们会在“会话”中存储用户状态。
解决这个问题的方法之一是“粘性会话”(也称为“会话亲和力”),其中每个用户被分配到一个单独的服务器,并且他/她的状态数据仅在会话期间完全保存在该服务器上。
“粘性会话”方法的优缺点是什么?您是否使用它?如果是,您是否满意?
高可扩展性的一种方法是使用网络负载均衡来将处理负载分配给多个服务器。
这种方法面临的一个挑战是,当服务器具有状态感知能力时,它们会在“会话”中存储用户状态。
解决这个问题的方法之一是“粘性会话”(也称为“会话亲和力”),其中每个用户被分配到一个单独的服务器,并且他/她的状态数据仅在会话期间完全保存在该服务器上。
“粘性会话”方法的优缺点是什么?您是否使用它?如果是,您是否满意?
优点:
缺点:
但是如果您必须使用服务器本地会话状态,则粘性会话肯定是正确的选择。 即使您不使用服务器本地会话状态,粘性也具有缓存利用方面的优点(请参见上文)。 您的负载均衡器应该能够查看HTTP cookie(而不仅仅是IP地址)以确定粘性,因为IP地址可能在单个会话期间更改(例如,在有线和无线网络之间对笔记本电脑进行停靠)。
更好的方式是,在 Web 服务器上根本不使用会话状态!如果会话状态很难以丢失(例如购物车),请将其存储在中央数据库中,并定期清除旧会话。如果会话状态不重要(例如用户名/头像 URL),则将其放入 cookie 中--只需确保不要将过多数据塞入 cookie 中。