基于NodeJS的前端微服务自动化打包部署方案
摘要:传统开发模式下,前端项目规模会随着需求的增多不断增大,最终形成难以维护的巨石应用。微前端模式通过将多个独立微服务模块组合为整体应用的形式解决了这一痛点,这个组合过程包括微服务模块的合并、打包及部署,涉及到自动化注册、路由跳转、文件流处理等技术难点。本文介绍了一种基于NodeJS完成微服务模块合并和注册应用打包部署的自动化流程。
关键词:NodeJS;微前端;微服务
Automatic packaging and deployment scheme of front-end micro-services based on NodeJS
YUAN Yi-xin, WEI Shi-chen, LI Hua-lin
Abstract:Under the traditional development mode, the scale of front-end projects will continue to increase with the increase of demand, eventually forming a difficult to maintain Jushi application. The micro front-end mode solves this pain point by combining multiple ind
ependent micro service modules into an overall application. This combination process includes the combination, packaging and deployment of micro service modules, and involves technical difficulties such as automatic registration, route jump, and file flow processing. This paper introduces a scheme for automatic compilation of configuration file merging and registration application code based on NodeJS.
Key words: NodeJS; micro-frontends; micro-service
一、引言
传统开发模式下,前端项目规模会随着需求的增多不断增大,最终形成难以维护的巨石应用。微前端模式通过将多个独立微服务模块组合为整体应用的形式解决了这一痛点,这个组合过程包括微服务模块的合并、打包及部署,涉及到自动化注册、路由跳转、文件流处理等技术难点。此外,如何高效地完成多模块代码合并、输出可视化日志并满足并发打包部署请求也是微服务模块组合方案中的重要问题。
使用命令行发起微服务模块组合有一定的技术要求,一种较为人性化的做法是提供web页
面供非专业开发人员使用,用户选择所需的微服务模块进行组合,发起打包订单,并通过查看工作日志了解打包进度。
二、关键技术与方法
2.1NodeJS
NodeJS是近年较为流行的开源的JavaScript运行平台,它使得JavaScript可以脱离浏览器并使用于服务器端代码的编写。借助事件驱动、异步非阻塞I/O等特性,对于数据密集型、I/O密集型的应用场景有着优秀的处理能力[1]
2.2微服务
微服务是一种软件开发技术-面向服务的结构体系(SOA)架构样式的变体,利用许多松散耦合且可独立部署的较小的组件或服务构造应用程序。相比于单体应用,微服务单个应用程序本身不大,部署耗时短、影响范围小且风险低nginx部署前端项目[2],配合Docker和Kubernetes可以很好地完成微服务到容器的部署及编排管理。
2.3Docker
Docker是一个开源的应用容器引擎,可以用于开发、交付和运行应用程序。Docker使用沙箱机制,保证容器之间的隔离。同时它轻巧快速,容器性能开销低,在高密度环境及中小型部署场景下有很好的表现。Docker技术成为微服务架构实现的重要手段,它对微服务进行封装,实现了媒体平台与应用的解耦、能力和应用的灵活部署与管理[3]
三、方案设计
接收用户订单后,服务器端启动的自动化打包部署流程可以分解为四个阶段——根据订单配置拉取相应的微服务模块代码、根据配置项合并相同版本下的微服务模块代码、完成不同版本的微应用注册及打包部署,在每个阶段实时输出工作日志。并且,由于存在多个用户同时发起打包请求的可能性,自动化打包方案设计也需要支持并发请求。此外,在完成打包部署后,清除代码合并打包过程中产生的临时文件,避免服务器端空间被大量占用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。