Amazon s3 规划可扩展web应用程序的开发

Amazon s3 规划可扩展web应用程序的开发,amazon-s3,amazon-ec2,cassandra,amazon-cloudfront,Amazon S3,Amazon Ec2,Cassandra,Amazon Cloudfront,我们已经创建了一个产品,它可能会为驻留在服务器上的数据文件生成大量请求。目前,我们有一个共享托管服务器,它运行一个PHP脚本来查询数据库并为每个用户请求生成数据文件。这不是很有效,到目前为止还不是一个问题,但我们希望转移到一个更具可扩展性的系统,所以我们正在考虑EC2。我们主要关心的是,当流量较大时,能够处理这些流量,并为用户下载数据文件提供较低的延迟 我还不能100%确定这一切将如何运作,但这是一个想法: 我们使用一个EC2实例来托管我们的管理面板,并生成提供给应用程序用户的文件。当任何管理员

我们已经创建了一个产品,它可能会为驻留在服务器上的数据文件生成大量请求。目前,我们有一个共享托管服务器,它运行一个PHP脚本来查询数据库并为每个用户请求生成数据文件。这不是很有效,到目前为止还不是一个问题,但我们希望转移到一个更具可扩展性的系统,所以我们正在考虑EC2。我们主要关心的是,当流量较大时,能够处理这些流量,并为用户下载数据文件提供较低的延迟

我还不能100%确定这一切将如何运作,但这是一个想法:

我们使用一个EC2实例来托管我们的管理面板,并生成提供给应用程序用户的文件。当任何管理员做出影响这些数据文件(由用户下载)的更改时,我们使用CloudFront复制到S3。这里的想法是缓存数据并等待S3,这样我们可以降低计算时间,并使用CloudFront为所有请求文件的用户降低延迟

我仍在学习这个系统,想知道是否有人对这个想法有任何反馈,或者对它的工作原理有什么见解。我也很好奇像卡桑德拉这样的项目的目的。我的理解是,只要将我们的应用程序放在EC2服务器上,就可以根据服务器的性质进行扩展。Cassandra只是为了保持低资源使用率,还是说即使在EC2上也有理由使用这样的系统

云锋: EC2:
Cassandra:

Cassandra是一个非关系数据库引擎,如果这是您需要的,您应该首先评估Amazon:一个构建在S3之上的非关系数据库引擎

如果文件只需要根据时间(每天、每小时等)进行更新,那么这似乎是一个合理的解决方案。但是你可以考虑在2个EC2图像前放置一个负载均衡器,每个都运行一个应用程序的拷贝。这将使以后更容易扩展,并且在一个实例失败时更安全

您应该阅读以下其他服务:

--亚马逊负载平衡器解决方案

--用于在DA(分布式体系结构)中的系统之间传递消息。例如,如果您希望创建数据文件的系统与承载站点的系统不同

--允许您根据流量调整联机实例数


确保EC2具有良好的备份过程,经常快照操作系统驱动器,并将任何易失性数据(例如数据库文件)放置在EBS块上。EC2不会经常出现故障,但一旦出现故障,您就无法访问硬件,如果您有最新的快照,您可以在线启动一个新实例。

根据数据集的不同,Cassandra还可以显著缩短查询的响应时间

NoSQL解决方案中使用的数据结构有一个很好的解释,可以帮助您了解这是否是一个合适的解决方案:


另一条评论:当您的连接来自海外时,CloudFront最有用。如果您的所有流量仅来自美国用户,则可能没有那么有用。它基本上将S3转变为内容交付网络(CDN)