Google App Engine中常驻后端实例的可用性

时间:2013-05-01 20:15:32

标签: java python google-app-engine high-availability

我们的应用广泛依赖backend instances。有一些逻辑必须每隔几秒运行一次。此代码的执行不仅可以由到达前端的请求驱动,因为它需要无论如何都要运行。

我们只考虑使用task queues来解决此问题。但据我们所知,任务队列只保证任务将在24小时内执行。我没有找到支持这一点的参考文献。

我们的应用使用固定数量的resident B1后端实例。我们假设每个实例在部署并启动后端版本后24/7保持活动状态。

  • 这是一个有效的假设吗?如果没有,每次后端实例关闭时都可以通知我们的应用程序吗?
  • 关于后端实例可用性的SLA是什么?
  • 后端实例终止后会自动重启吗?例如。是内存耗尽后自动重启的实例吗?
  • 如果每个实例都被终止,实例会再次提升多久?
  • 我们在每个后端实例上创建一个固定大小的线程池。我们可以在后端实例上拥有最大的线程池大小吗?
  • 是否有其他条件可能会导致后端实例死亡?

谢谢!

更新

通过阅读the docs,可以回答几个问题。

  

App Engine会尝试无限期地保持后端运行。但是,目前没有保证后端的正常运行时间。

  • 那么正常运行时的SLA是多少?我正在寻找一个声明:“保证后端的正常运行时间为99.99%”
  

随着统计数据的出现,App Engine团队将提供有关预期后端正常运行时间的更多指导。

  • 此统计信息何时可用?
  

同样重要的是要认识到,在后端终止之前,关闭钩子并不总是能够运行。在极少数情况下,可能会发生中断,导致App Engine无法提供30秒的关机时间。

     

当App Engine需要关闭后端实例时,现有请求将在30秒后完成,新请求将立即返回404。

     

以下代码示例演示了一个基本的关闭挂钩:

LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() {
  public void shutdown() {
    LifecycleManager.getInstance().interruptAllRequests();
  }
});

1 个答案:

答案 0 :(得分:2)

我只运行一个驻留(非动态)后端的一个实例,我的经验是每天重启至少一次。 您的应用程序必须能够存储其状态并在重新启动后恢复。