热部署和热加载

2018-8-22
今天入职第二天,看到老大在群里发了一个go热加载实现的链接,之前没有听说过热加载,所以搜索了一下,下面是关于热部署和热加载的相关整理。

引言

在项目线上更新时,可能会遇到需要热部署的情况,虽然现在大多数公司由于业务量大采用了分布式集群,可以分批次的重启更新。但是还是有需要热部署

热部署和热加载的区别

比较热部署热加载
部署方式热部署在服务器运行时重新部署项目热加载在运行时重新加载class
实现原理热部署直接重新加载整个应用热加载在运行时重新加载class
使用场景热部署更多的是在生产环境使用热加载则更多的实在开发环境使用(节省开发的时间和调试的时间)
安全性热加载几乎没有
操作前后变化会清空session ,释放内存不清空session ,不释放内存。要考虑内存溢出的情况

热加载:依赖类的加载机制,在容器启动的时候后台会启动一个线程,定时间的检测类时间戳的变化,如果累的时间戳发生了变化,就将类重新带入,侧重的是运行时通过重新加载改变类的信息,直接改变程序的行为。

热部署

就是已经运行了项目,更改之后,不需要重新tomcat,但是会清空内存,重新打包,重新解压war包运行

可能好处是一个tomcat多个项目,不必因为tomcat停止而停止其他的项目

热加载

是基于字节码进行更改的,不释放内存,开发可用,上线不可用,比如修改类了,原先的类内存不会释放,新的类还会增加内存。

更改字节码的意思是应该更改exploded war包中的.class文件.

热加载不重启tomcat,不重新打包

更新静态资源

更新静态资源是更改exploded war的静态资源,和热加载归到一起。

参考

  1. 热部署和热加载
  2. 热部署和热加载的区别
  3. 热部署与热加载的配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#实现定时器

C#实现定时器 方法一 布局 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace…

HTTP请求流程

hhtp请求流程首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。 http请求与响应的步骤如下: URL解析、域名解析 输入URL的时候,首先浏览器会…

PHP执行外部程序的方法

引言在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令、shell脚本、可执行程序等等 PHP执行外部程序的方法 system(),system函数将执行的结果直接输出exec():执行一个外部程序,将输出结果保…

C语言函数变量的引用

C语言函数变量的引用 有时候&#xff0c;你想引用函数中的某些变量。 #include <stdio.h>int main() {struct guoba{int pang;int piqi;};void tong(int *p){int month1 3;int month5 8;struct guoba xiaoguoba;xiaoguoba.pang month1 month5;*p xiaoguoba.pang ;…

php 终止程序的方法——return、exit()、die()

php中终止程序的运行有三种方式&#xff1a; return&#xff0c;主脚本程序中使用exit()&#xff0c;脚本中使用die()&#xff0c; 脚本中使用三者所在的脚本文件他们之后的代码都不会执行了。php开发模式下想直接看到变量的值使用exit()、die()。 returnreturn是语言结构而不是…

Eric Evans说DDD还未结束

在Explore DDD 2018大会上&#xff0c;Eric Evans做了“怀疑、乐观和实用主义”的主题演讲&#xff0c;他在演讲中表示&#xff0c;“DDD还没有结束”。在“领域驱动设计”这本书出版十五年之后&#xff0c;作者对这个想法长期以来如此流行表示了惊讶之情。他强调&#xff0c;D…

mark

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C语言的进阶-指针的应用

指针的应用 #include <stdio.h> void swap(int *p,int *q); int main() {int a 5;int b 8;swap(&a,&b);printf("a%d,b%d\n",a,b);return 0; }void swap(int *p,int *q) {int t *p;*p *q;*q t; }函数只能返回一个值&#xff01; 可以通过参数返回多…

Go简单开始

Go是一门编译型语言&#xff0c;Go语言的工具链将源代码及其依赖转换成计算机的机器指令2。Go语言提供的工具都通过一个单独的命令 go 调用&#xff0c; go 命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件&#xff0c;链接库文件&am…

C语言进阶-指针与数组

C语言进阶-指针与数组 q可以改变指向的内容&#xff0c;但不能改变指向的地址 p可以改变指向地址&#xff0c;但不能改变指向内容

测试下文章

这是一篇测试 编辑

发布文章测试

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C语言进阶-指针运算

C语言进阶-指针运算 #include <stdio.h>int main() {char a[] {0,1,2,3,4,5,6,7,8,9};char *p a;printf("p%d\n",p);printf("p1%d\n",p1);int b[] {0,1,2,3,4,5,6,7,8,9};int *q b;printf("q%d\n",q);printf("q1%d\n",q1);r…

vim的模式及常用命令

vim的模式正常模式 (Normal-mode) &#xff1a; 左下角显示文件名或为空。 启动vim后默认处于正常模式。不论位于什么模式&#xff0c;按下<Esc>键(有时需要按两下&#xff09;都会进入正常模式。 插入模式 (Insert-mode)&#xff1a;左下角显示–INSERT– 在正常模式中…

C语言进阶-动态内存分配

C语言进阶-动态内存分配 #include <stdio.h> #include<stdlib.h>int main() {int number;int *a;int i;printf("请输入数组的数量");scanf("%d",&number);//int a[number];a(int*)malloc(number*sizeof(int));//开辟数组的大小for(i 0;i&…

测测

编辑 1.多喝水 2.清黑头&#xff0c;一周做一次角质&#xff0c;一个月做一次小气泡 3.防晒 无论春夏秋冬 4.少吃辣&#xff0c;多喝柠檬水 5.早上护肤步骤&#xff1a;洁面-爽肤水-眼霜-精华-面霜-防晒 6.晚上护肤步骤&#xff1a;卸妆-洁面-水-眼霜-精华-面霜 7.一周三…

QT输出出现乱码的解决

QT输出出现乱码的解决