CN117270887B - 一种Spring微服务的管理方法、装置及存储介质 - Google Patents

一种Spring微服务的管理方法、装置及存储介质 Download PDF

Info

Publication number
CN117270887B
CN117270887B CN202311559692.9A CN202311559692A CN117270887B CN 117270887 B CN117270887 B CN 117270887B CN 202311559692 A CN202311559692 A CN 202311559692A CN 117270887 B CN117270887 B CN 117270887B
Authority
CN
China
Prior art keywords
jar
package
target
directory
value
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.)
Active
Application number
CN202311559692.9A
Other languages
English (en)
Other versions
CN117270887A (zh
Inventor
赵鑫
张坚欣
邹方勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiajia Technology Co ltd
Original Assignee
Jiajia Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiajia Technology Co ltd filed Critical Jiajia Technology Co ltd
Priority to CN202311559692.9A priority Critical patent/CN117270887B/zh
Publication of CN117270887A publication Critical patent/CN117270887A/zh
Application granted granted Critical
Publication of CN117270887B publication Critical patent/CN117270887B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出了一种Spring微服务的管理方法、装置及存储介质,能够在瘦身私有化部署包体积的同时避免依赖冲突,该方法包括:获取并解压Spring微服务的私有化部署包,找到启动脚本和所有微服务的JAR包;解压任一JAR包,将微服务启动方式切换成使用class文件和JAR包启动;使用MD5值,重命名/BOOT‑INF/lib目录下的目标JAR包;将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT‑INF/lib目录下生成带有MD5值的目标JAR包的关联信息;修改启动脚本指定的JAVA程序入口;将修改后的启动脚本和带有MD5值的目标JAR包重新压缩,获得新私有化部署包。

Description

一种Spring微服务的管理方法、装置及存储介质
技术领域
本申请涉及一种计算机软件开发技术领域,尤其涉及一种Spring微服务的管理方法、装置及存储介质。
背景技术
微服务产品(如Spring微服务)的私有化部署包由很多微服务的JAR包组成,假设微服务产品包含50个微服务、JAR包体积均为100M,那么微服务产品的私有化部署包的体积将到达5G。并且,微服务JAR的重复依赖非常多,使得微服务产品的绝大部分体积都被外部依赖占用。因此,有必要减少微服务产品的私有化部署包的体积。
目前,减少私有化部署包的体积的思路主要是:通过JAVA构建工具(如Maven、Gradle)将外部依赖存放在公共依赖目录中。比如,假设50个微服务都依赖某个1M大小的JAR包,这个JAR会重复出现50次占用50M的体积,如果放到公共依赖目录那么将只占用1M,即通过将外部依赖放在公共依赖目录,能够减少60%-90%的体积。
然而,JAVA构建工具要求微服务具有相同版本的依赖,如果微服务的依赖版本不一致,会导致公共依赖目录出现多个版本的依赖包,这就会使得JAVA程序在加载类时会发生异常。并且,微服务产品一般由多个团队共同开发,每个团队拥有独立的JAVA工程,不同团队的依赖版本也不一致。
综上,有必要提供一种Spring微服务的管理方案,该方案能够在瘦身私有化部署包体积的同时避免依赖冲突。
发明内容
本申请实施例提供一种Spring微服务的管理方法、装置及存储介质,以解决相关技术存在的问题,技术方案如下:
第一方面,本申请实施例提供了一种Spring微服务的管理方法,包括:
获取Spring微服务的私有化部署包;
解压所述私有化部署包,找到启动脚本和所有微服务的JAR包;
解压任一所述JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动;
使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,所述目标JAR包为Spring微服务启动时打包的依赖包;
将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成所述带有MD5值的目标JAR包的关联信息;
修改所述启动脚本指定的JAVA程序入口;
将修改后的启动脚本和所述带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包。
在一种实施方式中,使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包包括:
遍历/BOOT-INF/lib目录下的每个所述目标JAR包,计算每个所述目标JAR包的目标MD5值;
使用所述目标MD5值重命名每个所述目标JAR包。
在一种实施方式中,所述关联信息为指向所述带有MD5值的目标JAR包的软链,所述软链的名称为所述带有MD5值的目标JAR包的原名称。
在一种实施方式中,所述软链为linux软链接。
在一种实施方式中,修改所述启动脚本指定的JAVA程序入口包括:
在所述启动脚本的命令行中,将所述启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher。
在一种实施方式中,所述方法还包括:
获取客户提供的漏洞清单;
从所述公共依赖目录中,查找修复版本的第一JAR包,所述第一JAR包为不存在所述漏洞清单中的漏洞的一版JAR包;
验证所述第一JAR包通过后,将所述第一JAR包反馈给所述客户;
将所述客户修复漏洞后获得的新第一JAR包移动到所述公共依赖目录中,并将所述第一JAR包的关联信息替换为所述新第一JAR包的关联信息,删除所述第一JAR包;
重启所述Spring微服务。
在一种实施方式中,验证所述第一JAR包通过包括:
对所述第一JAR包进行冒烟测试,测试无问题时,确定所述第一JAR包通过验证。
第二方面,本申请实施例还提供了一种Spring微服务的管理装置,包括:
解压单元,用于获取Spring微服务的私有化部署包;解压所述私有化部署包,找到启动脚本和所有微服务的JAR包;解压任一所述JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动;
管理单元,用于使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,所述目标JAR包为Spring微服务启动时打包的依赖包;将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成所述带有MD5值的目标JAR包的关联信息;修改所述启动脚本指定的JAVA程序入口;将修改后的启动脚本和所述带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包。
在一种实施方式中,所述管理单元具体用于:
遍历/BOOT-INF/lib目录下的每个所述目标JAR包,计算每个所述目标JAR包的目标MD5值;
使用所述目标MD5值重命名每个所述目标JAR包。
在一种实施方式中,所述关联信息为指向所述带有MD5值的目标JAR包的软链,所述软链的名称为所述带有MD5值的目标JAR包的原名称。
在一种实施方式中,所述软链为linux软链接。
在一种实施方式中,所述管理单元具体用于:
在所述启动脚本的命令行中,将所述启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher。
在一种实施方式中,所述管理单元还用于:
获取客户提供的漏洞清单;
从所述公共依赖目录中,查找修复版本的第一JAR包,所述第一JAR包为不存在所述漏洞清单中的漏洞的一版JAR包;
验证所述第一JAR包通过后,将所述第一JAR包反馈给所述客户;
将所述客户修复漏洞后获得的新第一JAR包移动到所述公共依赖目录中,并将所述第一JAR包的关联信息替换为所述新第一JAR包的关联信息,删除所述第一JAR包;
重启所述Spring微服务。
在一种实施方式中,所述管理单元具体用于:
对所述第一JAR包进行冒烟测试,测试无问题时,确定所述第一JAR包通过验证。
第三方面,本申请实施例还提供了一种计算机装置,该计算机装置包括:存储器和处理器,所述存储器中存储指令,所述指令由所述处理器加载并执行,以实现上述各方面任一种实施方式中的方法,其中,所述存储器和所述处理器通过内部连接通路互相通信。
第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,当计算机程序在计算机上运行时,实现上述各方面任一种实施方式中的方法。
上述技术方案中的优点或有益效果至少包括:
在本申请通过将依赖包移动到公共依赖目录下,大大减少了私有化部署包的体积,并通过使用JAR包的关联信息指向公共依赖目录的依赖包,同时,通过为公共依赖目录下的JAR包增加MD5值,可以避免同名不同内容的JAR包发生冲突,从而可以解决多版本依赖冲突的问题。
同时,本申请通过替换有漏洞的JAR包,实现了漏洞热修复,避免重新出程序包,流程短且耗时少,大大降低了漏洞修复的成本。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请实施例提供的一种Spring微服务的管理方法的流程示意图;
图2为本申请实施例提供的另一种Spring微服务的管理方法的流程示意图;
图3为本申请实施例提供的一种Spring微服务的管理装置的结构框图;
图4为本申请实施例提供的一种计算机装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本申请一实施例的Spring微服务的管理方法的流程图。如图1所示,该方法可以包括如下步骤:
S110、获取Spring微服务的私有化部署包。
在具体实施时,Spring微服务的私有化部署包可以是一个zip压缩包,其中,该私有化部署包内可以包含有多个微服务的部署文件,如启动脚本、配置文件和微服务的JAR包,即Spring Boot打包插件生成的JAR包(Fat Jar)。
示例性的,私有化部署包的目录结构可以表现如下:
---ServiceA
---启动脚本
---配置文件
---Fat Jar(JAR包)
作为一种示例,可以从本地服务器中获取Spring微服务的私有化部署包。
S120、解压私有化部署包,找到启动脚本和所有微服务的JAR包。
在具体实施时,解压私有化部署包后,通过寻找后缀为.bat的文件,即可找到启动脚本,以及通过寻找所有后缀为.jar的文件,即可找到所有微服务的JAR包。
S130、解压任一JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动。
在具体实施时,微服务启动方式的切换可以是由 java -jar启动切换成java org.springframework.boot.loader.JarLauncher启动。
由于私有化部署包里存在多个微服务的JAR包,这些JAR包存在重复依赖,在本申请中,通过解压任一JAR包后,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动,可以将微服务依赖的JAR包解压到文件***,这样便可以将多个微服务的JAR包进行池化处理,后续便可以通过软链将所有重复的JAR包移动到一个公共依赖目录中,以便于减少私有化部署包的体积。
S140、使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包。
在具体实施时,目标JAR包可以为Spring微服务启动时打包的依赖包,即目标JAR包是个压缩包,Spring微服务打包时会将目标JAR包放在/BOOT-INF/lib目录中。
可以理解为,Spring Boot打包时会将所有的第三方依赖包放在/BOOT-INF/lib目录下。基于此,需要遍历/BOOT-INF/lib目录以找到所有的公共依赖包。
在具体实施时,步骤S140可以包括:遍历/BOOT-INF/lib目录下的每个目标JAR包,计算每个目标JAR包的目标MD5值;使用目标MD5值重命名每个目标JAR包。比如,可以将某个目标JAR包重命名为 {name}-{md5 sum}.jar,md5即为该目标JAR包的目标MD5值。
公共依赖JAR包后续会放入到一个公共依赖目录下,由于不同微服务可能依赖相同版本但内容有差异的依赖(即SNAPSHOT包),在本申请中,通过使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,可以避免出现移动时文件名相同但实际内容不同的JAR包被覆盖的现象,从而可以避免版本号不变但内容发生变化的JAR包在运行时发生依赖冲突,如SNAPSHOT的JAR包或重复上传的JAR包。
S150、将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成带有MD5值的目标JAR包的关联信息。
在具体实施时,该关联信息可以为指向带有MD5值的目标JAR包的软链,其中,该软链的名称可以为带有MD5值的目标JAR包的原名称。
作为一种示例,软链可以为linux软链接。
在具体实施时,将带有MD5值的目标JAR包移动至公共依赖目录后,JAVA程序启动时不会去公共依赖目录寻找带有MD5值的目标JAR包(即依赖包),还是会去/BOOT-INF/lib目录下寻找带有MD5值的目标JAR包。基于此,通过在/BOOT-INF/lib目录下生成带有MD5值的目标JAR包的关联信息,可以方便JAVA程序寻找到带有MD5值的目标JAR包。
S160、修改启动脚本指定的JAVA程序入口。
通常,JAVA程序启动是需要指定程序的main方法。原先Fat Jar方式会在Manifest文件中指定main方法,现在JAVA包已被解压,所以需要切换成在命令行指定mian方法的形式启动Java程序。
在具体实施时,通过在启动脚本的命令行中,将启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher,即可以mian方法的形式启动Java程序。可以理解为,将启动脚本的-jar xxx.jar替换成 org.springframework.boot.loader.JarLauncher。
在具体实施时,执行步骤S160后,项目实施解压私有化部署包后,可以使用启动脚本指定的JAVA程序入口(即JarLauncher)启动JAVA程序。
S170、将修改后的启动脚本和带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包。
在执行完成步骤S170后,外部依赖都放在公共依赖目录中,步骤S110中的私有化部署包,会被重新压缩成“Slim”化的部署包。这时,由于公共依赖JAR池化,所以“Slim”化部署包体积会远远小于上述步骤S110中的私有化部署包。例如,原本10G的私有化部署包Slim化后,下降到只有800M。
在完成上述步骤S110至步骤S170后,JarLauncher启动时会自动将/BOOT-INF/lib目录下的所有目标JAR包添加到CLASSPATH。类加载器加载/BOOT-INF/lib目录下的目标JAR包时,会通过软链指向公共依赖目录下真实的JAR包,即带有MD5值的目标JAR包。
在本申请中,通过将依赖包移动到公共依赖目录下,大大减少了私有化部署包的体积,并通过使用软链指向公共依赖目录的依赖包,同时,通过为公共依赖目录下的JAR包增加MD5值,可以避免同名不同内容的JAR包发生冲突,从而可以解决多版本依赖冲突的问题。
目前的安全扫描工具非常流行,客户会定期扫描Spring微服务的私有化部署包。由于漏洞库不断更新,导致起初没有漏洞的JAR包在一段时间后会被扫描出漏洞。客户会要求软件提供方在限定时间内修复漏洞,研发需要切换到客户环境对应的历史版本升级依赖版本,测试通过后重新出包给客户。但是,这种漏洞修复方式的流程长、耗时久、成本高。
基于此,在对Spring微服务进行管理的过程中,除了需要避免依赖冲突之外,还需实现漏洞热修复。
本申请针对此问题,提出了一种轻量级、不需要重新出程序包的漏洞热修复手段。
下面将具体介绍本申请实现漏洞热修复的具体过程。
如图2所示,本申请提供的Spring微服务的管理方法,还可以包括如下步骤:
S210、获取客户提供的漏洞清单。
在具体实施时,客户可以针对使用Spring微服务发现的漏洞,创建一个漏洞清单。之后,可以通过主动、定期等方式获取该漏洞清单。
S220、从公共依赖目录中,查找修复版本的第一JAR包。
在具体实施时,第一JAR包可以为不存在漏洞清单中的漏洞的一版JAR包。
在具体实施时,可以在mvnrepository.com上,从公共依赖目录中,查找修复版本的第一JAR包。比如,若之前log4j存在较大漏洞,那么可以在mvnrepository.com上,寻找公共依赖目录中没有漏洞的一版JAR包。
S230、验证第一JAR包通过后,将第一JAR包反馈给客户。
在具体实施时,可以对第一JAR包进行冒烟测试,测试无问题时,即可确定第一JAR包通过验证,此时,可以将第一JAR包反馈给客户。比如,可以将log4j对应的一版无漏洞的JAR包反馈给客户。
S240、将客户修复漏洞后获得的新第一JAR包移动到公共依赖目录中,并将第一JAR包的关联信息替换为新第一JAR包的关联信息,删除第一JAR包。
示例性的,假设要将log4j从2.16.0升级到2.18.0,那么新第一JAR包即为2.18.0版本的JAR包。在将新第一JAR包动到公共依赖目录后,可以编写脚本微服务目录下的BOOT-INF/lib目录, 寻找有文件名称是 log4j-core-2.16.0.jar,修改log4j-core-2.16.0.jar软链接指向公共依赖目录下的 log4j-core-2.18.0-{md5 sum}.jar,即可完成第一JAR包的关联信息替换为新第一JAR包的关联信息。此时,为了避免依赖冲突,可以将第一JAR包(即旧的JAR包)删除。
S250、重启Spring微服务。
在本申请中,通过替换有漏洞的JAR包,实现了漏洞热修复,避免重新出程序包,流程短且耗时少,大大降低了漏洞修复的成本。
通过以上描述可知,在本申请通过将依赖包移动到公共依赖目录下,大大减少了私有化部署包的体积,并通过使用JAR包的关联信息指向公共依赖目录的依赖包,同时,通过为公共依赖目录下的JAR包增加MD5值,可以避免同名不同内容的JAR包发生冲突,从而可以解决多版本依赖冲突的问题。
同时,本申请通过替换有漏洞的JAR包,实现了漏洞热修复,避免重新出程序包,流程短且耗时少,大大降低了漏洞修复的成本。
图3示出根据本申请一实施例的Spring微服务的管理装置的结构框图。如图3所示,该装置可以包括:
解压单元310,用于获取Spring微服务的私有化部署包;解压私有化部署包,找到启动脚本和所有微服务的JAR包;解压任一JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动;
管理单元320,用于使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,目标JAR包为Spring微服务启动时打包的依赖包;将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成带有MD5值的目标JAR包的关联信息;修改启动脚本指定的JAVA程序入口;将修改后的启动脚本和带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包。
在一种实施方式中,管理单元320具体用于:
遍历/BOOT-INF/lib目录下的每个目标JAR包,计算每个目标JAR包的目标MD5值;
使用目标MD5值重命名每个目标JAR包。
在一种实施方式中,关联信息为指向带有MD5值的目标JAR包的软链,软链的名称为带有MD5值的目标JAR包的原名称。
在一种实施方式中,软链为linux软链接。
在一种实施方式中,管理单元320具体用于:
在启动脚本的命令行中,将启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher。
在一种实施方式中,管理单元320还用于:
获取客户提供的漏洞清单;
从公共依赖目录中,查找修复版本的第一JAR包,第一JAR包为不存在漏洞清单中的漏洞的一版JAR包;
验证第一JAR包通过后,将第一JAR包反馈给客户;
将客户修复漏洞后获得的新第一JAR包移动到公共依赖目录中,并将第一JAR包的关联信息替换为新第一JAR包的关联信息,删除第一JAR包;
重启Spring微服务。
在一种实施方式中,管理单元320具体用于:
对第一JAR包进行冒烟测试,测试无问题时,确定第一JAR包通过验证。
本申请实施例中Spring微服务的管理装置的各单元的功能可以参见上述方法中的对应描述,在此不再赘述。
图4示出根据本申请一实施例的计算机装置的结构框图。如图4所示,该计算机装置包括:存储器410和处理器420,该存储器410中存储指令,该指令由处理器420加载并执行,以实现上述实施例中的Spring微服务的管理方法。存储器410和处理器420的数量可以为一个或多个。
该计算机装置还包括:
通信接口430,用于与外界设备进行通信,进行数据交互传输。
如果存储器410、处理器420和通信接口430独立实现,则存储器410、处理器420和通信接口430可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect ,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture ,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器410、处理器420及通信接口430集成在一块芯片上,则存储器410、处理器420及通信接口430可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,当计算机程序在计算机上运行时,实现本申请实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory ,DRAM) 、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种Spring微服务的管理方法,其特征在于,包括:
获取Spring微服务的私有化部署包;
解压所述私有化部署包,找到启动脚本和所有微服务的JAR包;
解压任一所述JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动;
使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,所述目标JAR包为Spring微服务启动时打包的依赖包;
将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成所述带有MD5值的目标JAR包的关联信息,所述关联信息为指向所述带有MD5值的目标JAR包的软链,所述软链的名称为所述带有MD5值的目标JAR包的原名称,其中,JarLauncher启动时会自动将/BOOT-INF/lib目录下的所有目标JAR包添加到CLASSPATH,类加载器加载/BOOT-INF/lib目录下的目标JAR包时,会通过软链指向公共依赖目录下带有MD5值的目标JAR包;
在所述启动脚本的命令行中,将所述启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher;
将修改后的启动脚本和所述带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包;
所述方法还包括:
获取客户提供的漏洞清单;
从所述公共依赖目录中,查找修复版本的第一JAR包,所述第一JAR包为不存在所述漏洞清单中的漏洞的一版JAR包;
验证所述第一JAR包通过后,将所述第一JAR包反馈给所述客户;
将所述客户修复漏洞后获得的新第一JAR包移动到所述公共依赖目录中,并将所述第一JAR包的关联信息替换为所述新第一JAR包的关联信息,删除所述第一JAR包;
重启所述Spring微服务。
2.根据权利要求1所述的方法,其特征在于,使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包包括:
遍历/BOOT-INF/lib目录下的每个所述目标JAR包,计算每个所述目标JAR包的目标MD5值;
使用所述目标MD5值重命名每个所述目标JAR包。
3.根据权利要求1所述的方法,其特征在于,所述软链为linux软链接。
4.根据权利要求1所述的方法,其特征在于,验证所述第一JAR包通过包括:
对所述第一JAR包进行冒烟测试,测试无问题时,确定所述第一JAR包通过验证。
5.一种Spring微服务的管理装置,其特征在于,包括:
解压单元,用于获取Spring微服务的私有化部署包;解压所述私有化部署包,找到启动脚本和所有微服务的JAR包;解压任一所述JAR包,将微服务启动方式切换成使用暴露在文件***的class文件和JAR包启动;
管理单元,用于使用MD5值,重命名/BOOT-INF/lib目录下的目标JAR包,所述目标JAR包为Spring微服务启动时打包的依赖包;将带有MD5值的目标JAR包移动至公共依赖目录,并在/BOOT-INF/lib目录下生成所述带有MD5值的目标JAR包的关联信息,所述关联信息为指向所述带有MD5值的目标JAR包的软链,所述软链的名称为所述带有MD5值的目标JAR包的原名称,其中,JarLauncher启动时会自动将/BOOT-INF/lib目录下的所有目标JAR包添加到CLASSPATH,类加载器加载/BOOT-INF/lib目录下的目标JAR包时,会通过软链指向公共依赖目录下带有MD5值的目标JAR包;在所述启动脚本的命令行中,将所述启动脚本指定的JAVA程序入口修改为org.springframework.boot.loader.JarLauncher;将修改后的启动脚本和所述带有MD5值的目标JAR包重新压缩,获得Spring微服务的新私有化部署包;
所述管理单元,还用于获取客户提供的漏洞清单;从所述公共依赖目录中,查找修复版本的第一JAR包,所述第一JAR包为不存在所述漏洞清单中的漏洞的一版JAR包;验证所述第一JAR包通过后,将所述第一JAR包反馈给所述客户;将所述客户修复漏洞后获得的新第一JAR包移动到所述公共依赖目录中,并将所述第一JAR包的关联信息替换为所述新第一JAR包的关联信息,删除所述第一JAR包;重启所述Spring微服务。
6.一种计算机装置,其特征在于,包括:存储器和处理器,所述存储器中存储指令,所述指令由处理器加载并执行,以实现如权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,当所述计算机程序在计算机上运行时,实现如权利要求1-4任一项所述的方法。
CN202311559692.9A 2023-11-22 2023-11-22 一种Spring微服务的管理方法、装置及存储介质 Active CN117270887B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311559692.9A CN117270887B (zh) 2023-11-22 2023-11-22 一种Spring微服务的管理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311559692.9A CN117270887B (zh) 2023-11-22 2023-11-22 一种Spring微服务的管理方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN117270887A CN117270887A (zh) 2023-12-22
CN117270887B true CN117270887B (zh) 2024-03-19

