【发布时间】:2021-12-27 15:53:05
【问题描述】:
我的任务是抓取 url 并在 30 秒后突然停止 AWS Lambda,之后将抓取的 URL 数量作为评估指标。在一个简单的架构中,我有 1 个 lambda,它获取一个文件并循环遍历它并写入数据库,我可以简单地要求它在 30 秒后超时。为了我的学习和满足其他扩展标准,我采用的架构是这样的:
因此,即使我的 lambda 超时,它们也会再次运行,因为 Fargate 正在将 URL 作为事件发送。 fargate 的重点是能够下载一个巨大的文件,因为 Lambda 有限制。然后,事件的使用将通过简单地允许更多并发 lambda 来帮助我实现规模。 我能否以某种方式阻止 eventbus 在 30 秒后冻结发送或接收通知?我可以以某种方式停止所有计算吗?
我可以将错误等(过去我只收到超时错误)发送到死队列或 SNS 主题,并显示系统对突然崩溃的弹性。我还可以通过显示日志来展示抓取的 URL 数量。但是假设这些措施不让评估者满意,我能做些什么吗?
我可以为消息和队列添加延迟,但这有什么作用呢?我无法在特定时间段后添加延迟。那会奏效的。
【问题讨论】:
-
潜力XY Problem。您实际上要解决什么要求?
-
"PROJECT EVALUATION2 该项目将根据可扩展性和性能两个参数进行评估。这些已分为两个阶段。 1. SUPER SCALER 当天将提供要抓取的 URL 列表评估。爬虫将被允许执行 30 秒。爬虫爬取 URL 数量最多的参与者将赢得 Super Scaler"
-
您确定您必须实施“允许爬虫执行30秒”的限制吗?如果我进行性能评估,我不会让供应商控制它。我会(以某种方式)控制它。
-
@jarmod 这是一项家庭作业,因此他们将实施限制委托给学生是有道理的。
-
@gshpycha 这太棒了,我不会想到的。你为我节省了一周的精力。谢谢
标签: amazon-web-services aws-lambda event-handling aws-cdk aws-event-bridge