我想无缝升级我的Rails应用程序:
意义:
你将如何实现这一目标?
答案 0 :(得分:3)
仅升级代码
如果您只是升级应用程序代码,乘客应该允许您在不跳过节拍的情况下执行此操作。但是,如果升级出错,它不会保护您,因为您应该考虑使用两个或更多负载平衡的Web服务器,您可以单独循环升级。
升级数据库
作为用户,我宁愿看到“停机维护”页面,而不是我的浏览器旋转10秒钟。如果您解释停机时间是几秒钟的顺序并将页面设置为自动刷新。
如果您坚持在进行数据库升级时没有停机时间,您可以选择以下几种方法:
您可以以保持旧架构有效的方式重构数据库。这意味着您可以保持两个版本的应用程序针对同一个数据库运行,并随着时间的推移迁移到新架构。有很多“数据库重构”文章,其中大多数都主张使用触发器等等来实现预期的结果。我个人认为,为了获得很多奖励,我需要付出很多努力。
根据您的应用程序,您可能会严重偏向于读取写入,这意味着您可以在升级数据库时显示未缓存数据的“维护”页面(这是facebook进行数据库升级的方式)。如果您的大量数据存储在memcached或redis中,则更有效。或者,您可以切换到只读数据库从站并禁用任何写入操作。
我希望这有帮助!
答案 1 :(得分:0)
您应该查看Capistrano。