我听说过两种在Amazon AWS中存储用户会话的方法。一种方法是将Cookie的粘性与Load Balancer一起使用,另一种方法是将用户会话存储到ElastiCache。如果我想同时使用EC2负载平衡器和ElastiCache,有什么优缺点?我应该在哪里存储用户会话?
答案 0 :(得分:1)
AWS LB粘性是另一回事,您不能以LB粘性存储东西,这是由AWS基础服务控制的。负载平衡器使用特殊的cookie来跟踪针对每个侦听器的每个请求的实例。负载均衡器收到请求后,首先检查该cookie是否存在于请求中。如果是这样,则将请求发送到cookie中指定的实例。如果没有cookie,则负载均衡器会根据现有的负载均衡算法选择一个实例。
您可以使用粘性会话功能(也称为会话 亲和力),这使负载均衡器可以将用户会话绑定到 一个特定的实例。这样可以确保来自用户的所有请求 在会话期间将被发送到同一实例。
LB粘性会话只将来自同一用户的后续请求路由到同一ec2实例,这将有助于WebSocket之类的应用程序。
因此,如果您正在寻找一种管理和存储敏感数据的方法,并且该数据应该在多个节点之间都可用,那么您需要 Distributed Session Management使用Redis或Memcached。如果您只是将后续请求粘贴到同一EC2实例,那么LB粘性就足够了。
有许多方法可以管理Web应用程序中的用户会话, 从仅cookie到分布式键/值数据库, 包括服务器本地缓存。将会话数据存储在Web服务器中 响应给定的请求似乎很方便,因为访问 数据不会引起网络延迟。主要缺点是要求 必须仔细路由,以便每个用户与一个用户交互 服务器和一台服务器。另一个缺点是,一旦服务器 下降,所有会话数据也消失。分布式的 内存中的键/值数据库可以通过支付少量费用来解决这两个问题 网络延迟的代价。将所有会话数据存储在 饼干在大多数时间都足够好;如果您打算存储 敏感数据,那么最好使用服务器端会话。
building-fast-session-caching-with-amazon-elasticache-for-redis