我有一个使用 EF Core 作为ORM的 .NET 应用程序,并且所有 db 修改都是使用EF 中的Db Migrations完成的。
该应用程序托管在生产环境中的多个虚拟机上的云上,在完成所有测试后,启动滚动部署以一次使用一个虚拟机,部署新应用程序,等等。
数据库本身托管在具有多可用/复制设置的托管 Db 服务(如 aws RDS、Azure SQL)上。
主要目标是确保没有停机时间(0 停机时间),并在发生任何问题时回滚(或相应地手动分发金丝雀加权请求)
主要问题是,如果应用程序成功部署到一个实例,并且该实例接收到连接,这将导致数据库迁移到新版本,导致所有其他实例请求失败(因为 EF 将在旧实例)