我擺弄Play Framework 2.2,嘗試各種場景和來自LAMP環境我有這個問題:是否可以在現場製作服務器上進行某種形式的熱修復?如果是這樣,它究竟是如何工作的?如果不是,那麼最接近的是什麼?玩框架2.2「熱修復」現場製作服務器
服務器操作系統是Centos 6.4。在LAMP中的等效例子將重新上傳一些文件與熱修復。
我擺弄Play Framework 2.2,嘗試各種場景和來自LAMP環境我有這個問題:是否可以在現場製作服務器上進行某種形式的熱修復?如果是這樣,它究竟是如何工作的?如果不是,那麼最接近的是什麼?玩框架2.2「熱修復」現場製作服務器
服務器操作系統是Centos 6.4。在LAMP中的等效例子將重新上傳一些文件與熱修復。
您無法像修改php應用程序一樣修復播放框架應用程序。編譯播放框架應用程序中的所有內容時,如果在服務器上熱切換文件之一,則在編譯和重新啓動服務器之前,更改不會有任何影響。
而不是熱修復,可以考慮在你的遊戲應用程序前面有一個反向代理(Apache和Nginx是很好的選擇)。當您需要更新您的應用程序時,只需將其上傳到新文件夾,並使用新的端口號啓動它。當新服務器實例啓動並運行時,將反向代理切換爲指向新實例。然後關閉舊的實例。
使用這種方法,您可以安全地更新服務器而無需停機。
對於Play(或其他大多數其他Web框架),這是不可能的。爲了實現零時間部署,您通常有一個負載平衡器,然後在整個節點上執行滾動升級,每次從羣集中取出一個節點進行升級。
......當然,由於它是無狀態的,因此Play更容易實現。 :-) –
訣竅是應用evolutions,如果你做的數據庫更改不能與舊版本的應用程序向後兼容...... Boom – xref
實際上,如果您在另一臺機器上編譯階段二進制文件,將它們移過來,終止播放並運行舞臺腳本,您幾乎可以進行修補。它會下降幾秒鐘,但它比替代方案好得多。另外,如果您需要代理/負載均衡器,請使用清漆。它的效率要高得多:) –