我在我们的基础设施中有一个蓝绿色的部署设置(快速信息-新服务器/容器以新版本启动;流量以滚动方式移动到这些新服务器;旧版本中的流量减少了1,新版本中的流量增加了1一)。 问题是,有时可能会出现两种(旧/新)部署都提供流量的情况。一种部署的JS可能在另一种上不可用。
在控制台的请求选项卡中,我可以看到对块的请求采用domain.com/_nuxt/<component>/<part><hash>.js
的形式。在nuxt的build文件夹中,组件以<component>_<part><hash>.js
的形式存在。
将生成的js文件同步到s3,并通过静态托管服务(例如AWS-S3)提供服务,并在Nginx上创建代理服务器以重新路由部分,将是安全的。我找不到任何现有的解决方案。
大多数解决方案都描述了如何在零停机时间内进行部署,并提出了通过软链接更改目录以处理零停机的方法。并不能解决用户可能已经在网站上,并且不一定浏览过webapp的所有页面(因此已加载所有js文件)的情况。
答案 0 :(得分:1)
只要您的S3具有用于所有部署的所有文件,对于JS和Assets文件来说是安全的。但是,在进行切换之前,必须确保所有文件都在S3内部。
唯一需要考虑的是您的API,服务和业务逻辑。在切换期间,不得部署冲突的API版本。
example.com/v1.0/data
,返回一个数组example.com/v1.0/data
,返回一个对象在切换过程中,您的绿色代码可能称为蓝色代码,并且由于响应结构不同,因此您的绿色Vue代码未准备好处理新的数据结构。
您可以通过正确升级API版本来减轻这种情况。
具有多个API版本example.com/v1.0/data
和example.com/v1.1/data
。在部署期间,您的蓝色/绿色将被路由到相应的API。这很繁琐。
我使用AWS Rolling Updates简要地谈论了它:AWS Nuxt Zero Downtime