關於熱部署-理解與總結


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM