编译源码适配-袋鼠云平台代码标准化编译部署效率提升实践

作者/第 1 行

编辑/花夏

前言

作为全链路数字化技术与服务提供商,袋鼠云提供从数据湖、大数据基础平台、离线开发、实时开发、数据服务、数据整改、指标管理、客户数据洞察等全系列产品。数据孪生可视化系统服务。

袋鼠云围绕“行业应用”和“通用应用”,聚焦数字智能,提供全维度数字化解决方案,帮助企业实现降本增效、快速变革。 截至目前,袋鼠云已服务超过5000家客户。

面对如此大量的客户,平台需要不断更新迭代,以适应最新的产品功能,向客户呈现更完整的功能,实现客户使用平台的最佳体验。

为了高效部署和监控袋鼠云平台中的各类产品,袋鼠云自主研发了新产品——大数据基础平台EasyMR,提供快速建立和维护大数据集群的能力,帮助提升运营水平大数据平台的、维护和交互能力。 当为客户升级部署平台层代码时,需要定义标准化的打包规范,快速规范地输出平台层代码的标准包,可用于大数据基础平台EasyMR部署一-停止产品包服务、升级、卸载、配置等操作,释放人工运维成本。

在ToB客户环境下,从产品功能迭代到运维外包再到部署,都需要考虑效率的提升和优化。面对小客户场景,局域网的部署不可避免地会涉及到增量包的传输大小限制。尤其是在持续增量部署的情况下,客户需要不断地审核产品包,并且由于需要花费大量的时间,这极大地影响了平台部署产品的效率

基于产品包显存大影响平台部署效率的问题,袋鼠云技术团队不断探索实践,从平台的优化到编译策略,结合内部的包优化袋鼠云产品包,讲解如何使用增量策略。 更好的解决产品包的内存大小问题,解决增量升级的效率。

代码编译优化策略

编译

袋鼠云平台层的代码采用Java开发语言,基于maven模块定义了各平台产品的模块。 平台层侧重于代码层面的功能,产品编译包一般以简单的如:

编译方式通过内部的maven-shard-plugin插件编译可执行shardjar。

maven-shade-plugin富含大量的资源转换器(ResourceTransformers),可以通过额外的策略防止由于版本不同而导致相同属性的资源被覆盖错误。

官方参考文档:

#AppendingTransformer

产品包装

运维是基于平台编译的可执行jar包,如:

{项目.名称}-{项目版本}-jar-with-dependency.jar

需要集成shell启停脚本、配置资源、sql等输出标准,以适配EasyMR部署的标准tar包。 整个平台的总体编译策略如右图所示:

通过前面编译为产品包的具体步骤,我们会发现,在通过maven-shade-plugin将平台层编译为可执行的shard jar的策略下,我们可以考虑以下问题:

Bug修复

增量发送satchel的tar包大小

使用 EasyMR 直接移动平台

● 错误修复

针对这个问题,目前的编译策略无法解决。 只能通过将整体Shadowjar导出为整体产品部署包,并在客户漏洞修补的情况下进行全面升级来解决。

●挎包增量交付的tar包大小问题

针对这个问题:编译可执行jar包的策略,即依赖jar和平台自带的jar来编译整个jar包,很难以最小的成本解决单个jar增量升级的问题,而这个问题必然会导致toB客户升级场景下增量jar升级的传输包大小。 事实上,在增量升级策略下,不需要对不变的jar包进行升级和替换,而对可变的jar包则只需要增量升级和替换。

●平台与EasyMR直接移动的问题

在目前基于EasyMR部署平台的策略下编译源码适配,需要通过运维层生产标准的产品包。 这在内部降低了从开发到部署的能力。 未来该平台将基于EasyMR的标准封装规范,从而可以直接实现EMR。 标准产品 tar 的产品包编译。

本文主要针对当前平台的第一个问题,通过在平台的产品层面拆分自己的jar和第三方依赖jar的策略来解决。

优化策略设计原则

规格目录

基于各平台自带jar和第三方依赖jar拆分的原则,我们可以为平台层输出的编译包约定一个统一的路径,方便产品包在统一路径下的运行和输出维护。

标准化的编译指定目录拆解了平台服务级别的配置文件、脚本、依赖等相关的核心内容,这也是平台级别统一编译目录的核心部分。

平台编译

基于标准化编译目录的制定,我们使用AssemblyMaven:

()

隔离指定的依赖包,最后通过java-cpCLASSPATH类加载器加载路径策略将对应的不同隔离的jar加载到类加载器中。 例如:

增量策略

全包策略下,目录下的lib和dtstack都需要加载到对应的classpath中。

在增量外包的前提下,基于项目的经度产品外包策略分析如下:

即:基于客户A的增量包场景,对于上次的增量升级策略,我们可以使用MD5增量对比之前系统包依赖的lib/dtstack的md5值编译源码适配,增量包更改/添加jar包。

基于增量打包的策略可以更细致地维护升级包的大小和增量升级。 需要注意的是,系统运维包需要维护当前内部jar包的md5值,作为最后增量产品包输出的依据。

总结

基于标准编译目录到平台编译策略的小优化和小改造,然后从增量的角度来解释增量包导出策略,我们可以提取平台自研的jar包和平台依赖的jar以平衡的方式进行包装。 。

基于此,能否为未来运维袋鼠云平台产品更细致的升级部署奠定基础,也是对toB场景运维部署效率的一个小提升。 无论从引擎层面、平台层面还是运维层面,袋鼠云不断的产品迭代和功能改进,都是为了实现更好的运维、部署以及客户平台使用的最佳体验。

+

过去的推荐

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 编译源码适配-袋鼠云平台代码标准化编译部署效率提升实践 https://www.wkzy.net/game/155044.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务