编排器中的 EF 迁移 (eShopOnContainers)
EF Migrations in orchestrator (eShopOnContainers)
查看 Microsoft 的微服务参考架构 eShopOnContainers。我看到对于每个服务,在 Program.cs 中都会调用 host.MigrateDbContext。这反过来会为给定的上下文执行所有 EF 迁移。
在现实世界的编排器中,不可能几乎同时启动同一服务的多个容器吗?如果发生这种情况,尝试执行相同迁移的多个容器是否可能会死锁或导致其他问题?
这是不是因为超出了参考项目的范围而没有处理,或者 EF 是否内置了一些我没有看到的东西来处理并发?
我发现解决这个问题的方法有很多种,每种方法都有自己的优点和缺点。有些很简单……关闭整个应用程序,更新架构,然后将应用程序重新联机。有些将模式更改实现为一系列较小的更改,每个更改都向前和向后兼容,从而实现零停机。还有一些人利用专门为解决此任务而编写的内置或第三方工具。
所以,为了回答我自己的问题,这个主题几乎肯定被省略了,因为它超出了 eShopOnContainers project/eBooks 的范围。适合您的正确选择将根据您项目的规模、复杂性、可接受的停机时间等而有所不同。
查看 Microsoft 的微服务参考架构 eShopOnContainers。我看到对于每个服务,在 Program.cs 中都会调用 host.MigrateDbContext。这反过来会为给定的上下文执行所有 EF 迁移。
在现实世界的编排器中,不可能几乎同时启动同一服务的多个容器吗?如果发生这种情况,尝试执行相同迁移的多个容器是否可能会死锁或导致其他问题?
这是不是因为超出了参考项目的范围而没有处理,或者 EF 是否内置了一些我没有看到的东西来处理并发?
我发现解决这个问题的方法有很多种,每种方法都有自己的优点和缺点。有些很简单……关闭整个应用程序,更新架构,然后将应用程序重新联机。有些将模式更改实现为一系列较小的更改,每个更改都向前和向后兼容,从而实现零停机。还有一些人利用专门为解决此任务而编写的内置或第三方工具。
所以,为了回答我自己的问题,这个主题几乎肯定被省略了,因为它超出了 eShopOnContainers project/eBooks 的范围。适合您的正确选择将根据您项目的规模、复杂性、可接受的停机时间等而有所不同。