小编Yer*_*ken的帖子

使用AWS服务调度长时间运行的任务

我的应用程序很大程度上依赖于AWS​​服务,我正在寻找基于它们的最佳解决方案.Web应用程序触发预定作业(假设无限重复),这需要执行一定量的资源.单次运行任务通常最多需要1分钟.

目前的想法是通过SQS传递作业,并根据队列大小在EC2实例上生成工作者.(这部分或多或少是清楚的)但我很难找到一个适当的解决方案,以实际触发一定时间间隔的工作.假设我们正在处理10000个工作.因此,对于一个调度程序运行10k cronjobs(工作本身很简单,只是通过SQS传递工作描述)似乎是一个疯狂的想法.那么实际的问题是,如何自动调度调度程序本身(考虑到重新启动调度程序时的情况,创建新实例等)?或者调度程序作为应用程序是多余的,依赖AWS Lambda函数(或其他提供调度的服务)更明智?使用Lambda函数的问题是一定的限制,单个函数提供的128mb的内存实际上太多了(20mb似乎绰绰有余)

或者,工作人员本身可以等待一定的时间并通知调度程序它应该再次触发该作业.假设频率是1小时:

1. Scheduler sends job to worker 1
2. Worker 1 performs the job and after one hour sends it back to Scheduler
3. Scheduler sends the job again
Run Code Online (Sandbox Code Playgroud)

然而,这里的问题是该工人将被缩放的可能性.

底线我正在尝试实现轻量级调度程序,该调度程序不需要自动调节并充当仅用于传输作业描述的集线器.当然不应该在服务重启时受到限制.

architecture scheduled-tasks amazon-ec2 amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
2701
查看次数