gpt4 book ai didi

ruby-on-rails - 在 Rails 中无缝部署

转载 作者:行者123 更新时间:2023-12-04 03:45:10 24 4
gpt4 key购买 nike

我想无缝升级我的 Rails 应用程序:

意义:

  • 如果不需要运行迁移,我想透明地升级代码并且在部署期间没有请求转到 404。
  • 这很难我想要一些可以无缝升级数据库的过程,在此期间,当数据库更新完成时,只需阻止 Web 请求(将它们排入管道中),允许内容通过。 (我只需要它来进行短时间迁移——比如 5-10 秒的迁移)。

  • 你将如何实现这一目标?

    最佳答案

    仅升级代码

    如果您只是升级应用程序代码乘客应该允许您在不跳过节拍的情况下做到这一点。但是,如果升级出错,它不会保护您,为此您应该考虑拥有两个或更多负载平衡的 Web 服务器,您可以单独循环升级。

    升级数据库

    作为用户,我宁愿看到“停机维护”页面,也不愿我的浏览器旋转 10 秒钟。如果您解释说停机时间将是几秒钟,并将页面设置为自动刷新。

    如果您坚持在进行数据库升级时没有停机时间,您有几个选择:

  • 您可以以保持旧模式有效的方式重构数据库。这意味着您可以针对同一个数据库运行两个版本的应用程序,并随着时间的推移迁移到新架构。有很多“数据库重构”文章,其中大多数都提倡使用触发器/等......来达到预期的结果。我个人认为这是很多努力而不是很多返回。
  • 根据您的应用程序,您可能会严重偏向于读写,这意味着您可以在升级数据库时显示未缓存数据的“维护”页面(这就是 facebook 升级数据库的方式)。如果您的大量数据存储在 memcached 或 redis 中,这会更有效。或者,您可以切换到只读数据库从属并禁用任何写入操作。

  • 我希望这有帮助!

    关于ruby-on-rails - 在 Rails 中无缝部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2107615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com