2014-12-06 118 views
4

如果有2个服务器运行的网站。这两台服务器使用Load Balancer平衡负载。因此,如果1个会话在1台服务器上创建,并且说负载立即转移到另一台服务器,那么会话是如何维护的?负载均衡器和会话管理

我只是对这个概念感兴趣,而这个概念在非常高的抽象层次上,而不是真正的实现细节。

+0

非常宽泛的问题。 – Pleun 2014-12-06 13:45:28

+0

[Java EE会话复制有哪些不同的方法?](http://stackoverflow.com/questions/4997715/what-are-the-different-approaches-for-java-ee-session-replication) – Joe 2014-12-06 13:47:00

回答

1

这种情况取决于技术,根据我对.Net的经验,有两个概念叫做StateServer或SQLServer,它们是将会话信息从服务器的执行过程中提取出来的建议,所以这是一个想法,在不同的服务器O工艺会话,你可以读到这里一点点:

State Server modes in .Net

Load Balancing in .Net

所以还阅读本Read得到负载平衡和集群之间的区别,F或者某些平台更适合选择最佳选项。

5

这就是“Sticky Sessions”或“Session Affinity”的概念发挥作用的地方。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html

您可以配置很多负载均衡路由用户的会话在同一台机器。

另一种方法是将会话信息维护在负载平衡器后面的两台机器均可访问的数据存储中。如果会话存在于数据库中(甚至redis/memcached),它只是一个主键查询(或get),远离两台机器的一致性。

自我推销:我实际上开始了一个项目,在Buzzfeed上实现类似会话的事情。 http://github.com/buzzfeed/phonon

编辑:更新个人项目的链接。

+0

谢谢这是有帮助的 – 2017-06-08 06:51:32