How to synchronize sessions using Amazon Web Servi

2019-09-17 10:44发布

我们正在使用亚马逊网络服务(AWS),我们有多个Web服务器和负载平衡器。 与Web服务器的问题是,该$ _SESSION是为每一个独特的。 我保持约在$ _SESSION用户的一些信息。

什么是信息同步的正确方法? 有什么办法团结的地方,在那里这些会议被关押,或者我应该使用MySQL来存储这些数据(我真的不喜欢最后一个选项)?

Answer 1:

我知道你在寻找的是“粘性会话”。 如果我是正确的那个,亚马逊为您提供了两种不同的选择。

负载均衡器(持续时间为基础的,我推荐这一个) http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsLBCookies

而基于应用会话粘性http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsAppCookies



Answer 2:

虽然概念上类似于你正试图避免由于某种原因,MySQL的选项,内使用一个相当有吸引力的选择亚马逊网络服务(AWS)是近期推出的可扩展会话处理在PHP中使用亚马逊DynamoDB ,这解决了典型的会议在PHP处理是不可扩展的 ,因此需要某种定制的解决方案呢:

会话用于保存多个HTTP请求短期数据[...]。 PHP的本地会话处理程序存储会话数据到本地文件系统; 然而,这种方法成为分布式Web应用程序不可靠 。 在随后的请求,用户可能不被路由到同一台服务器使其得到有效遗忘的数据。 用户将被注销,并且混淆。

为了解决这个问题,PHP开发人员使用的数据库,共享文件系统,内存缓存服务器,防篡改cookies和其他存储机构存储的用户的会话数据来实现定制的解决方案 。 [...] [重点煤矿]

根据您的使用情况,你可能要相应地给这个潜在的非常快的会话存储一试。



Answer 3:

要添加到上面的回答,你想找的像DynamoDB分布式缓存这是一种有偿服务的亚马逊。 其惊人的快和灿烂的使用,但如果你是寻找一些其他的开源替代品,你可以看看下面的内存读/写的选项。

  1. Memcached的 - 非常高的读/写比率。 从开发者社区轻巧的大力支持。
  2. JCS - Java高速缓存系统 - 极大的灵活性和适合那些面临低读取/写入比率系统。 同时其巨大的定制复制,并根据粘性的水平,这可能总是以最快的速度为简单的存储器读/写的Web应用程序作为ELB粘性维持一定水平。 因此,一旦一个会话被定向到另一个实例,只有这样的会话信息将被复制。 我们利用这一点,至今已获得良好的结果。
  3. 的Ehcache - 成立缓存框架,但他们的分布式缓存产品是不是完全免费使用。 可能是矫枉过正,因为它保证了它可以不被真正需要在这种情况下,完全复制。


文章来源: How to synchronize sessions using Amazon Web Services (AWS)?