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