无论好坏,我们已经将整个 台灯 Web 应用程序从专用机器迁移到了云(Amazon EC2机器)。到目前为止进展很顺利,但是我们做 老年痴呆症的方法是次优的。我有一个亚马逊特有的问题,关于如何使用“亚马逊方式”最好地管理云中的 cron 作业。
问题 : 我们有多个 Web 服务器,需要运行 crons 来完成批处理任务,比如创建 RSS 提要、触发电子邮件等等。但是 cron 作业是 只需要在一台机器上运行,因为它们经常写入数据库,所以如果在多台机器上运行,结果会重复。
到目前为止,我们指定了一个网络服务器作为“主-网络服务器”,它有一些其他网络服务器没有的“特殊”任务。云计算的代价是可靠性——我们不想要一个“主网络服务器”,因为它是单点故障。我们希望它们都是相同的,并且能够进行升级和降级,而不用记得不把主网络服务器从集群中拿出来。
我们如何重新设计应用程序,将 Linux cron 作业转换为没有单点故障的临时工作项?
到目前为止,我的想法是:
更新: 自从提出这个问题以来,我在 YouTube 上观看了 亚马逊简单工作流服务的网络研讨会,并注意到在34:40(http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s) ,我瞥见了一张幻灯片,其中提到了 cron Jobs 作为样本应用程序。在他们的文档页面“ Amazon SWF 的 AWS 流框架示例”中,亚马逊说他们有 crons 的示例代码:
在这个示例中,周期性地运行一个长时间的工作流 executes an activity. The ability to continue executions as new 执行,以便执行可以运行非常长的时间 时间被证明。 ...
I downloaded the AWS SDK for Java (http://aws.amazon.com/sdkforjava/) and sure enough buried within a ridiculous layers of folders there is some java code (aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow
).
问题是,如果我诚实的话,这并没有真正的帮助,因为这不是我可以轻易消化我的技能。PHP SDK 中缺少相同的示例,似乎没有一个教程来完成这个过程。所以基本上,我还在寻求建议或者小费。