2012-11-30 176 views
6

我有一个网站codeigniter,mysql,其中有arrowchat安装。 该网站(比如xyz.com)托管在亚马逊环境中。它有S3实施图像上传,CDN实施提供静态文件,RDS实施分贝,SES邮件发送。有一个计划,整合自动缩放为网站。我已经研究了在这种情况下如何实现arrowchat,因为arrowchat已经缓存了模板和配置文件,因此必须对这些实例进行一些研究。我试过Arrowchat和亚马逊实例

a)。创建了一个S3存储桶并将其映射到arrowchat缓存文件夹 - 但它没有做好,因为arrowchat库代码包括缓存目录中的文件,所以在s3中我们不能直接在我们的arrowchat代码中包含文件。 b)。创建了一个子域chat.xyz.com并在该子域中安装了arrowchat并将其用于实例中。 - 它解决了一些跨代码问题,解决了一些代码修复问题。问题是,我们必须在域和子域中管理相同的代码。

请让我知道我列出的方法是否是正确的方法。如果不是,请告诉我是否有其他建议。

+0

对不起,但你必须详细说明一下,为什么你需要共享缓存?我的意思是,假设你设置你的DNS路由到你的ELB,你有自动缩放机器。没有共享缓存,最糟糕的情况会发生什么?在每个实例上创建缓存的副本?这是一个真正的问题?请详细说明为什么要以上帝的名义分享这些缓存文件。 –

回答

1

您需要使用ElasticCache并在自动缩放组的所有实例中共享节点池。如果模板需要处理,则不能直接使用amazon S3。 (特定实例上的php代码需要读取模板,处理它并将其发回)。 伪代码: 将唯一密钥与每个模板(即数据/模板名称)相关联。 当请求模板时,请检查Memcache是​​否存在此类密钥。 否则从S3读取它并将其加载到缓存中。一旦进入缓存,所有的实例将能够使用该单个值。