【问题标题】:Build an extensible system for scraping websites构建一个可扩展的网站抓取系统
【发布时间】:2020-07-11 23:06:01
【问题描述】:

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

目前,我查看了谷歌云功能,但每个功能的上限为 9 分钟,因此它不符合我的要求,因为抓取会花费更多时间。我还查看了 AWS SDK,它允许我们在运行时创建虚拟机并关闭它们,但我不知道如何将我的 API 脚本推送到新创建的 AWS 实例上。

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

【问题讨论】:

    标签: node.js amazon-web-services web-scraping google-cloud-functions cloud


    【解决方案1】:

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

    这是通过使用UserData实现的:

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

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

    如果您希望系统具有可扩展性,您可以在 Auto Scaling Group 中午餐您的实例并根据需要对其进行扩展或缩减。

    另一个选项是将您的脚本作为 Docker 容器 运行。例如使用AWS Fargate

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

    【讨论】:

    • 那么,为每个脚本制作一个 Docker 容器,并根据请求在 AWS Fargate 上推送该 Docker 容器吗? AWS SDK 是否支持通过其 SDK 动态制作 Fargate?
    • @GhazanferAnwar 有很多方法可以实现这一目标。要构建 docker 映像,您可以使用 CodeBuild
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2018-12-23
    • 2011-05-12
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多