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