3

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

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

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

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

CloudFront:http ://aws.amazon.com/cloudfront/ EC2:http ://aws.amazon.com/cloudfront/ Cassandra:http ://cassandra.apache.org/

4

2 回答 2

2

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

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

您应该阅读的其他一些服务:

http://aws.amazon.com/elasticloadbalancing/ -- 亚马逊负载均衡器解决方案。

http://aws.amazon.com/sqs/ -- 用于在您的 DA(分布式架构)中的系统之间传递消息。例如,如果您希望创建数据文件的系统与托管站点的系统不同。

http://aws.amazon.com/autoscaling/ -- 允许您根据流量在线调整实例数量

确保使用 EC2 进行良好的备份过程,经常对您的操作系统驱动器进行快照,并将任何易失性数据(例如数据库文件)放在 EBS 块上。EC2 不会经常失败,但当它失败时,您无法访问硬件,如果您有最新的快照,您可以在线启动一个新实例。

于 2010-07-20T13:40:31.947 回答
0

根据数据集,Cassandra 还可以显着提高查询的响应时间。

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

WTF是一个超级专栏

于 2010-07-20T13:48:32.487 回答