SlimFast Maven插件:HubSpot避免SpringBoot肥胖巨大JAR的方法

栏目: Java · 发布时间: 5年前

内容简介:在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工

在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇 精彩的博客文章 ,解释了他们在将大型胖JAR持续部署到AWS云时,内部开发循环和网络带宽使用带来的一些挑战。

该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工程师,每天不断提交并触发1,000-2,000次构建,这种情况得到了放大。他们每天产生50-100 GB的构建工件!

HubSpot团队最终创建了一个新的Maven插件: SlimFast 。这个插件与Shade插件的不同之处在于它将应用程序代码与相关的依赖项分开,因此构建并上传两个单独的工件。单独构建和上载应用程序依赖项可能听起来效率低下,但只有在依赖项发生更改时才会执行此步骤。由于依赖项不经常更改,HubSpot团队声明此步骤通常是无操作; 包依赖关系的JAR文件只上传到S3一次。

HubSpot博客文章和相应的GitHub存储库提供了全面的详细信息,但实际上,SlimFast插件使用Maven JAR插件向Skinny JAR添加一个Class-Path清单条目,指向依赖项的JAR文件,并生成一个JSON文件有关S3中所有依赖项工件的信息,以便以后可以下载这些工件。在部署时,HubSpot团队会下载所有应用程序的依赖项,但随后会在每个应用程序服务器上缓存这些工件,因此这一步骤通常也是无操作。最终结果是在构建时只上传了应用程序的瘦小JAR,这只是几百千字节。在部署时,只需要下载相同的瘦JAR,这需要几分之一秒。

SlimFast插件目前与AWS S3绑定用于存储工件,但代码可在GitHub上获得,其原理可适用于任何类型的外部存储。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

界面设计模式

界面设计模式

[美]泰德维尔(Tidwell,J.) / 蒋芳 / 电子工业出版社 / 2013-9-1 / CNY 119.00

模式意味着重用。 好的模式建立在对人与事物的深刻认知之上。 本书开篇即总结了“与人有关”的各类问题,为读者提供了界面设计总体思路上的指引,帮助读者举一反三。 接下来,本书收集并分析了很多常用的界面设计模式,帮助读者理解在实现级别的各种常用解决方案,将它们灵活地运用到自己的设计中。 同时,随着网络和技术的不断发展,本书在第1 版的基础上,更新了几乎所有的模式示例和说明,并新增......一起来看看 《界面设计模式》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具