Node.js 构建一个可扩展的网站抓取系统

Node.js 构建一个可扩展的网站抓取系统,node.js,amazon-web-services,web-scraping,google-cloud-functions,cloud,Node.js,Amazon Web Services,Web Scraping,Google Cloud Functions,Cloud,目前,我有一个服务器正在运行。每当我收到一个请求时,我需要一些机制来启动其他资源(最好是动态创建的)上的刮取过程,因为我不想在我的主实例上执行刮取。此外,我不希望另一个实例在我不抓取数据时继续运行并向我收费。 所以,最好是一个系统,我可以要求开始刮网站和关闭时,它完成 目前,我已经查看了谷歌云函数,但每个函数都有一个最大9分钟的上限,所以它不符合我的要求,因为刮取要花费更多的时间。我还查看了AWS SDK,它允许我们在运行时创建VM并关闭它们,但我不知道如何将API脚本推送到新创建的AWS实例上

目前,我有一个服务器正在运行。每当我收到一个请求时,我需要一些机制来启动其他资源(最好是动态创建的)上的刮取过程,因为我不想在我的主实例上执行刮取。此外,我不希望另一个实例在我不抓取数据时继续运行并向我收费。 所以,最好是一个系统,我可以要求开始刮网站和关闭时,它完成

目前,我已经查看了谷歌云函数,但每个函数都有一个最大9分钟的上限,所以它不符合我的要求,因为刮取要花费更多的时间。我还查看了AWS SDK,它允许我们在运行时创建VM并关闭它们,但我不知道如何将API脚本推送到新创建的AWS实例上

此外,系统应该是可扩展的。就像我有许多不同的脚本,刮不同的网站。因此,一个稳健的解决方案将是理想的。 我愿意使用任何技术。任何帮助都将不胜感激。谢谢

我不知道如何将我的API脚本推送到新创建的AWS实例上

这是通过以下方式实现的:

在Amazon EC2中启动实例时,您可以选择将用户数据传递给实例,该实例可用于执行常见的自动配置任务,甚至在实例启动后运行脚本

因此,基本上,您需要构造
UserData
来安装脚本、所有依赖项并运行它们。这将在启动新实例时执行

如果您希望系统具有可伸缩性,可以在中使用实例,并根据需要对其进行放大或缩小

另一个选项是以Docker容器的形式运行脚本。例如使用


顺便说一句,AWS Lambda有15分钟的限制,所以不比Google的功能多多少。

那么,为每个脚本制作一个Docker容器,并根据请求将该Docker容器推到AWS Fargate上?AWS SDK是否支持通过其SDK动态制作Fargate?@GhazanferAnwar实现这一点的方法有很多。要构建docker映像,可以使用。