在Server应用程序中使用多线程(用Google App Engine编写并部署到Google App Engine)

问题描述 投票:0回答:1

我正在开发一个注册应用程序。 客户端是一个Android应用程序,使客户端可以输入使用Google云端数据存储服务存储的信息,并使用Blob存储服务存储输入的图像。

服务器端是一个J2EE应用程序,它提取先前输入的数据和Blob,并进行一些测试,例如人脸识别,字母数字匹配等。这些测试是异步且连续进行的。我想将多线程用于服务器端的这些过程。

那么推荐这种情况吗? 还有其他解决方案吗?

java multithreading google-app-engine java-ee google-cloud-datastore
1个回答
0
投票

GAE有一些限制,在某种程度上限制了它的多处理能力:

  1. 每个请求最多可以包含50个线程,但是线程不能超过该请求,该请求本身有60秒的限制。 此外,必须通过GAE自己的ThreadManager创建线程,这限制了大多数外部处理库的使用。

  2. 可以使用独立于当前请求的后台线程,这些线程可以使用很长时间,但是每个实例最多只能有10个后台线程。

对于异步处理,您应该查看任务队列 -它具有上述所有限制,但可以运行10分钟。 您可以通过Cron作业开始定期处理。

请注意,GAE实例非常有限( 默认为单核600MHz,128Mb RAM )。 考虑到它们的低功耗,它们也很昂贵。 如果您需要更多处理能力,则应考虑使用Compute Engine (功能强大,独立,不受管理,没有GAE服务访问权限,价格公道),或者在您的情况下最好使用托管VM (功能强大, 管理的有限GAE服务)访问权限,价格与CE相同)。

因此,如果处理能力较弱,请使用任务队列,如果需要更多功能,请使用托管VM(当前处于预览状态)。

© www.soinside.com 2019 - 2024. All rights reserved.