我是AWS的新手,所以我需要一些关于如何正确创建后台作业的建议。我有一些数据(大约30GB),我需要:
a)从其他服务器下载;它是一组带有RSS提要内链接的zip归档文件
b)解压到S3
c)处理每个文件或一组解压缩文件,执行数据转换,并将其存储到SimpleDB/S3
d)根据RSS更新永远重复
谁能建议一个基本的架构在AWS上正确的解决方案?
谢谢。
丹尼斯
我认为您应该运行EC2实例来执行所需的所有任务,并在完成后关闭它。这样,您只需为EC2运行的时间付费。根据您的体系结构,您可能需要一直运行它,但是小实例非常便宜。
从其他服务器下载;它是一组带有RSS提要内链接的zip归档文件
可以使用wget
解压到S3
尝试使用s3-tools (github.com/timkay/aws/raw/master/aws)
处理每个文件或一组解压缩文件,执行数据转换,并将其存储到SimpleDB/S3
编写自己的bash脚本
根据RSS更新永远重复
一个bash脚本检查更新+运行脚本的Cron
首先,编写一些执行a)到c)的代码,然后进行测试,等等
如果您想定期运行代码,那么使用后台进程工作流是一个不错的选择。将作业添加到队列中;当它被认为完成时,将其从队列中删除。大约每隔一个小时就向队列中添加一个新任务,这意味着"去获取RSS更新并解压缩它们"。
您可以使用AWS简单队列服务或任何其他后台作业处理服务/库手工完成。您可以在EC2或任何其他托管解决方案上设置一个worker实例,它将轮询队列、执行任务并再次轮询,直到永远。
使用Amazon Simple Workflow Service可能更容易,它似乎是为你想要做的(自动化工作流)而设计的。注意:我从来没有用过它。
我认为在Elasticbeanstalk实例上部署代码将为您大规模地完成这项工作。因为我看到您在这里处理大量数据,并且使用正常的EC2实例可能会使资源(主要是内存)最大化。此外,批处理的AWS SQS思想也将用于优化流程并有效地管理服务器端的超时