我现在有点为难,正在寻找如何最好地处理我的情况的指点:
因此,我有一个 Flask 应用程序uwsgi
,我正在将其部署到带有 2 个 pod 的 Kubernetes。UWSGI 配置是 1 个进程和 4 个线程,我们实际上期望每小时大约有 50 个请求,即大约每分钟 1-2 个请求。
为什么是 1 个进程?因为我们在内存中加载了大量数据(不要问我为什么,我知道这是错的,我终于赢得了引入 DB 的战斗,但这会在以后发生),并且 UWSGI 不保证在所有请求之间共享数据 - 这意味着如果我有两个进程 - pidx
和 pid y
- 如果x
已加载所有数据并y
决定为请求提供服务,它可能会返回错误的结果。仅使用一个进程和多个线程,我希望每次都能建立相同的结果(因为所有线程都将引用同一进程的公共内存)。
有 2 个 pod(/副本) - 如果一个 pod 发生故障(可能是因为内存问题),第二个 pod 应该能够处理流量,对吗(直到 pod 再次启动并将数据加载到其内存中)?
^ 这种设置有意义吗?我还能做些什么来让部署更具“弹性”?
(我们还添加警报和仪表板作为监控的一部分)