天天看點

關于熱部署-了解與總結

由于我一直是做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