【发布时间】:2018-06-24 09:28:08
【问题描述】:
只是好奇这是否可能或您将如何实现。
无论我使用基于持续时间的粘性还是基于应用程序,当用户连接到的实例失败时,他们的会话将被重置,因为他们必须连接到新服务器。
有没有办法避免这种情况发生?即使他们连接的实例死亡,也能够让该会话持续存在?如果这会改变事情,我也会使用带有证书的 SSL。
【问题讨论】:
标签: amazon-web-services http session session-cookies amazon-elb
只是好奇这是否可能或您将如何实现。
无论我使用基于持续时间的粘性还是基于应用程序,当用户连接到的实例失败时,他们的会话将被重置,因为他们必须连接到新服务器。
有没有办法避免这种情况发生?即使他们连接的实例死亡,也能够让该会话持续存在?如果这会改变事情,我也会使用带有证书的 SSL。
【问题讨论】:
标签: amazon-web-services http session session-cookies amazon-elb
实现这一点的唯一方法是将会话状态持久化在某些存储服务中,可以是数据库表、s3、缓存服务、NoSQL 表等。
数据库中的会话状态
在数据库中保存会话状态在 Django 等轻量级 Web 框架中很常见。这样,您可以添加任意数量的前端服务器,而不必担心会话复制和其他困难的事情。您无需将自己绑定到某个 Web 服务器,您可以获得持久性和数据库免费提供的所有其他功能。据我所知,这对于中小型网站非常有效。
问题很常见:数据库服务器可能会成为您的瓶颈。在这种情况下,您最好的选择可能是带着一个装满钱的手提箱去 Oracle 或 IBM 并为自己购买一个数据库集群。 参考:Saving Session Data in Web Applications
缓存服务中的会话状态
Amazon ElastiCache 提供完全托管的 Redis 和 Memcached。无缝部署、操作和扩展流行的开源兼容内存数据存储。通过从高吞吐量和低延迟的内存数据存储中检索数据来构建数据密集型应用或提高现有应用的性能。
DynamoDB
Amazon DynamoDB 是一种快速灵活的 NoSQL 数据库服务,适用于所有需要任何规模的一致、个位数毫秒延迟的应用程序。它是一个完全托管的云数据库,支持文档和键值存储模型。其灵活的数据模型、可靠的性能以及吞吐能力的自动扩展。
无论您使用哪种方法,都必须与您的应用一起部署中间件来管理存储的会话状态。
中间件:可以是第三方解决方案,也可以是您自己的解决方案。
【讨论】: