CN115827100A - 一种工业软件微服务合并的方法及系统 - Google Patents
一种工业软件微服务合并的方法及系统 Download PDFInfo
- Publication number
- CN115827100A CN115827100A CN202211607550.0A CN202211607550A CN115827100A CN 115827100 A CN115827100 A CN 115827100A CN 202211607550 A CN202211607550 A CN 202211607550A CN 115827100 A CN115827100 A CN 115827100A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- monomer
- industrial
- services
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开了一种工业软件微服务合并的方法及系统,包括:将每一个设定的工业微服务业务代码打包形成一个单体Jar包;将形成的多个单体Jar包存储至单体仓库;响应于外界的服务请求,确定所需要的微服务类型及数量;通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。本发明通过将工业微服务业务代码编译为单体jar包,并存储在单体仓库,基座应用可以根据需要调取单体仓库中的任意单体jar包进行组合,配置灵活,不涉及到具体的业务代码,方案的可一致性比较强;减少了大量微服务的部署成本以及软件的开发及维护成本。
Description
技术领域
本发明涉及微服务合并技术领域,尤其涉及一种工业软件微服务合并的方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
目前,企业级应用后端大多采用微服务的形式进行开发和部署,这种方式在扩展性、开发复杂度、高可用方面带来了前所未有的优势,因此在大型项目或者平台中得到了广泛的应用。
在工业软件中,存在不同的业务线,如BOM,MOM,图文档,生产过程管理等等,每条业务线背后都有一个或者几个软件产品作为支撑,每个软件产品又会根据功能、业务、技术等进行微服务的拆分。这样,一个制造型企业中会有几百甚至上千个微服务在提供服务,每一个微服务都需要占用一个服务部署资源,这给企业带来了很大的部署以及运维成本。
对于开发工业软件的软件开发商来说,过多数量的微服务也会带来开发和服务治理方面的难度。面对不同规模的客户,开发商不能通过一套代码为所有客户提供模式一样的服务,需要大量重复编写代码,这也增大了开发商的开发成本以及维护成本。
发明内容
为了解决上述问题,本发明提出了一种工业软件微服务合并的方法及系统,通过可配置的方式实现一套工业软件业务代码在不同的场景下,以不同数量微服务组合的方式来运行(微服务数量可配置),进而大大减少客户的部署成本以及软件开发商的开发以及维护成本。
在一些实施方式中,采用如下技术方案:
一种工业软件微服务合并的方法,包括:
将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
将形成的多个单体Jar包存储至单体仓库;
响应于外界的服务请求,确定所需要的微服务类型及数量;
通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
作为进一步地方案,通过基于Gradle的编译插件将工业微服务业务代码编译为符合设定要求的单体jar包。
作为进一步地方案,所述单体Jar包中去掉了微服务的一些设定文件,包括但不限于:启动类和配置文件。
作为进一步地方案,工业微服务业务代码编译完成后,将feign接口定义中的服务名称改为基座应用,服务间的调用改为基座服务的自调用。
作为进一步地方案,所有的单体jar包存储到单体仓库的独立的Group中。
作为进一步地方案,所述Gradle的编译插件能够根据需要开启或关闭,当插件开启时,将工业微服务业务代码编译为符合设定要求的单体jar包;当插件关闭时,工业微服务业务代码作为独立的微服务。
作为进一步地方案,浏览器通过互联网将服务请求发送至Nginx,Nginx将请求转发至后台的一个或者多个网关服务,网关服务根据Nacos中配置的请求转发规则将服务请求转发到对应的基座应用,基座在处理请求时,原本业务服务之前的Feign调用转化为对自身的Feign调用。
作为进一步地方案,通过修改网关服务的转发规则,使得前端屏蔽后端接口的变化,实现前端功能的复用。
在另一些实施方式中,采用如下技术方案:
一种工业软件微服务合并的系统,包括:
代码打包模块,用于将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
单体Jar包存储模块,用于将形成的多个单体Jar包存储至单体仓库;
单体Jar包组合调用模块,用于响应于外界的服务请求,确定所需要的微服务类型及数量;通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
在另一些实施方式中,采用如下技术方案:
一种终端设备,其包括处理器和存储器,处理器用于实现各指令;存储器用于存储多条指令,所述指令适于由处理器加载并执行上述的工业软件微服务合并的方法。
与现有技术相比,本发明的有益效果是:
(1)本发明通过将工业微服务业务代码编译为单体jar包,并存储在单体仓库,基座应用可以根据需要调取单体仓库中的任意单体jar包进行组合,配置灵活,不涉及到具体的业务代码,方案的可一致性比较强;减少了大量微服务的部署成本以及软件的开发及维护成本。
(2)业务开发人员只需要在项目配置信息中引入单体Jar打包插件,业务代码无侵入,减少了开发人员的调试成本。
(3)本发明使用的单体Jar包和微服务的镜像是由同一套代码编译出来的,开发人员只需要维护一套代码就可以让自己的业务在不同的模式下运行,没有因为运行模式的增加而增加开发的复杂度,同时也不会存在不同版本业务代码冲突的问题。
本发明的其他特征和附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本方面的实践了解到。
附图说明
图1为本发明实施例中的工业软件微服务合并的方法过程示意图;
图2为本发明实施例中的运行态基座应用的工作过程示意图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
术语解释:
Gradle:Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,它支持使用者自己设置构建参数,甚至允许增加一些自定义的构建任务。
工业微服务业务代码:(工业软件中)实现某种业务功能的Java源代码。
配置合并工具:可以将多个微服务的配置项合并到一个配置文件中的工具。
单体Jar:一种能被其他应用直接引用的Jar包,它是由工业微服务业务代码打包而成的,里面去掉了微服务的一些特性文件(比如:启动类、配置文件等),修改了一些关键二进制代码;Jar包内的目录结构是符合直接调用的目录结构(该结构和微服务镜像包结构不同)。
单体编译插件(简称插件):一个基于Gradle的编译插件,它可以将源代码编译为符合设定要求的单体jar包。
单体仓库:是一个存储单体jar包的仓库,该仓库区别于普通微服务的镜像仓库,是一个逻辑上完全独立的仓库。
基座应用:一个用于集成所有业务单体Jar包的基础应用,该应用中配置了当前应用中包含的业务服务以及版本;可以调取任意单体Jar包进行组合,最终,基座应用会被打成单独的镜像去运行。
实施例一
在一个或多个实施方式中,公开了一种工业软件微服务合并的方法,结合图1,具体包括如下过程:
(1)将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
本实施例中,基于Gradle的编译插件将工业微服务业务代码编译为符合设定要求的单体jar包,这些单体jar包可以被基座应用直接调用。
每一个单体Jar包会在基座应用中当做普通jar包来调用,而不会被作为独立的微服务来启动(微服务jar包),所以只需要打成简单jar即可,这样不同微服务之间公用的Jar会共享,从而大大减少基座应用的体积。
基于Gradle的编译插件在进行打包时,删除作为简单jar包不需要的文件,包括微服务的启动类和微服务相关的配置文件等。
工业微服务业务代码编译完成后,将feign接口定义中的服务名称改为基座应用,服务间的调用改为基座服务的自调用。
同时,插件支持开关,当插件开启时,将工业微服务业务代码编译为符合设定要求的单体jar包;当插件关闭时,工业微服务业务代码可以作为独立的微服务运行。本实施例使用的单体Jar包和微服务的镜像是由同一套代码编译出来的,业务人员只需要通过开关来控制打包模式,实现一套代码多种模式运行,避免了重复的测试工作;没有因为运行模式的增加而增加开发的复杂度,同时也不会存在不同版本业务代码冲突的问题。
(2)将形成的多个单体Jar包存储至单体仓库;
本实施例中,设置用于存储单体jar包的单体仓库,使单体包最终被发布到单独的单体仓库中。通过设置单独存储单体jar包的单体仓库,使得微服务和单体jar包两种模式的运行资源完全隔离。
(3)响应于外界的服务请求,确定所需要的微服务类型及数量;
(4)通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
具体地,结合图2,运行态基座应用的工作过程如下:
浏览器通过互联网将请求发送至Nginx,Nginx将请求转发至后台的一个或者多个网关服务,网关服务根据Nacos(一种服务注册发现以及配置工具)中配置的请求转发规则将请求转发到对应的基座应用,基座在处理请求时,原本业务服务之前的Feign调用转化为对自身的Feign调用。
本实施例中,通过配置合并工具可以将多个微服务的配置项合并到一个配置文件中。基座应用会引入相关服务运行所需要的所有jar包,然后通过基座应用的启动类来统一启动起来,对外暴露所有服务接口的并集。
现在大型网站都采用前后端分离的开发方法,如果后端接口不变,前端系统就不需要发生变化;基于此,本实施例前端浏览器与后端基座应用通过网关进行隔离,通过修改网关服务(gateway服务)的转发规则,屏蔽了后端的变化,可以达到后端两种部署模式共用一套前端的目的,实现了前端功能的复用。
产出装置仍然是以微服务的形式体现,仍然通过分布式部署来解决服务的高可用问题以及高性能问题。
本实施例基座应用涵盖的微服务及版本,中间件及版本,基座服务名等信息,均可以根据需要进行配置,不改变既有的开发流程,只是在项目中进行简单的配置就可以实现,业务代码无侵入。
实施例二
在一个或多个实施方式中,公开了一种工业软件微服务合并的系统,包括:
代码打包模块,用于将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
其中,通过基于Gradle的编译插件将工业微服务业务代码编译为符合设定要求的单体jar包。
单体Jar包存储模块,用于将形成的多个单体Jar包存储至单体仓库;
单体Jar包组合调用模块,用于响应于外界的服务请求,确定所需要的微服务类型及数量;通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
需要说明的是,上述过程的具体实现方式已经在实施例一中进行了详细的说明,此处与实施例一中相同,不再详述。
实施例三
在一个或多个实施方式中,公开了一种终端设备,包括服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例一中的工业软件微服务合并的方法。为了简洁,在此不再赘述。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种工业软件微服务合并的方法,其特征在于,包括:
将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
将形成的多个单体Jar包存储至单体仓库;
响应于外界的服务请求,确定所需要的微服务类型及数量;
通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
2.如权利要求1所述的一种工业软件微服务合并的方法,其特征在于,通过基于Gradle的编译插件将工业微服务业务代码编译为符合设定要求的单体jar包。
3.如权利要求2所述的一种工业软件微服务合并的方法,其特征在于,所述单体Jar包中去掉了微服务的一些设定文件,包括但不限于:启动类和配置文件。
4.如权利要求2所述的一种工业软件微服务合并的方法,其特征在于,工业微服务业务代码编译完成后,将feign接口定义中的服务名称改为基座应用,服务间的调用改为基座服务的自调用。
5.如权利要求2所述的一种工业软件微服务合并的方法,其特征在于,所有的单体jar包存储到单体仓库的独立的Group中。
6.如权利要求2所述的一种工业软件微服务合并的方法,其特征在于,所述Gradle的编译插件能够根据需要开启或关闭,当插件开启时,将工业微服务业务代码编译为符合设定要求的单体jar包;当插件关闭时,工业微服务业务代码作为独立的微服务。
7.如权利要求1所述的一种工业软件微服务合并的方法,其特征在于,浏览器通过互联网将服务请求发送至Nginx,Nginx将请求转发至后台的一个或者多个网关服务,网关服务根据Nacos中配置的请求转发规则将服务请求转发到对应的基座应用,基座在处理请求时,原本业务服务之前的Feign调用转化为对自身的Feign调用。
8.如权利要求1所述的一种工业软件微服务合并的方法,其特征在于,通过修改网关服务的转发规则,使得前端屏蔽后端接口的变化,实现前端功能的复用。
9.一种工业软件微服务合并的系统,其特征在于,包括:
代码打包模块,用于将每一个设定的工业微服务业务代码打包形成一个单体Jar包;
单体Jar包存储模块,用于将形成的多个单体Jar包存储至单体仓库;
单体Jar包组合调用模块,用于响应于外界的服务请求,确定所需要的微服务类型及数量;通过基座应用从单体仓库中调用所述微服务对应的单体Jar包进行组合,并将所述微服务的配置合并到一个配置文件中,以实现组合微服务的启动。
10.一种终端设备,其包括处理器和存储器,处理器用于实现各指令;存储器用于存储多条指令,其特征在于,所述指令适于由处理器加载并执行权利要求1-8任一项所述的工业软件微服务合并的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211607550.0A CN115827100A (zh) | 2022-12-14 | 2022-12-14 | 一种工业软件微服务合并的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211607550.0A CN115827100A (zh) | 2022-12-14 | 2022-12-14 | 一种工业软件微服务合并的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827100A true CN115827100A (zh) | 2023-03-21 |
Family
ID=85547287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211607550.0A Pending CN115827100A (zh) | 2022-12-14 | 2022-12-14 | 一种工业软件微服务合并的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827100A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076004A (zh) * | 2023-10-13 | 2023-11-17 | 美云智数科技有限公司 | 微服务打包合并方法、装置和电子设备 |
CN117251173A (zh) * | 2023-11-15 | 2023-12-19 | 深圳万物安全科技有限公司 | 微服务项目的配置方法,微服务项目的配置装置及介质 |
-
2022
- 2022-12-14 CN CN202211607550.0A patent/CN115827100A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076004A (zh) * | 2023-10-13 | 2023-11-17 | 美云智数科技有限公司 | 微服务打包合并方法、装置和电子设备 |
CN117076004B (zh) * | 2023-10-13 | 2024-04-12 | 美云智数科技有限公司 | 微服务打包合并方法、装置和电子设备 |
CN117251173A (zh) * | 2023-11-15 | 2023-12-19 | 深圳万物安全科技有限公司 | 微服务项目的配置方法,微服务项目的配置装置及介质 |
CN117251173B (zh) * | 2023-11-15 | 2024-03-08 | 深圳万物安全科技有限公司 | 微服务项目的配置方法、微服务项目的配置装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115827100A (zh) | 一种工业软件微服务合并的方法及系统 | |
US9996323B2 (en) | Methods and systems for utilizing bytecode in an on-demand service environment including providing multi-tenant runtime environments and systems | |
US10296297B2 (en) | Execution semantics for sub-processes in BPEL | |
JPH06195290A (ja) | 遠隔ノードからの処理手順呼出し方法及びシステム | |
US9043757B2 (en) | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files | |
US20150363195A1 (en) | Software package management | |
CN111736913B (zh) | 类加载方法和装置 | |
US9552239B2 (en) | Using sub-processes across business processes in different composites | |
US20030149967A1 (en) | Information processing method and system | |
CN112230918B (zh) | 一种使用iframe内嵌网页的web端开发方法 | |
CN113987337A (zh) | 基于组件化动态编排的搜索方法、系统、设备及存储介质 | |
CN113268239A (zh) | 桌面应用的视图构建方法、装置、设备及存储介质 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN108681491B (zh) | 一种文件解耦方法及系统 | |
CN116414774A (zh) | 文件迁移方法、装置、设备及存储介质 | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
CN114791884A (zh) | 测试环境的构建方法、装置、存储介质及电子设备 | |
CN115291893A (zh) | 一种代码运行部署系统及方法 | |
CN114924733A (zh) | 一种表单依赖关系管理和表单精准渲染方法和系统 | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
CN114461249A (zh) | 一种微服务部署方法、装置、代码服务器及存储介质 | |
US9141383B2 (en) | Subprocess definition and visualization in BPEL | |
CN112052035A (zh) | 基于银行后线系统的版本组包方法及装置 | |
CN116360752B (zh) | 面向java的函数式编程方法、智能终端和存储介质 | |
CN113946350B (zh) | 一种共享工作空间的部署方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |