JNAVI项目是我们公司开发的用于大规模分布式服务框架,能提供http,tcp,udp请求服务,并提供了大量的高效率、高性能、池化的请求底层服务的接口的框架。其中之一的特点就是类似于tomcat,支持部署多个业务模块,每个业务模块支持热部署,其就是利用classload实现的。先简单看图。
整个项目分3层,第一层就是启动JNAVI的代码,即boot启动代码
第二层就是服务框架,提供tcp,udp,http服务
第三次就是各个业务模块的代码
整体上,第一层代码初始化serverclassload,并根据配置的主类通过serverclassload启动主类
第二层会启动多个第三层业务模块,每个业务模块分别初始化一个moduleclassload,并引用,通过接口的形式调用第三层相关代码。
第三层支持热部署,即第二层的框架代码会启动一个线程,会定期的去检查业务模块的相关配置是否变化,变化的话,就会重新初始化一个moduleclassload,并加重代码,之后,抛弃之前的moduleclassload,以此达到热部署的功能(使用新类,并卸载旧类)