關於熱部署-理解與總結
由於我一直是做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
相關文章
- 關於react我的理解與總結React
- 關於對Entity Framework Core3.1的理解與總結Framework
- Java關鍵字理解與總結(未完)Java
- 關於Vue中插槽的理解和總結Vue
- 關於Java泛型深入理解小總結Java泛型
- 關於SSM與echart結合的問題總結SSM
- 關於ORACLE的鎖表與解鎖總結Oracle
- Java常量池理解與總結Java
- 關於Servlet小總結Servlet
- 關於近期的總結
- 關於UIWebView的總結UIWebView
- 關於BeautifulSoup的總結
- 關於HTML的總結HTML
- 關於Hint再總結
- GRPC與 ProtoBuf 的理解與總結RPC
- RabbitMQ 安裝部署與配置總結MQ
- 一篇關於熱點交流話題的總結和續集。
- sqlserver關於always on的總結SQLServer
- 關於vue基礎總結Vue
- mysql關於variable的總結MySql
- 關於 flex 面試題總結Flex面試題
- lucene關於IndexReader總結Index
- ORACLE關於NULL的總結OracleNull
- 轉載關於JOIN總結
- 關於ORACLE鎖的總結Oracle
- 關於jboss配置的總結
- 關於介面測試自動化的總結與思考
- 關於負載均衡的一切:總結與思考負載
- 關於動態連結串列的理解
- INNODB 熱備工具試驗與總結 薦
- HTTP協議理解與應用總結HTTP協議
- 關於Webservice介面對接相關總結Web
- sqlserver關於mirror映象的總結SQLServer
- sqlserver 關於DBCC CHECKDB的總結SQLServer
- 關於golang的time包總結Golang
- 關於 iOS 批量打包的總結iOS
- 關於Teradata PI的總結
- 關於控制檔案的總結