CN112491948A - 非侵入式的单体应用微服务化方法、装置及计算机设备 - Google Patents

非侵入式的单体应用微服务化方法、装置及计算机设备 Download PDF

Info

Publication number
CN112491948A
CN112491948A CN202011086170.8A CN202011086170A CN112491948A CN 112491948 A CN112491948 A CN 112491948A CN 202011086170 A CN202011086170 A CN 202011086170A CN 112491948 A CN112491948 A CN 112491948A
Authority
CN
China
Prior art keywords
service
target
micro
calling
webservice
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.)
Granted
Application number
CN202011086170.8A
Other languages
English (en)
Other versions
CN112491948B (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.)
Everybody Information Technology Co Ltd
Original Assignee
Everybody Information 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 Everybody Information Technology Co Ltd filed Critical Everybody Information Technology Co Ltd
Priority to CN202011086170.8A priority Critical patent/CN112491948B/zh
Publication of CN112491948A publication Critical patent/CN112491948A/zh
Application granted granted Critical
Publication of CN112491948B publication Critical patent/CN112491948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提出一种非侵入式的单体应用微服务化方法、装置及计算机设备,该方法包括针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务;接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识;根据服务调用类别,调用与目标服务标识对应的微服务。通过本公开能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。

Description

非侵入式的单体应用微服务化方法、装置及计算机设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种非侵入式的单体应用微服务化方法、装置及计算机设备。
背景技术
随着云计算、大数据、物联网、人工智能、5G移动互联网等新型技术的出现和应用。互联网时代的数字化浪潮扑面而来,传统企业面临着挑战和机遇,企业数字化转型是大势所趋,建设企业微服务体系又是转型的必由之路。从传统“烟筒”式单体应用架构向微服务架构转型,是企业IT转型的重要举措之一。然而如何解决新建微服务架构与单体应用架构之间的交互对接,也成为各企业微服务化建设过程中必须要面对和解决的问题。
相关技术中,通过建立一个协议转换层进行协议转换处理,即新建微服务架构、单体应用架构不直接交互对接,而都通过协议转换层进行交互,或者,新建微服务架构为适配单体应用架构,采取技术架构“降级”,以适配传统的单体应用架构。
这些方式存在投入成本大、调用过程复杂、接口性能损耗和转换风险较高的技术问题。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本公开的目的在于提出一种非侵入式的单体应用微服务化方法、装置及计算机设备,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
为达到上述目的,本公开第一方面实施例提出的非侵入式的单体应用微服务化方法,包括:针对单体应用架构中的各个应用系统配置对应的目标插件,并采用所述目标插件对所述应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个所述应用系统对应的微服务;接收目标服务请求,并解析所述目标服务请求得到服务调用类别和目标服务标识;根据所述服务调用类别,调用与所述目标服务标识对应的微服务。
本公开第一方面实施例提出的非侵入式的单体应用微服务化方法,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
为达到上述目的,本公开第二方面实施例提出的非侵入式的单体应用微服务化装置,包括:配置模块,用于针对单体应用架构中的各个应用系统配置对应的目标插件,并采用所述目标插件对所述应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个所述应用系统对应的微服务;接收模块,用于接收目标服务请求,并解析所述目标服务请求得到服务调用类别和目标服务标识;调用模块,用于根据所述服务调用类别,调用与所述目标服务标识对应的微服务。
本公开第二方面实施例提出的非侵入式的单体应用微服务化装置,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
本公开第三方面实施例提出的非临时性计算机可读存储介质,当所述存储介质中的指令由计算机设备的处理器被执行时,使得计算机设备能够执行一种非侵入式的单体应用微服务化方法,所述方法包括:本公开第一方面实施例提出的非侵入式的单体应用微服务化方法。
本公开第三方面实施例提出的非临时性计算机可读存储介质,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
本公开第四方面实施例提出的计算机设备,所述计算机设备包括:壳体、处理器、存储器、电路板和电源电路,其中,所述电路板安置在所述壳体围成的空间内部,所述处理器和所述存储器设置在所述电路板上;所述电源电路,用于为所述计算机设备的各个电路或器件供电;所述存储器用于存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行本公开第一方面实施例提出的非侵入式的单体应用微服务化方法。
本公开第四方面实施例提出的计算机设备,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本公开一实施例提出的非侵入式的单体应用微服务化方法的流程示意图;
图2为本公开实施例的非侵入式的单体应用微服务化装置结构图;
图3是本公开另一实施例提出的非侵入式的单体应用微服务化方法的流程示意图;
图4为本公开实施例中存量系统与微服务系统交互示意图;
图5为本公开实施例中对服务端系统进行微服务转换的流程示意图;
图6为本公开实施例中对客户端系统进行微服务转换的流程示意图;
图7为本公开实施例中对客户端系统结合服务端系统进行微服务转换的流程示意图;
图8是本公开一实施例提出的非侵入式的单体应用微服务化装置的结构示意图;
图9是本公开一个实施例提出的计算机设备的结构示意图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本公开,而不能理解为对本公开的限制。相反,本公开的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1是本公开一实施例提出的非侵入式的单体应用微服务化方法的流程示意图。
本实施例以非侵入式的单体应用微服务化方法被配置为非侵入式的单体应用微服务化装置中来举例说明。
本实施例中非侵入式的单体应用微服务化方法可以被配置在非侵入式的单体应用微服务化装置中,非侵入式的单体应用微服务化装置可以设置在服务器中,或者也可以设置在计算机设备中,本公开实施例对此不作限制。
本实施例以非侵入式的单体应用微服务化方法被配置在计算机设备中为例。
需要说明的是,本公开实施例的执行主体,在硬件上可以例如为服务器或者计算机设备中的中央处理器(Central Processing Unit,CPU),在软件上可以例如为服务器或者计算机设备中的相关的后台服务,对此不作限制。
参见图1,该方法包括:
S101:针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务。
S102:接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识。
S103:根据服务调用类别,调用与目标服务标识对应的微服务。
针对上述S101-S103的整体步骤的描述说明可以具体如下:
在本公开的一些实施例中,目标插件为Ninja插件,或者,也可以为其他任意可能的插件,对此不做限制。
在本公开的一些实施例中,采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,可以具体是采用目标插件,并基于JavaAgent对WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件;根据目标字节码文件生成微服务的函数接口和实现类;将WebService服务的调用接口与函数接口相关联,并根据关联后的调用接口、函数接口,以及实现类生成微服务,从而完成非侵入式的微服务转换。
参见图2,图2为本公开实施例的非侵入式的单体应用微服务化装置结构图,包括:传统架构系统、非侵入式平台,以及微服务化之后的各个微服务系统,本公开实施例可以具体应用在计算机设备中的非侵入式平台中,该非侵入式平台可以提供这些服务:接入控制、服务处理、规则处理、数据处理、分布式配置中心,以及注册中心。
在采用上述非侵入式的单体应用微服务化装置执行非侵入式的单体应用微服务化方法时,可以先针对单体应用架构中的各个应用系统配置对应的Ninja插件,假设传统架构系统包括客户端系统和服务端系统,而客户端系统包括:系统A和系统B,服务端系统包括:系统A和系统B,则可以针对每个系统,均配置一个对应的Ninja插件,从而采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务。
针对上述图2中各个服务的功能描述可以具体如下:
Ninja插件:Ninja插件是提供给传统架构系统的软件安装包。系统通过安装Ninja插件,代码零改动即可完成微服务化升级。其实现原理是,基于JavaAgent对业务系统进行字节码植入,通过对目标系统字节码文件增强,实现对原有WebService服务的转换。
注册中心:注册中心用于管理转化为微服务后的服务实例,包括服务存储、服务注册、动态服务发现等。使用Nacos作为中间件,部署在容器中,能快速弹性扩容,支持高并发的业务场景。
分布式配置中心:提供可配置化的存储服务,使系统接入快速完成。主要包含客户端配置、服务端配置、服务映射关系等。
接入控制:对接入目标系统的应用鉴权、安全控制、监控预警。
服务处理:实现把传统架构系统转化成微服务化的服务处理,包括服务发布、服务订阅、服务匹配等,客户端系统进行非侵入式微服务转换后,当服务调用发生异常时,自动降级为原Webservice服务继续调用,保证业务不受影响,系统正常运行。
规则处理:实现传统框架到微服务框架间协议转换规则,定制不同协议的转换标准。
数据处理:实现交易数据的存储、批量处理及可视化报表。
本公开实施例中,可以基于Java虚拟机执行非侵入式的单体应用微服务化方法,其中,当基于Java虚拟机执行方法时,各个应用系统处于非侵入式运行状态,由此,能够有效地降低微服务转换的实现成本,在成本和风险上实现“双降”,也即是说,能够有效降低新建系统建设自身投入以外的附加成本投入,降低了老旧系统转换带来的系统风险。
基于上述图2中的非侵入式的单体应用微服务化装置,本公开实施例还提供一种非侵入式的单体应用微服务化方法,参见图3,包括以下步骤:
S301:采用目标插件,并基于JavaAgent对WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件。
可选的,一些实施例中,采用目标插件,并基于JavaAgent对WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件,包括:采用目标插件,并基于JavaAgent从WebService服务的配置中心获取服务配置信息;解析服务配置信息得到字节码文件,字节码文件包括:WebService服务的实现类、服务类型;对WebService服务的实现类、服务类型进行协议转换,并根据转换后的WebService服务的实现类、服务类型生成目标字节码文件。
上述在基于JavaAgent从WebService服务的配置中心获取服务配置信息之后,还可以是将配置中心缓存至本地,从而能够便于后续对配置信息的调用和解析,提升单体应用微服务化效率。
S302:根据目标字节码文件生成微服务的函数接口和实现类。
S303:将WebService服务的调用接口与函数接口相关联,根据关联后的调用接口、函数接口,以及实现类生成微服务,从而完成非侵入式的微服务转换。
也即是说,可以采用上述的目标插件,基于JavaAgent对业务系统提供的WebService服务进行字节码植入,通过对目标系统提供的WebService服务的字节码文件增强,实现对原有WebService服务的转换。
本公开实施例中转换后的微服务可以具体为dubbo服务或者spring cloud服务,对此不做限制。
本公开实施例可以应用在对客户端系统进行微服务转换的过程中,或者,也可以应用在对服务端系统进行微服务转换的过程中,或者,也可以应用在同时对客户端系统和服务端系统进行微服务转换的过程中,对此不做限制。
针对上述图3所示可以具体举例说明如下:
假设本公开应用在对服务端系统进行微服务转换的过程中,以目标插件为Ninja插件进行示例,则可以执行下述步骤,首先在非侵入式平台为目标系统分配系统唯一标识AppCode,并将相应配置信息存储到分布式配置中心,目标系统安装Ninja插件,安装成功后重启服务;服务端启动流程:Ninja插件通过字节码插桩方式,获取接入系统的服务提供方,根据AppCode到分布式配置中心获取该应用配置信息,并存入本地缓存;Ninja插件获取缓存中WebService的实现方式,服务类型,并通过Javassist技术取对应服务列表;在缓存中配置信息获取参数映射关系,完成参数转换及协议类型转换。根据参数、服务名、协议转化类型进行字节码增强,生成对应服务接口及实现类;将新生成接口和原接口对应关系及相关参数存入缓存;将生成的服务注册到的注册中心,服务端启动到此完毕,完成非侵入式微服务转换。
假设本公开应用在对客户端系统进行微服务转换的过程中,以目标插件为Ninja插件进行示例,则可以执行下述步骤,首先针对每个目标系统安装相应的Ninja插件,在非侵入式平台为目标系统分配系统唯一标识AppCode,并将相应配置信息存储到分布式配置中心;目标系统安装Ninja插件,安装成功后重启服务;服务端启动流程:Ninja插件通过字节码插桩到接入系统服务的调用方,根据AppCode到分布式配置中心获取该应用配置信息,并存入本地缓存;Ninja插件根据缓存中配置信息获取服务类型、WebService实现方式等;根据缓存中配置信息获取注册中心类型和服务提供方AppCode;根据服务名称匹配规则获取对应服务提供方服务,并将原方法和服务提供方方法存入缓存;在缓存中获取待转化方法的参数映射关系、协议转化类型;根据标准化参数、服务名、协议转化类型、AppCode等生成服务接口;将原接口为新生成接口存入缓存;根据缓存中配置信息获取发布服务的注册中心类型;客户端启动到此完毕。
一些实施例中,上述根据服务调用类别,调用与目标服务标识对应的微服务的步骤,还可以包括:如果服务调用类别为微服务调用类别,则获取与目标服务标识对应的微服务的参数映射规则;采用参数映射规则,处理目标服务请求携带的调用参数;采用处理后的调用参数,调用与目标服务标识对应的微服务。
举例而言,客户端发起的服务调用类别为微服务调用类别中的Dubbo服务调用,则服务端接收客户端请求后,可以在参数映射缓存中获取到参数映射规则,采用参数映射规则,处理目标服务请求携带的调用参数,对参数进行标准化转换并赋值,并采用处理后的调用参数发起Dubbo服务调用;将调用请求发送到WebService服务提供方,服务提供方接收调用请求,并进行相应的处理,从而将处理结果返回至客户端。
另一些实施例中,根据服务调用类别,调用与目标服务标识对应的微服务,包括:如果服务调用类别为WebService服务调用类别,则采用目标插件对目标服务标识对应的微服务进行可用性验证;如果验证通过,则调用与目标服务标识对应的微服务;如果验证未通过,则直接调用与目标服务标识对应的微服务化之前的WebService服务。
举例而言,用户发起WebService调用,Ninja插件可以截获请求,验证Dubbo服务提供方发布服务是否可用,根据参数映射缓存中获取到参数映射规则,对参数进行标准化转换并赋值,从缓存中根据方法名匹配已发布的服务提供方服务,发起调用,调用与目标服务标识对应的微服务,将结果返回给原WebService客户端。
本实施例中,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
本公开实施例与现有技术相比存在的有益效果是:发明的目的在于提供一种非侵入式微服务转换的方法及系统,使用这种方法及系统后,可以使传统架构系统在代码零改动的情况下直接适配微服务架构系统,从而避免因协议适配对新建系统或存量系统的转换;降低新建系统的投入成本,实现降本增效;避免因协议转换层造成系统整体调用链路过长,产生不必要的性能损耗;同时降低了系统的复杂度,把服务调用性能提升30%左右;并且由于零改动实现微服务化转换的设计,所以保障了被转换系统业务逻辑的稳定性,降低了风险。使用本公开的技术和系统后,存量系统与微服务系统交互示意图可以参见图4,图4为本公开实施例中存量系统与微服务系统交互示意图,其中的存量系统A、B、C即对应于上述转换之前的目标系统。
针对本公开实施例中具体的应用场景可以说明如下:
假设本公开应用在对服务端系统进行微服务转换的过程中,则可以参见图5,图5为本公开实施例中对服务端系统进行微服务转换的流程示意图,服务启动流程:接入非侵入式平台,服务端系统第一次启动时,目标插件获取目标接口服务列表,并转化为标准化参数Dubbo服务及实现类,而后执行服务调用流程:A、客户端系统发起交易请求,直接调用Ninja插件的标准化参数服务,进行业务处理,B、业务处理后返回交易结果,客户端收到返回结果,交易结束。
假设本公开应用在对客户端系统进行微服务转换的过程中,则可以参见图6,图6为本公开实施例中对客户端系统进行微服务转换的流程示意图,非侵入式转换后,客户端发起交易,可以采用Ninja插件结合标准化参数Dubbo服务发起调用,服务端接收业务请求后进行业务处理,业务处理后返回处理结果,客户端接收到相应的处理结果,则交易结束。
假设本公开应用在对客户端系统和服务端系统进行微服务转换的过程中,则可以参见图7,图7为本公开实施例中对客户端系统结合服务端系统进行微服务转换的流程示意图,服务端启动流程:接入非侵入式项目后,服务端系统第一次启动时,Ninja获取目标接口服务列表,并转化为标准化参数Dubbo服务及实现类;调用流程:A、客户端发起业务交易;B、Ninja使用标准化参数Dubbo服务发起调用服务端已生成的标准化参数Dubbo服务;C、服务端业务处理,并返回交易结果。D、若交易成功,则返回成功交易结果,流程结束。若交易失败,客户端Ninja将目标服务降级为对应的原WebService接口调用,服务端进行业务处理。E、服务端返回WebService交易结果,流程结束。
图8是本公开一实施例提出的非侵入式的单体应用微服务化装置的结构示意图。
参见图8,该装置800包括:
配置模块801,用于针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务;
接收模块802,用于接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识;
调用模块803,用于根据服务调用类别,调用与目标服务标识对应的微服务。
在本公开的一些实施例中,调用模块803,具体用于:
如果服务调用类别为微服务调用类别,则获取与目标服务标识对应的微服务的参数映射规则;
采用参数映射规则,处理目标服务请求携带的调用参数;
采用处理后的调用参数,调用与目标服务标识对应的微服务。
在本公开的一些实施例中,调用模块803,还用于:
如果服务调用类别为WebService服务调用类别,则采用目标插件对目标服务标识对应的微服务进行可用性验证;
如果验证通过,则调用与目标服务标识对应的微服务;
如果验证未通过,则直接调用与目标服务标识对应的微服务化之前的WebService服务。
在本公开的一些实施例中,配置模块801,具体用于:
采用目标插件,并基于JavaAgent对WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件;
根据目标字节码文件生成微服务的函数接口和实现类;
将WebService服务的调用接口与函数接口相关联,并根据关联后的调用接口、函数接口,以及实现类生成微服务,从而完成非侵入式的微服务转换。
在本公开的一些实施例中,配置模块801,还用于:
采用目标插件,并基于JavaAgent从WebService服务的配置中心获取服务配置信息;
解析服务配置信息得到字节码文件,字节码文件包括:WebService服务的实现类、服务类型;
对WebService服务的实现类、服务类型进行协议转换,并根据转换后的WebService服务的实现类、服务类型生成目标字节码文件。
在本公开的一些实施例中,微服务为dubbo服务或者spring cloud服务。
在本公开的一些实施例中,基于Java虚拟机执行非侵入式的单体应用微服务化装置,其中,当基于Java虚拟机执行装置时,各个应用系统处于非侵入式运行状态。
在本公开的一些实施例中,目标插件为Ninja插件。
需要说明的是,前述图1-图7实施例中对非侵入式的单体应用微服务化方法实施例的解释说明也适用该实施例的非侵入式的单体应用微服务化装置800,其实现原理类似,此处不再赘述。
本实施例中,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
图9是本公开一个实施例提出的计算机设备的结构示意图。
参见图9,本实施例的计算机设备900包括壳体901、处理器902、存储器903、电路板904和电源电路905,其中,电路板904安置在壳体901围成的空间内部,处理器902和存储器903设置在电路板904上;电源电路905,用于为计算机设备900的各个电路或器件供电;存储器903用于存储可执行程序代码;处理器902通过读取存储器903中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行:
针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务;
接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识;
根据服务调用类别,调用与目标服务标识对应的微服务。
需要说明的是,前述图1-图7实施例中对非侵入式的单体应用微服务化方法实施例的解释说明也适用该实施例的计算机设备900,其实现原理类似,此处不再赘述。
本实施例中,通过针对单体应用架构中的各个应用系统配置对应的目标插件,并采用目标插件对应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个应用系统对应的微服务,接收目标服务请求,并解析目标服务请求得到服务调用类别和目标服务标识,以及根据服务调用类别,调用与目标服务标识对应的微服务,能够实现使单体应用架构的代码在零改动的情况直接适配微服务架构,有效地提升微服务架构和单体应用架构的对接适配效率和对接适配性能。
为了实现上述实施例,本公开实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例的非侵入式的单体应用微服务化方法。
需要说明的是,在本公开的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (18)

