如何将每个用户的请求始终分配给实例组中的同一个实例



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

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

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

我还尝试了Kurbenetes、应用程序引擎和云运行。错误是相似的。我觉得我的工作方向不对。

提前谢谢。

---更新---

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

事实上,我希望在不同的情况下处理来自不同用户的请求,这样后端深度学习算法的结果就不会相互影响。

因此,解决此问题的另一种方法不是旋转实例,而是将每个用户的必要数据存储在具有唯一会话ID的公共数据库中。一个简单的演示可以在https://cloud.google.com/python/docs/getting-started/session-handling-with-firestore

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

正如@John Hanley在评论部分提到的,最好的方法是使用应用程序引擎+云任务,我建议您查看下一个教程,尽管它使用ngrok而不是独角兽,但工作流的想法应该与您想要实现的目标类似。

最新更新