高可扩展性的一种方法是使用网络负载平衡来分割多个服务器之间的处理负载。
这种方法提出的一个挑战是服务器可以识别状态 - 将用户状态存储在“会话”中。
此问题的一个解决方案是“粘性会话”(又名“会话关联”),其中每个用户被分配到单个服务器,并且他/她的状态数据在整个会话期间仅包含在该服务器上。
“粘性会话”方法的优点和缺点是什么?你使用它,如果是这样,你对它感到满意吗?
答案 0 :(得分:68)
优点:
缺点:
但是如果你必须使用服务器本地会话状态,粘性会话肯定是要走的路 - 即使你不使用服务器本地会话状态,粘性在缓存利用率方面也有好处(见上文) )。您的负载均衡器应该能够查看HTTP cookie(不仅是IP地址)以确定粘性,因为IP地址可以在单个会话期间发生变化(例如,在有线和无线网络之间对接笔记本电脑)。
更好的是,根本不要在Web服务器上使用会话状态!如果会话状态非常痛苦(例如购物车),请将其存储在中央数据库中并定期清除旧会话。如果会话状态不重要(例如用户名/头像URL),则将其粘贴在cookie中 - 只需确保您没有将过多的数据推送到cookie中。
默认情况下,Rails的现代版本将会话变量存储在cookie中,原因如上。其他Web框架可能具有“以cookie存储”和/或“以DB存储”选项。