zoukankan      html  css  js  c++  java
  • 关于热部署-理解与总结

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

  • 相关阅读:
    极简风格网络消息以及分发架构
    GPS网络时间服务器是如何让集成系统协调工作的?
    北斗授时设备(NTP时间服务器)对高速联网收费的重要性
    卫星互联网路由技术现状及展望
    【Python】获取中国法定节假日的封装
    GCC 内联汇编基础
    MIT6.828——Lab1 partB(麻省理工操作系统课程实验)
    MIT6.828——Lab1 partA(麻省理工操作系统课程实验)
    bochs(2.6.11)配置安装
    MIT6.828(Step0)——实验环境配置
  • 原文地址:https://www.cnblogs.com/wangtao_20/p/3561085.html
Copyright © 2011-2022 走看看