使用thin模式降低spring boot包大小。 也就是说,依赖的那些jar不打到fatjar里。从而把动辄100M以上的包,降低到1M的规模。
为什么要做这个事儿呢?实际上我们项目里依赖的那些jar,版本是不会经常变动的。每次打包都带上,导致我们发布过程要一直带了一些很重的制品大小。 所以thin模式还是有价值和意义的。
其实在很早的时候,我们使用tomcat部署多个war,会把一些公用的jar,比如spring,直接丢到tomcat的lib下,这样这些war就不要带spring的那些依赖jar了,从而实现了war包瘦身的目的。
其实我们可以进一步思考,我们依赖的这些jar,有一些是业务相关的,有一些是技术相关的,业务相关的可能会变动,特别是哪些二方库,比如我们订单依赖了支付接口的jar,支付发生了升级。而我们依赖的APM之类的jar,一是不会频繁升级,二是即使它们不存在,也不会影响我们系统的功能。那么是不是可以把一些技术性的jar,从springboot fatjar里移出去。
这就是外挂包的意义所在,尽量降低制品包大小,同时来平衡技术依赖和业务依赖的不同更新发布频率。外挂包是一个指定的单独目录。
1、里面正常是空的,但是可以放一些jar,运行期加载。
2、这里的jar一般需要是非业务功能的,独立升级维护。
3、如果一个jar的不同版本,同时存在与外挂包,以及fatjar,默认外挂包优先。
4、在开发测试环境,可以通过外挂包来测试新版本的业务功能,而不需要重新发布。
thin模式下,初次发起网络请求,才会初始化加载,之后会缓存:
最新发现,在debug模式都有加载,但是jar包运行都会不加载
全量jar模式下,启动即加载了:
sh# 以 root 用户登录服务器
# 删除现有的 release-cli 文件
sudo rm -f /usr/local/bin/release-cli
# 重新下载 release-cli
sudo curl -L --output /usr/local/bin/release-cli https://gitlab.com/gitlab-org/release-cli/-/releases/v0.18.0/downloads/bin/release-cli-linux-amd64
# 设置执行权限
sudo chmod +x /usr/local/bin/release-cli
# 检查文件内容
file /usr/local/bin/release-cli
# 切换到 ctm 用户并验证
sudo -u ctm -i
which release-cli
release-cli --version
本文作者:Golovin
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!