Deployment

如何將更改部署到生產網站,同時又不會讓網站停機幾分之一秒?

  • June 21, 2017

我使用 Git 來管理我的 Web 應用程序的開發週期,對於git pull已經足夠且不需要更改的更改,我自然而然地保持網站正常執行和git pull更改。

但是我在想,假設我更改了 100 個文件,並且說磁碟上有一些意外的負載,如果有人在 git 送出磁碟更改的那一刻發出請求會發生什麼?這不會使我的應用程序容易受到可能的數據損壞或格式錯誤的響應的影響嗎?

我的意思是,對於一個低流量的網站來說,這是非常非常不可能的,但是如果你獲得了一些非常高的流量,並且恰好是伺服器負載的峰值,那麼就會存在一些風險。


我實際上想到了一個解決方案,但如果我推出自己的實現,它可能不是最好的,而且我不確定它是否實用。我記得讀過一篇關於我們如何在螢幕上看不到偽影的文章,基本上是通過將新數據寫入 GPU 記憶體上完全不同的塊,然後只需將最新的螢幕數據(無論是什麼)指針切換到新塊,最後可能丟棄或重用舊塊。這樣,如果 GPU 滯後,將不會顯示半寫入數據

如果可以實現這樣類似的事情,這是否可行?

您將需要一個負載均衡器。它可以提供滾動升級、高可用性和橫向擴展。

大型的,非平凡的,但不知何故總是在不斷變化的網站。也許他們正在推出每日更新,或者某些功能失敗但仍在執行。他們已經決定不值得關閉稍有不同的使用者體驗。您需要自行決定您的解決方案是否包括計劃停機時間。

在單個 Web 伺服器上,某些部署方法可以實現更快速的過渡。與實時更新工作副本相比,預先部署程式碼然後將其移動到位是一種更簡潔的方式。儘管這不考慮數據庫、Web 伺服器更新和其他復雜情況。您仍然希望負載均衡器為您提供選擇。

引用自:https://serverfault.com/questions/856946