1.一种非侵入式的单体应用微服务化方法,其特征在于,所述方法包括:
针对单体应用架构中的各个应用系统配置对应的目标插件,并采用所述目标插件对所述应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个所述应用系统对应的微服务;
接收目标服务请求,并解析所述目标服务请求得到服务调用类别和目标服务标识;
根据所述服务调用类别,调用与所述目标服务标识对应的微服务。
2.如权利要求1所述的方法,其特征在于,所述根据所述服务调用类别,调用与所述目标服务标识对应的微服务,包括:
如果所述服务调用类别为微服务调用类别,则获取与所述目标服务标识对应的微服务的参数映射规则;
采用所述参数映射规则,处理所述目标服务请求携带的调用参数;
采用处理后的所述调用参数,调用与所述目标服务标识对应的微服务。
3.如权利要求1所述的方法,其特征在于,所述根据所述服务调用类别,调用与所述目标服务标识对应的微服务,包括:
如果所述服务调用类别为WebService服务调用类别,则采用所述目标插件对所述目标服务标识对应的微服务进行可用性验证;
如果验证通过,则调用与所述目标服务标识对应的微服务;
如果验证未通过,则直接调用与所述目标服务标识对应的微服务化之前的所述WebService服务。
4.如权利要求1所述的方法,其特征在于,所述采用所述目标插件对所述应用系统提供的WebService服务进行非侵入式的微服务转换,包括:
采用所述目标插件,并基于JavaAgent对所述WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件;
根据所述目标字节码文件生成微服务的函数接口和实现类;
将所述WebService服务的调用接口与所述函数接口相关联,并根据关联后的所述调用接口、所述函数接口,以及所述实现类生成所述微服务,从而完成所述非侵入式的微服务转换。
5.如权利要求4所述的方法,其特征在于,所述采用所述目标插件,并基于JavaAgent对所述WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件,包括:
采用所述目标插件,并基于JavaAgent从所述WebService服务的配置中心获取服务配置信息;
解析所述服务配置信息得到字节码文件,所述字节码文件包括:所述WebService服务的实现类、服务类型;
对所述WebService服务的实现类、服务类型进行协议转换,并根据转换后的所述WebService服务的实现类、服务类型生成所述目标字节码文件。
6.如权利要求1-5任一项所述的方法,其特征在于,所述微服务为dubbo服务或者spring cloud服务。
7.如权利要求1-5任一项所述的方法,其特征在于,基于Java虚拟机执行所述非侵入式的单体应用微服务化方法,其中,当基于所述Java虚拟机执行所述方法时,各个所述应用系统处于非侵入式运行状态。
8.如权利要求1-5任一项所述的方法,其特征在于,所述目标插件为Ninja插件。
9.一种非侵入式的单体应用微服务化装置,其特征在于,所述装置包括:
配置模块,用于针对单体应用架构中的各个应用系统配置对应的目标插件,并采用所述目标插件对所述应用系统提供的WebService服务进行非侵入式的微服务转换,得到与各个所述应用系统对应的微服务;
接收模块,用于接收目标服务请求,并解析所述目标服务请求得到服务调用类别和目标服务标识;
调用模块,用于根据所述服务调用类别,调用与所述目标服务标识对应的微服务。
10.如权利要求9所述的装置,其特征在于,所述调用模块,具体用于:
如果所述服务调用类别为微服务调用类别,则获取与所述目标服务标识对应的微服务的参数映射规则;
采用所述参数映射规则,处理所述目标服务请求携带的调用参数;
采用处理后的所述调用参数,调用与所述目标服务标识对应的微服务。
11.如权利要求9所述的装置,其特征在于,所述调用模块,还用于:
如果所述服务调用类别为WebService服务调用类别,则采用所述目标插件对所述目标服务标识对应的微服务进行可用性验证;
如果验证通过,则调用与所述目标服务标识对应的微服务;
如果验证未通过,则直接调用与所述目标服务标识对应的微服务化之前的所述WebService服务。
12.如权利要求9所述的装置,其特征在于,所述配置模块,具体用于:
采用所述目标插件,并基于JavaAgent对所述WebService服务对应的字节码文件进行字节码植入,得到目标字节码文件;
根据所述目标字节码文件生成微服务的函数接口和实现类;
将所述WebService服务的调用接口与所述函数接口相关联,并根据关联后的所述调用接口、所述函数接口,以及所述实现类生成所述微服务,从而完成所述非侵入式的微服务转换。
13.如权利要求12所述的装置,其特征在于,所述配置模块,还用于:
采用所述目标插件,并基于JavaAgent从所述WebService服务的配置中心获取服务配置信息;
解析所述服务配置信息得到字节码文件,所述字节码文件包括:所述WebService服务的实现类、服务类型;
对所述WebService服务的实现类、服务类型进行协议转换,并根据转换后的所述WebService服务的实现类、服务类型生成所述目标字节码文件。
14.如权利要求9-13任一项所述的装置,其特征在于,所述微服务为dubbo服务或者spring cloud服务。
15.如权利要求9-13任一项所述的装置,其特征在于,基于Java虚拟机执行所述非侵入式的单体应用微服务化装置,其中,当基于所述Java虚拟机执行所述装置时,各个所述应用系统处于非侵入式运行状态。
16.如权利要求9-13任一项所述的装置,其特征在于,所述目标插件为Ninja插件。
17.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一项所述的非侵入式的单体应用微服务化方法。
18.一种计算机设备,所述计算机设备包括壳体、处理器、存储器、电路板和电源电路,其中,所述电路板安置在所述壳体围成的空间内部,所述处理器和所述存储器设置在所述电路板上;所述电源电路,用于为所述计算机设备的各个电路或器件供电;所述存储器用于存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行如权利要求1-8中任一项所述的非侵入式的单体应用微服务化方法。
CN202011086170.8A 2020-10-12 2020-10-12 非侵入式的单体应用微服务化方法、装置及计算机设备 Active CN112491948B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011086170.8A CN112491948B (zh) 2020-10-12 2020-10-12 非侵入式的单体应用微服务化方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011086170.8A CN112491948B (zh) 2020-10-12 2020-10-12 非侵入式的单体应用微服务化方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN112491948A true CN112491948A (zh) 2021-03-12
CN112491948B CN112491948B (zh) 2024-05-24

