当 Cloud Run 启动实例来处理 Java 服务的 HTTP 请求时,该服务必须通过网络调用联系多个外部服务才能获得有关数据的最终结论。
我不想按顺序进行这些外部服务调用,而是希望并行化它们,以便在等待 networkIO 完成时节省执行时间。这是因为我的服务本身计算量不是很大,但大部分时间都花在等待网络响应上,每个响应可能需要数百(毫秒)。简单的new Thread就可以为我完成工作。
我很好奇 Cloud Run 是否限制/禁止创建新线程,因为我在文档中找不到该信息。
(例如,Java AppEngine 要求您使用特定的 gcloudThreadManager API来管理线程。)
只要不超出虚拟服务器实例的限制,Cloud Run 就不会对您可以使用 docker 容器中的代码执行的操作施加任何限制。您唯一的义务是通过正在管理的 HTTP 连接向客户端发送响应。如果你想启动线程,那没问题。您选择的 HTTP 服务器很可能也会这样做。请记住,运行容器的服务器实例在不处理请求时可能随时被释放,并且您的线程将立即终止,恕不另行通知。
App Engine 与 Cloud Run 有很大不同,因为它严格管理您部署的代码的运行时行为。Cloud Run 根本不这样做 - 您可以决定使用哪个 JVM、使用哪个 HTTP 服务器以及它们如何在您部署的容器中运行。
| 归档时间: |
|
| 查看次数: |
3079 次 |
| 最近记录: |