Family

ID=89219998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311559692.9A Active CN117270887B (zh) 2023-11-22 2023-11-22 一种Spring微服务的管理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117270887B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235527B1 (en) * 2016-08-11 2019-03-19 Pivotal Software, Inc. Vulnerability notification for live applications
CN110109701A (zh) * 2019-05-14 2019-08-09 重庆商勤科技有限公司 应用部署时的文件配置方法、装置及应用发布方法、装置
CN112434307A (zh) * 2020-06-21 2021-03-02 石高建 结合大数据和物联网的数据处理方法及云计算服务器中心
CN114047930A (zh) * 2021-11-15 2022-02-15 中国电信股份有限公司 软件制品的安全发布方法、***、电子设备和存储介质
CN116069354A (zh) * 2022-12-07 2023-05-05 深圳市四格互联信息技术有限公司 应用程序的升级方法、装置、设备及存储介质
CN116991491A (zh) * 2022-06-28 2023-11-03 重庆市通信建设有限公司 程序插件加载方法、装置、计算机设备及计算机程序

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718364B2 (en) * 1999-08-10 2004-04-06 Sun Microsystems, Inc. Method and apparatus for expedited file downloads in an applet environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235527B1 (en) * 2016-08-11 2019-03-19 Pivotal Software, Inc. Vulnerability notification for live applications
CN110109701A (zh) * 2019-05-14 2019-08-09 重庆商勤科技有限公司 应用部署时的文件配置方法、装置及应用发布方法、装置
CN112434307A (zh) * 2020-06-21 2021-03-02 石高建 结合大数据和物联网的数据处理方法及云计算服务器中心
CN114047930A (zh) * 2021-11-15 2022-02-15 中国电信股份有限公司 软件制品的安全发布方法、***、电子设备和存储介质
CN116991491A (zh) * 2022-06-28 2023-11-03 重庆市通信建设有限公司 程序插件加载方法、装置、计算机设备及计算机程序
CN116069354A (zh) * 2022-12-07 2023-05-05 深圳市四格互联信息技术有限公司 应用程序的升级方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于MD5的加盐消息摘要Java实现;赵一凡等;软件导刊;20180315(第03期);全文 *

