热部署和热加载
2018-8-22
今天入職第二天,看到老大在群里發(fā)了一個(gè)go熱加載實(shí)現(xiàn)的鏈接,之前沒有聽說過熱加載,所以搜索了一下,下面是關(guān)于熱部署和熱加載的相關(guān)整理。
引言
在項(xiàng)目線上更新時(shí),可能會(huì)遇到需要熱部署的情況,雖然現(xiàn)在大多數(shù)公司由于業(yè)務(wù)量大采用了分布式集群,可以分批次的重啟更新。但是還是有需要熱部署
熱部署和熱加載的區(qū)別
| 部署方式 | 熱部署在服務(wù)器運(yùn)行時(shí)重新部署項(xiàng)目 | 熱加載在運(yùn)行時(shí)重新加載class |
| 實(shí)現(xiàn)原理 | 熱部署直接重新加載整個(gè)應(yīng)用 | 熱加載在運(yùn)行時(shí)重新加載class |
| 使用場景 | 熱部署更多的是在生產(chǎn)環(huán)境使用 | 熱加載則更多的實(shí)在開發(fā)環(huán)境使用(節(jié)省開發(fā)的時(shí)間和調(diào)試的時(shí)間) |
| 安全性 | 熱加載幾乎沒有 | |
| 操作前后變化 | 會(huì)清空session ,釋放內(nèi)存 | 不清空session ,不釋放內(nèi)存。要考慮內(nèi)存溢出的情況 |
熱加載:依賴類的加載機(jī)制,在容器啟動(dòng)的時(shí)候后臺(tái)會(huì)啟動(dòng)一個(gè)線程,定時(shí)間的檢測類時(shí)間戳的變化,如果累的時(shí)間戳發(fā)生了變化,就將類重新帶入,側(cè)重的是運(yùn)行時(shí)通過重新加載改變類的信息,直接改變程序的行為。
熱部署
就是已經(jīng)運(yùn)行了項(xiàng)目,更改之后,不需要重新tomcat,但是會(huì)清空內(nèi)存,重新打包,重新解壓war包運(yùn)行
可能好處是一個(gè)tomcat多個(gè)項(xiàng)目,不必因?yàn)閠omcat停止而停止其他的項(xiàng)目
熱加載
是基于字節(jié)碼進(jìn)行更改的,不釋放內(nèi)存,開發(fā)可用,上線不可用,比如修改類了,原先的類內(nèi)存不會(huì)釋放,新的類還會(huì)增加內(nèi)存。
更改字節(jié)碼的意思是應(yīng)該更改exploded war包中的.class文件.
熱加載不重啟tomcat,不重新打包
更新靜態(tài)資源
更新靜態(tài)資源是更改exploded war的靜態(tài)資源,和熱加載歸到一起。
參考
總結(jié)