部署 Django 应用程序,无需服务中断/无停机时间

2024-01-10

我们还没有持续集成设置。但要部署得非常频繁。每天一次左右。

我们有一个非常标准的 Django 应用程序和一个单独的 Postgres 服务器。我们使用普通租用的虚拟机(没有 Amazon 或 Rackspace)。

我们如何才能最大限度地减少应用程序的停机时间?最好的办法是零停机时间。我们考虑了使用两个相同的应用程序和两个数据库服务器的设置,并一个接一个地部署应用程序/数据库服务器对。

问题是保持数据的一致性。当一对应用程序/数据库服务器正在更新旧代码的服务器对时,可以为用户提供服务。但是,如果用户写入数据库,则在切换到更新的对时我们将丢失数据。特别是当我们推送架构迁移时。

我们该如何处理这个问题?这肯定是一个非常常见的问题,但我找不到好的答案。你如何处理这个问题?


如果您没有架构迁移,我将给您一个实际场景:

保留两个版本的 django 进程( A 和 B ),您可以使用主管来控制它们。在 django 进程前面保留一个 nginx 进程,它将所有请求转发到 A。因此,您将版本 B 上传到服务器,使用主管启动 django 进程 B,然后更改 nginx 的conf文件以指向 B,然后重新加载nginx进程..

如果您进行架构迁移,事情就会变得复杂。您的选择包括:

  • 您可以考虑使用 NoSQL 解决方案,例如 mongoDB(在这种情况下您可以保留单个数据库实例)。
  • 了解如何在上传时手动记录所有写入请求,以便稍后将它们推送到新数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署 Django 应用程序,无需服务中断/无停机时间 的相关文章

随机推荐