让我解释一下......
我有 2个SQS队列,可以接收执行轻量级和重度生成报告的作业的请求。 (已经引入了两个队列的分离,轻工作不受重工作的影响。)
SQS在包含3名工作人员的自动缩放组中发送作业。
工作人员按需 EC2实例。我想更改启动配置并使用专色实例。
事情是,一些报告生成的重型工作可能会持续长达4个小时。因此,如果此类工作在可能被终止的现场实例工作人员上运行,则会出现额外的延迟和/或复杂情况。
我想将现场实例用作工作人员,但也要保证如果工作正在运行,工作人员将不会被终止。
我提出的方法如下:
1。以实例的按需价格竞标现货实例[它仍然无法防止终止,但最大限度地降低了可能性]
2。使用具有特定期间[例如6个小时]的现场实例,但我仍然被限制在6个小时,实例终止。另外,我不知道是否可以从启动配置中设置此类设置
答案 0 :(得分:1)
我想将现场实例用作工人,但也要保证如果工作者正在运行工作人员,工作人员将不会被终止。
您似乎明白这不是现场实例的工作方式
他们是你的,直到价格出价
在某些情况下,6小时的事情(“定义的持续时间”)可能会有所帮助
想到两个想法
尝试在开始之前估计“长”队列中作业的长度。然后选择最便宜的选项来运行它
为您的工作实施交易系统。例如,当取消作业时,SQS将time / instanceid / job id添加到另一个持久系统,即数据库表。然后每隔几分钟对表进行一次轮询并检查instanceid是否仍在那里。当作业最终成功完成时,获取作业运行器以将其从数据库表中删除。如果轮询通知实例已消失,则将作业重新提交给SQS