1

我有一个小的边缘案例,我的应用程序在生产中失败了。让我试着解释一下场景。

我正在使用 webpack 构建许多反应应用程序。静态资产被复制到单个 nodejs 应用程序,不同的路由呈现不同的反应应用程序。我用来codeship将我的应用程序代码构建到 docker 映像中。并aws ecs部署它

这是我尝试将新更改部署到生产/登台时的典型场景。

TAG1 => ecs 上现有的正在运行的应用程序。

路线/dashboard/

/dashboard/index.html将具有静态参考的呈现为

/static/app/dashboard/main.a1.js. a1 是 webpack 生成的 chunk hash

/static/app/dashboard/homepage.a2.js.

TAG2 => 当前部署/部署的新应用

路线/dashboard/

/dashboard/index.html将具有静态参考的呈现为

/static/app/dashboard/main.b1.js. b1 是 webpack 生成的 chunk hash

/static/app/dashboard/homepage.b2.js.

现在块散列更改,因为我的应用程序代码已更改。这次也是一个新的码头工人形象

我还在 ALB 上启用了持续时间为 1 分钟的粘性会话

现在的问题是部署后我有一个大约 1-2 分钟的时间窗口,静态资产开始给我404。1-2 分钟后,应用程序稳定下来,一切正常。

可能是因为以下问题。

  1. 旧容器请求将转到新容器,因为粘性会话已过期。并且用户尚未刷新页面。

  2. 新容器请求将转到旧容器,因为粘性会话不起作用。

无论如何,我都会为应用程序获得 404。

我想知道可以做些什么来避免这种情况。

4

0 回答 0