Family

ID=74926768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011086170.8A Active CN112491948B (zh) 2020-10-12 2020-10-12 非侵入式的单体应用微服务化方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN112491948B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691635A (zh) * 2021-09-01 2021-11-23 中电金信软件有限公司 调用微服务的方法、装置、电子设备和可读存储介质
CN114244654A (zh) * 2021-12-20 2022-03-25 中国平安财产保险股份有限公司 一种url的转发方法、装置、设备及计算机存储介质
CN115729526A (zh) * 2022-11-29 2023-03-03 北京京航计算通讯研究所 一种单体和微服务一体化软件开发方法
CN116775171A (zh) * 2023-08-25 2023-09-19 太平金融科技服务(上海)有限公司深圳分公司 一种架构切换方法、装置、电子设备及存储介质
CN117076007A (zh) * 2023-10-17 2023-11-17 苏州元脑智能科技有限公司 降低中台架构代码侵入的方法、装置及中台系统
CN117424829A (zh) * 2023-10-31 2024-01-19 慧之安信息技术股份有限公司 一种基于微服务架构的modbus设备接入方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108279926A (zh) * 2018-01-10 2018-07-13 浙江网新恒天软件有限公司 一种单体应用微服务化的方法
CN108667925A (zh) * 2018-05-04 2018-10-16 北京天元创新科技有限公司 一种web应用无缝接入分布式系统的方法和系统
US10289457B1 (en) * 2016-03-30 2019-05-14 Quest Software Inc. Systems and methods for dynamic discovery of container-based microservices
CN109981561A (zh) * 2019-01-17 2019-07-05 华南理工大学 单体架构系统迁移到微服务架构的用户认证方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289457B1 (en) * 2016-03-30 2019-05-14 Quest Software Inc. Systems and methods for dynamic discovery of container-based microservices
CN108279926A (zh) * 2018-01-10 2018-07-13 浙江网新恒天软件有限公司 一种单体应用微服务化的方法
CN108667925A (zh) * 2018-05-04 2018-10-16 北京天元创新科技有限公司 一种web应用无缝接入分布式系统的方法和系统
CN109981561A (zh) * 2019-01-17 2019-07-05 华南理工大学 单体架构系统迁移到微服务架构的用户认证方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113691635A (zh) * 2021-09-01 2021-11-23 中电金信软件有限公司 调用微服务的方法、装置、电子设备和可读存储介质
CN114244654A (zh) * 2021-12-20 2022-03-25 中国平安财产保险股份有限公司 一种url的转发方法、装置、设备及计算机存储介质
CN114244654B (zh) * 2021-12-20 2023-09-26 中国平安财产保险股份有限公司 一种url的转发方法、装置、设备及计算机存储介质
CN115729526A (zh) * 2022-11-29 2023-03-03 北京京航计算通讯研究所 一种单体和微服务一体化软件开发方法
CN116775171A (zh) * 2023-08-25 2023-09-19 太平金融科技服务(上海)有限公司深圳分公司 一种架构切换方法、装置、电子设备及存储介质
CN116775171B (zh) * 2023-08-25 2023-12-05 太平金融科技服务(上海)有限公司深圳分公司 一种架构切换方法、装置、电子设备及存储介质
CN117076007A (zh) * 2023-10-17 2023-11-17 苏州元脑智能科技有限公司 降低中台架构代码侵入的方法、装置及中台系统
CN117076007B (zh) * 2023-10-17 2024-02-02 苏州元脑智能科技有限公司 降低中台架构代码侵入的方法、装置及中台系统
CN117424829A (zh) * 2023-10-31 2024-01-19 慧之安信息技术股份有限公司 一种基于微服务架构的modbus设备接入方法和系统

