我正在創建http
項目,我想知道什麼是非服務器文件的最佳方式?主服務器不會改變太多,而是寫入server.js
文件中的所有代碼,我想將它的應用程序邏輯寫入其他文件中。我們每次更新這些文件時都不要重新啓動服務器,我們該怎麼辦?我正在考慮每5分鐘做一次interval
刷新文件,但是有沒有更好的方法來做到這一點?在不重新啓動服務器的情況下運行新的/更新的應用程序文件
例(server.js):
var http = require('http');
// Load the initial app
require('./app/main.js');
// Reload the app every 5 minutes
setInterval(function(){
delete require.cache[require.resolve('./app/main.js')];
require('./app/main.js');
}, 300000);
// Listen and handle requests
var server = http.createServer(requestHandler);
server.listen(8000);
所以,這就是我如何重新加載無需重新啓動服務器應用程序的想法,但有沒有更好的辦法?
通常情況下,你不能用新文件替換正在運行的模塊文件。通常有狀態,使用中的模塊句柄等等......我想可以寫入一個重新加載,但是無論如何,在重新加載期間你必須暫停服務器的活動,因爲它將處於部分初始化狀態,直到重新加載完成。如果所有這些定製開發實際上都值得避免偶爾的服務器重啓,我會感到非常驚訝。它確實會使開發複雜化。 – jfriend00
如果您想要實現超高可用性,那麼通常的做法是使用負載均衡器和多個服務器進程。從負載平衡器中取出一個服務器進程,對其進行更新,重新啓動,將其重新放回負載平衡器中,然後執行另一個。 – jfriend00