【问题标题】:Are there cloud / cluster / hosting providers that charge for actual CPU time used?是否有对实际使用的 CPU 时间收费的云/集群/托管服务提供商?
【发布时间】:2011-12-05 11:04:43
【问题描述】:

是否有供应商每天只收取 2 小时的计算费用?据我通过阅读各种文献得知,只要代码部署到一个实例,Azure、EC2 和 GAE 都会收费,无论它是否真的在做任何事情。我想如果我们可以自动按计划打开一个实例,并允许它在完成后自行终止......但我找不到任何允许这样做的东西。 p>

背景

我们有一个如下所示的过程:

  • 每天早上 6 点,从特定网站下载一些数据
  • 对该数据执行计算。此计算持续不到 2 小时
  • 将计算结果发送 (HTTP) 到另一个网站

我们希望以不需要任何人工干预的方式运行它。所以每天,我们最多需要 2 小时的 CPU 时间。我们很乐意将其托管在能够最大限度地提高每天 22 小时闲置效率(并相应收费)的地方。

有没有人提供这样的服务?

【问题讨论】:

    标签: google-app-engine cloud azure amazon-ec2


    【解决方案1】:

    Windows Azure 使用基于 REST 的 API (http://msdn.microsoft.com/en-us/library/ee460799.aspx) 公开应用程序(服务)的管理。您可以使用此 REST API 编写自己的代码来管理您的部署。有商业 (Cerebrata Azure Management Cmdlets) 和免费 (Windows Azure Platform PowerShell Cmdlets) 工具可以帮助您自动执行部署任务。

    【讨论】:

    • 确实如此。我有一个只需要部署几个小时的进程,并且在运行时需要大量实例。我使用管理 API 在需要时启动/停止它。
    • 当然,但是我需要在某个地方运行调用 API 的代码!我正在寻找我的托管代码以自行安排运行。
    【解决方案2】:

    App Engine 具有Cron Service,它可以在一天中的特定时间发出请求。然后您可以使用Task Queues 来实际执行工作。

    唯一的缺点是任务必须在 10 分钟内完成,这意味着您必须将处理分解成离散的块,每个块可以在 10 分钟内完成。

    与 Amazon 等不同,App Engine 不按时间收费,而是根据实际使用情况收费(例如,您正在处理的每秒查询数、使用的字节数等)。

    【讨论】:

    • 我喜欢这个外观;如果我拥有服务器,当然cron 是我会使用的,所以这“感觉”很自然。会试一试的!
    【解决方案3】:

    我会说 Google App Engine 的 Backends 听起来就像您需要的那样:

    动态后端在收到请求时开始存在,并且 空闲时被拒绝;他们是理想的工作 间歇性或由用户活动驱动。有关更多信息 常驻后端和动态后端之间的区别,请参阅 Types of 后端以及启动和关闭的讨论。

    后端不会根据请求量自动扩展。 相反,您指定每个后端的实例数,并且 通过执行更新或配置命令更改此数字。这 实例的数量通常与 数据集或您想要承担的处理能力程度 一个问题。成本也可能是一个考虑因素。

    在您的情况下,您可以在早上 6 点启动后端,运行长时间运行的计算(任务队列没有 10 分钟的时间限制),然后使用 URLFetch 库将结果发送到您需要的任何地方。这里的缺点是(IIRC)如果你不在免费配额之下,你将支付 9 美元/月的应用程序费用(尽管你可以用它来获得一个漂亮而强大的后端)。

    或者,您可以只使用 Amazon EC2 并使用您需要的所有代码自定义映像,将其存储在 S3 中,并设置一个 cron 作业以在早上 6 点启动它的实例,运行计算,然后将其终止一次它已经完成,你有必要的结果。在这里,您只需为它运行的两个小时付费,并为将图像存储在 S3 中额外支付几美分。

    【讨论】:

    • 前端也是动态调度的,因此使用 cron 或任务队列的应用程序同样可以正常工作。
    【解决方案4】:

    Amazon EC2 可以满足您的需求。

    Amazon 的Auto Scaling 支持安排您希望在任何特定时间点运行的实例数量。您可以使用它在您想要的时间启动单个实例。您将配置 AMI/运行参数,以便它在启动时运行您的批处理作业。

    您可能不需要安排停止时间。您的批处理作业可以在完成任务时简单地关闭实例,从而关闭费用。

    更新:我写了一篇文章来描述实现这种方法的步骤:

    使用 Auto Scaling 定期运行 EC2 实例
    http://alestic.com/2011/11/ec2-schedule-instance

    感谢您的想法:-)

    【讨论】:

    • 这看起来可以完成这项工作 - 我一定会试一试,谢谢。
    【解决方案5】:

    在我看来,Jelastic 是您绝对需要的,因为它符合规定的要求。

    首先,您可以随时停止您的环境,它不会使用任何动态资源(RAM、CPU)。因此,您将为实际使用的资源付费。

    或者,有一种方法可以直接通过您选择的托管服务提供商管理此请求。

    Jelastic 计划开放 API,允许用户管理他们的环境周期(停止、启动),这些环境可以托管在您的代码上,也可以通过浏览器实现。它会在不久的将来实现,所以不要错过尝试的机会。

    【讨论】:

      【解决方案6】:

      实际上,每个具有按小时计费周期的提供商都允许这样做,只要您通过 API 自动创建和删除实例。您可以在IaaS comparison engine 中找到那些,如果在高级模式下您在“时间”字段中指定每天 2 小时。

      还有一个指针是Selectel - 俄罗斯供应商,它按资源的实际负载收费。因此,如果您有 50% 的利用率,则支付一半的 CPU 价格。不知道如果它变为0你是否根本不支付。RAM也是如此。

      【讨论】:

      • “只要您通过 API 自动创建和删除实例” - 是的,但是我需要某个地方让 代码运行!
      猜你喜欢
      • 2021-10-12
      • 2020-04-22
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多