關於熱部署-理解與總結

wangtaotao發表於2014-02-22

由於我一直是做php開發,熱部署對我而言是一個新概念,比較新鮮。根據查閱,才知道是其他語言才有的。

我更喜歡瞭解一項技術從原理性來求解,這樣一通百通。只需要瞭解原理,就抓住本質的東西了,細節可能不會。

我總結需要熱部署的根源在於如下:

應用程式伺服器(tomcat,node.js)為了提高效能。一個程式碼檔案比如a.php(這裡只是用php來舉例,php無這種機制),

需要的時候會把a.php的內容載入記憶體,下回訪問,直接從記憶體中拿程式碼。

所以:即便我修改了a.php程式碼,更新,應用程式伺服器拿的還是記憶體中的a.php程式碼。

所以重啟應用程式伺服器,就能使用新的了。

他們提到,要熱部署是為了解決:開發人員修改一個新的功能,無法馬上看到效果。需要重啟應用程式伺服器,才能看到新程式碼效果。

java,node.js這類語言需要熱部署:每次修改程式碼,都不會馬上生效。因為拿的還是記憶體中的程式碼,所以每次都需要重啟tomcat伺服器,tomcat應用伺服器就會重新從磁碟拿最新的程式碼。

解決共同的目標:修改程式碼,即時看到更改的效果,這樣子實現快速開發。

====================================

更進一步總結:每種語言的應用伺服器機理不同,php引擎並不是這樣子機理。

php是解釋性指令碼,php引擎每次都是直接從磁碟上拿a.php檔案中的程式碼來執行。開發人員更新了磁碟上的a.php,就是最新效果。

所以難怪php開發是沒有熱部署的概念,因為壓根不需要重啟php.exe(php引擎)才能看最新修改效果。

 

java等編譯型語言,其實拿程式碼從記憶體中拿,避免每次都重新編譯,可以提高效能。從記憶體中直接拿可以免去編譯這一步。熱部署一般是解決,程式程式碼修改不能即時生效的問題。是在應用程式伺服器進行配置。馬上可以看到效果。

參考資料:
1、java的熱部署原理
http://tech.it168.com/a2011/0617/1206/000001206051.shtml

2、node.js(一門後端語言)的熱部署機制分析
http://www.cnblogs.com/CodeGuy/archive/2013/04/27/3043040.html


相關文章