Google cloud platform 如何将来自每个用户的请求始终分配给实例组中的同一个实例?

Google cloud platform 如何将来自每个用户的请求始终分配给实例组中的同一个实例?,google-cloud-platform,parallel-processing,gunicorn,autoscaling,Google Cloud Platform,Parallel Processing,Gunicorn,Autoscaling,我在GCE中部署了一个深度学习web应用程序。我创建了一个模板来构建VM实例组。然后添加了负载平衡 我计划,当每个用户访问URL时,来自同一用户的请求将始终分配给一个VM实例。我使用gunicorn-b0.0.0:5000 wsgi:app-t600作为启动脚本的一部分。(我也尝试过workers,gevent。但是来自不同用户的请求可以在同一个实例中处理,因此结果会相互影响。因此我希望不同用户的请求在不同的实例中处理。) 为此,我尝试了不同的CPU利用率进行自动缩放。它可以自动缩放新实例。但是

我在GCE中部署了一个深度学习web应用程序。我创建了一个模板来构建VM实例组。然后添加了负载平衡

我计划,当每个用户访问URL时,来自同一用户的请求将始终分配给一个VM实例。我使用
gunicorn-b0.0.0:5000 wsgi:app-t600
作为启动脚本的一部分。(我也尝试过workers,gevent。但是来自不同用户的请求可以在同一个实例中处理,因此结果会相互影响。因此我希望不同用户的请求在不同的实例中处理。)

为此,我尝试了不同的CPU利用率进行自动缩放。它可以自动缩放新实例。但是从结果来看,有时请求仍然在同一个实例中处理

我还尝试了Kurbenetes、app engine和cloud run。错误是相似的。我觉得我的工作方向不对

提前谢谢

---更新---

正如@John Hanley所提到的,将来自用户的请求始终分配到同一实例并不是这些产品的目标功能。如果您正在寻找此问题的答案,可以尝试云任务+应用程序引擎

实际上,我希望在不同的实例中处理来自不同用户的请求,以便后端深度学习算法的结果不会相互影响

因此,解决这一问题的另一种方法不是旋转实例,而是使用唯一的会话ID将来自每个用户的必要数据存储在公共数据库中。 可以在中找到一个简单的演示


希望这能对任何遇到类似问题的人有所帮助。

正如@John Hanley在评论部分提到的,最好的方法是使用App Engine+云任务,我建议你检查下一步,虽然它使用ngrok而不是unicorn,但工作流的思想应该与您想要实现的目标类似。

您正在尝试使用Google负载平衡和自动缩放作为“作业”管理功能。这不是这些功能支持的目标。相反,重新考虑您的设计,因为每个请求都是一个“作业”,然后启动一个实例或服务来处理该作业。有云任务之类的服务可以帮助您,但您需要自己实现这一点。根据您的软件,Cloud Run可以为每个服务实例处理一个请求。@JohnHanley,谢谢您的回复。我对每个实例的最大请求为1。结果仍然是相互混合,因为他们在GCE。我认为这是因为来自同一用户的请求不一定在同一个实例中处理。因此,一个实例中的后端深度学习模型可能会处理来自其他用户的请求。我现在正在看云任务,希望能对你有所帮助。谢谢你的信息!