如果有2个服务器运行的网站。这两台服务器使用Load Balancer平衡负载。那么,如果在1台服务器上创建了1个会话并且说负载立即转移到另一个服务器,那么会话是如何维护的?
我只是在非常高的抽象层次上对这个概念感兴趣而不是真正的实现细节。
答案 0 :(得分:6)
这就是" Sticky Sessions"的概念。或者"会话亲和力"发挥作用。
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html
您可以配置许多负载均衡器以将用户会话路由到同一台计算机。
另一种方法是在负载均衡器后面的两台机器都可以访问的数据存储中维护会话信息。如果会话存在于您的数据库中(甚至是redis / memcached),那么它只是一个主键查询(或get
),而不是在两台机器上保持一致。
自我推销:我实际上开始了一个项目来实现类似Buzzfeed的会话。 http://github.com/buzzfeed/phonon
编辑:更新了个人项目的链接。
答案 1 :(得分:1)
这种情况取决于技术,根据我对.Net的经验,有两个名为StateServer o SQLServer的概念,这些概念是从服务器的执行过程中获取会话信息的建议,因此这个想法,在不同的服务器o进程中隔离会话,你可以在这里阅读一下:
因此,另外阅读此Read以获取负载平衡和群集之间的区别,对于某些平台,最好选择最佳选项。