Also Published As

Publication number Publication date
CN117270887A (zh) 2023-12-22

Similar Documents

Publication Publication Date Title
RU2580065C2 (ru) Способ и система обновления программного обеспечения
US7814474B2 (en) Updatable mobile handset based on Linux with compression and decompression techniques
US8495615B2 (en) Method, system and computer program for distributing software patches
CN111090452B (zh) 服务环境的切换方法及计算机可读存储介质
CN109558320B (zh) ***测试方法、装置、***、设备及计算机可读存储介质
US9547345B2 (en) System and method for safely updating thin client operating system over a network
US11966302B2 (en) Updating a virtual machine backup
CN113126893A (zh) 扩展***分区的方法、装置、存储介质和计算机设备
US9411618B2 (en) Metadata-based class loading using a content repository
CN113254356A (zh) 一种基于Knative的测试环境管理方法
CN102541593A (zh) 一种远程文件的版本快速比对方法
CN117270887B (zh) 一种Spring微服务的管理方法、装置及存储介质
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
CN111258681B (zh) 一种BeeGFS服务启动方法和装置
CN113094077B (zh) 一种***差分升级方法、装置、智能终端及存储介质
CN112328284A (zh) 应用程序升级方法、***、设备和存储介质
CN111258605A (zh) 渠道客户端的通用升级方法、装置、计算机设备和存储介质
CN112486513B (zh) 一种基于容器的集群管理方法及***
CN114077458A (zh) 应用程序内业务模块启动方法、装置、设备和存储介质
CN115374083A (zh) 数据源的切换方法、装置、电子设备及存储介质
CN112486509A (zh) 一种Jar包组件热部署方法及***
CN111400243A (zh) 基于流水线服务的研发管理***以及文件存储方法、装置
CN116991504B (zh) 一种安卓App多资源动态加载、更新方法和装置以及设备
CN110673869A (zh) 库文件的加载方法、装置及***
CN109996262B (zh) 一种ac启动方法及装置

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
GR01 Patent grant
GR01 Patent grant