繁体   English   中英

从应用引擎访问计算引擎

[英]Access compute engine from app engine

我有一个在 Compute Engine 上运行的实例,它使用 Torch 来预测图像中的对象。 我想制作一个简单的 Web 界面,用户可以使用它上传图像,将图像发送到服务器(计算引擎),预测对象并将列表返回给用户。 在我的计算引擎 (Ubuntu 14.04) 中,这行代码用于预测图像中的对象。 (所有其他设置都已在计算引擎中完成。)

th eval.lua -model /path/to/model -image_folder /path/to/image/directory -num_images 10 

我想从 Web 应用程序调用此行并将图像传递到图像文件夹并取回对象列表。 我该怎么做?

在过去的项目中,我讨论并使用了不同的方法在 Google App Engine 和 Google Compute Engine 之间进行通信。 一般来说,两个常见的嫌疑人是:

  • 来自 App Engine 的编排:在这种方法中,App Engine 应用程序是活动部分,并向计算实例上的服务发送请求。 这就是Igor Artamonov在他的评论中已经描述的内容。 我们在计算实例上使用了一个 tomcat 实例,它运行了一个完整的 rest api 来调用实例上的命令。 可能的帮手:
    • 从 App Engine 使用Google Compute API 时,您可以获得计算实例的外部 IP 地址。 所以你知道你的请求必须去哪里。
  • 从计算实例轮询:由于您知道 App Engine 应用程序的应用程序 ID,您可以在计算实例上编写一个简单的循环,从应用程序引擎应用程序请求新作业。 我将这种方法与编排结合使用,该编排将向不再需要的实例发送关闭命令,从而减少应用引擎上的轮询负载。 如果创建了新作业,我将启动一个新的计算实例,然后轮询直到它再次收到关闭命令。

这两种方法都很有效。 如果您使用 Compute API 并知道您的计算实例的 IP,您可以将您的轮询端点和命令调用请求限制为这些 IP,以实现基本安全。

我会尽量避免过多的投票,因为,让我给你一个报价:

主动轮询是启动工作流程过程的穷人解决方案。 ( javaworld.com )

但是,如果您在计算实例完成工作负载后关闭它们,我看不出您不应该使用轮询的充分理由。 如果您不这样做并且您将计算实例的数量增加到几个实例,您将在 App Engine 应用程序上加载,而不会实现任何成本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM