【问题标题】:Scaling Backends Automatically - Appengine Java自动扩展后端 - Appengine Java
【发布时间】:2014-04-29 15:41:15
【问题描述】:

我有一个在后端运行的拉取队列。当峰值很高时,我从前端调用它。

pull-queue 有上万个任务,需要一段时间。一个单一的前端请求开始处理。

我希望从我的代码中启动更多后端,以便它们都可以从拉取队列中拉取任务并开始执行它们。但是,我不清楚如何做到这一点。

请帮忙。

谢谢。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    您需要将代码从使用后端迁移到模块:https://developers.google.com/appengine/docs/java/modules/

    然后您可以使用基本扩展来指定您希望自动创建的最大实例数。

    更新:

    使用拉取队列,您必须自己实现负载平衡逻辑。

    【讨论】:

    • 基本扩展将根据请求进行平衡。由于这里没有请求,我需要手动缩放更好。但是,我没有看到停止特定模块的方法。这就是我的想法。当我看到大约 10k 个任务时,我为每个 3k 个任务创建一个实例,大约是 4 个。我开始 4 个,在 /_ah/start 中,我开始拉所有队列。现在任务完成了,我想停下来。如何停止知道它已完成的模块?我没有看到 stop_me :)?我看到 numinstances 可以停止任何可能正在执行任务的随机实例。谢谢。
    • 队列中的任务通过在目标模块上创建请求来执行。
    • 您不需要启动或停止实例。您可以在队列上设置所需的执行率以及要创建的最大实例数。就是这个。如果队列无法跟上所需的执行率,调度程序将自动创建更多实例。当负载下降时,调度程序将停止冗余实例 - 也会自动停止。
    • 这些是拉队列而不是推队列。我还能设置执行率和最大实例数吗?我该怎么做呢?谢谢。
    • 如果任务在后端运行,为什么要使用拉取队列?您可以从前端触发一个请求,将所有任务添加到推送队列中,然后负载平衡将自行处理。使用拉取队列,您必须自己实现此负载平衡逻辑。
    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 2023-03-03
    • 2012-05-09
    • 2023-04-01
    • 2017-04-25
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多