Also Published As

Publication number Publication date
CN112491948B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
CN112491948B (zh) 非侵入式的单体应用微服务化方法、装置及计算机设备
CN110377438B (zh) 跨进程通信接口的路由方法、装置和系统
CN108881111B (zh) 一种实现多租户系统的方法及装置
US8874640B2 (en) Method and system for reducing service overhead in service oriented architectures
US20020184374A1 (en) Distributed environment type computer system able to achieve high speed consecutive message communications by service layer
CN113569285B (zh) 身份认证与鉴权的方法、装置、系统、设备及存储介质
CN111064626B (zh) 配置更新方法、装置、服务器及可读存储介质
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
CN112073448A (zh) 一种双系统终端的服务隔离方法和装置
CN111090442B (zh) 一种应用更新方法、装置和存储介质
US9542357B2 (en) Method and apparatus for updating a user terminal
CN111464646A (zh) 信息处理方法、装置、电子设备和介质
KR20210040322A (ko) 스케줄링 방법, 장치, 기기, 기록 매체 및 컴퓨터 프로그램
US8464218B2 (en) Method port arrangement and configuration method thereof for robot software component
CN112269601B (zh) 一种bmc及其部件资产信息管理方法、装置和存储介质
CN111353880B (zh) 一种交易服务化封装方法、装置及系统
CN113973126A (zh) 车端子系统间的通信方法、装置、电子设备及介质
CN114489754A (zh) 可配置服务管理方法及装置
CN116089020B (zh) 虚拟机运行方法、扩容方法、扩容系统
CN112685084B (zh) 资源配置方法、装置、终端及存储介质
WO2024212598A1 (zh) 一种无侵入的微服务系统权限控制方法及系统
CN113703878B (zh) 组件的启动方法和装置、存储介质及电子设备
CN115460293A (zh) 数据处理方法、数据交互系统、电子设备及存储介质
CN116302174A (zh) 基于云应用的插件管理方法及装置
CN116782199A (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
GR01 Patent grant
GR01 Patent grant