CN111858101A - 面向云架构系统的适配方法、装置、设备及存储介质 - Google Patents
面向云架构系统的适配方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111858101A CN111858101A CN202010742128.0A CN202010742128A CN111858101A CN 111858101 A CN111858101 A CN 111858101A CN 202010742128 A CN202010742128 A CN 202010742128A CN 111858101 A CN111858101 A CN 111858101A
- Authority
- CN
- China
- Prior art keywords
- adaptation
- interface
- service
- accessed
- cloud
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及研发管理,公开了一种面向云架构系统的适配方法、装置、设备及存储介质,该方法通过接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型,根据所述待访问接口类型选取与所述服务端配套的服务适配层,根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,通过配套的服务适配层,对接口进行抽象,无需考虑云环境各产品的访问差异性,依赖适配接口进行访问,实现兼容;接收所述服务端反馈的返回结果,并对所述返回结果进行处理,实现对各种产品兼容,从而实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问。
Description
技术领域
本发明涉及研发管理技术领域,尤其涉及一种面向云架构系统的适配方法、装置、设备及存储介质。
背景技术
在面向云架构的业务系统开发中,除了要引入基础框架,还需要引入云上分布式服务框架,以及对云资源访问的框架集成。对于分布式服务框架,各云厂商,比如阿里云,腾讯云,平安云,华为云等,均有自己的产品,各产品之前存在差异。此外,各云厂商提供的云资源,比如缓存,消息队列和非结构化存储等,其访问方式也存在一些差异。由于各云厂商的分布式消息队列产品在访问方式方面不同,应用系统在开发中通常会和一种产品的访问进行绑定,在部署到其他云厂商上时,无法切换到新的云上分布式消息队列上,也无法实现不同云厂商的云资源访问。因此,在面对不同的云厂商,如何实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问,实现兼容适配是亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种面向云架构系统的适配方法、装置、设备及存储介质,旨在解决现有技术中面对不同的云厂商,无法自动切换到新的云上分布式消息队列以及无法实现不同的云资源访问的技术问题。
为实现上述目的,本发明提供一种面向云架构系统的适配方法,所述面向云架构系统的适配方法包括以下步骤:
接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型;
根据所述待访问接口类型选取与所述服务端配套的服务适配层;
根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端;
接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
优选地,所述根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端之后,还包括:
在接口访问时添加预设Java注解;
在所述预设Java注解中添加AOP拦截;
根据所述AOP拦截将所述访问请求进行拦截,并将拦截的访问请求代理至对应的服务适配代码上。
优选地,所述根据所述待访问接口类型选取与所述服务端配套的服务适配层之前,所述面向云架构系统的适配方法还包括:
编写与待访问接口类型对应的所述适配程序;
对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层。
优选地,所述根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,包括:
根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
优选地,所述对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层,包括:
通过spring的xml方式对所述适配程序进行配置,获得与待访问接口类型对应的服务适配层。
优选地,所述根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端,包括:
根据所述服务适配层获取对应的协议方式,使用spring框架,依赖入注入预设实例,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
优选地,所述待访问接口类型包括:分布式缓存接口,分布式消息队列接口,非结构化云存储接口,分布式服务接口或业务网关接口。
此外,为实现上述目的,本发明还提出一种面向云架构系统的适配设备,所述面向云架构系统的适配设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的面向云架构系统的适配程序,所述面向云架构系统的适配程序配置为实现如上文所述的面向云架构系统的适配方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有面向云架构系统的适配程序,所述面向云架构系统的适配程序被处理器执行时实现如上文所述的面向云架构系统的适配方法的步骤。
此外,为实现上述目的,本发明还提出一种面向云架构系统的适配装置,所述面向云架构系统的适配装置包括:
确定模块,用于接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型;
选取模块,用于根据所述待访问接口类型选取与所述服务端配套的服务适配层;
发送模块,用于根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端;
处理模块,用于接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
本发明中,通过接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型,根据所述待访问接口类型选取与所述服务端配套的服务适配层,根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,通过配套的服务适配层,对接口进行抽象,无需考虑云环境各产品的访问差异性,依赖适配接口进行访问,实现兼容;接收所述服务端反馈的返回结果,并对所述返回结果进行处理,实现对各种产品兼容,从而实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的面向云架构系统的适配设备的结构示意图;
图2为本发明面向云架构系统的适配方法第一实施例的流程示意图;
图3为本发明面向云架构系统的适配方法第二实施例的流程示意图;
图4为本发明面向云架构系统的适配装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的面向云架构系统的适配设备结构示意图。
如图1所示,该面向云架构系统的适配设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对面向云架构系统的适配设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及面向云架构系统的适配程序。
在图1所示的面向云架构系统的适配设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接用户设备;所述面向云架构系统的适配设备通过处理器1001调用存储器1005中存储的面向云架构系统的适配程序,并执行本发明实施例提供的面向云架构系统的适配方法。
基于上述硬件结构,提出本发明面向云架构系统的适配方法的实施例。
参照图2,图2为本发明面向云架构系统的适配方法第一实施例的流程示意图,提出本发明面向云架构系统的适配方法第一实施例。
在第一实施例中,所述面向云架构系统的适配方法包括以下步骤:
步骤S10:接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型。
应理解的是,本实施例的执行主体是所述面向云架构系统的适配设备,其中,所述面向云架构系统的适配设备可为个人电脑或服务器等电子设备,本实施例对此不加以限制。所述访问请求为云资源访问请求,从所述访问请求中提取待访问的云资源类型,根据云资源类型查找对应的待访问接口类型。由于各厂商对云平台资源的访问存在差异性,为了保证业务逻辑父模块中访问云平台资源不和具体厂商进行绑定,通过对常见云资源,包括分布式缓存,分布式消息队列,分布式非结构化存储,分布式服务和业务网关等的访问接口进行抽象,将业务逻辑编写面向抽象接口进行编程,对抽象接口实现放到了对应的云适配子模块中,获得所述待访问接口类型。例如,在业务逻辑中,分布式消息队列会用到两个接口:消息发布接口,消息订阅接口。各云厂商的分布式消息队列的客户端程序,均提供了上述两个API。基于此特点,其实现方式为一个抽象一个接口类MQServie,里面包含消息发布方法(produce)和消息订阅方法(consum),以及多套实现类:AliMQService实现了对阿里云提供的消息队列的访问,TencentMQService实现了对腾讯云提供的消息队列的访问,PinganMQService实现了对平安云提供的消息队列的访问。
步骤S20:根据所述待访问接口类型选取与所述服务端配套的服务适配层。
需要说明的是,通过预设项目对象模型设置所述服务适配层,所述服务适配层包括云适配子模块。所述预设项目对象模型可以是maven,基于maven的父子工程结构的特点,使用模块化的结构,创建父模块以及对应的云适配子模块,所述适配层包括所述父模块和所述云适配子模块。例如,业务逻辑父模块为yun-biz,面向各云厂商的各个云适配子模块为adapt-ali支持阿里云,adapt-generic支持开源的云技术,adapt-pingan支持平安云,adapt-huawei支持华为云,adapt-tencent支持腾讯云。其中,模块之间的父子关系,是通过maven的pom文件的parent进行指定。例如,适配模块yun-main/adapt-ali/pom.xml,定义了其父工程为yun-biz。所述待访问接口类型与所述服务端配套的服务适配层之间存在对应关系,则可通过所述待访问接口类型选取与所述服务端配套的服务适配层。在本实施例中,所述待访问接口类型包括:分布式缓存接口,分布式消息队列接口,非结构化云存储接口,分布式服务接口或业务网关接口。
步骤S30:根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端。
在具体实现中,通过为服务消费方配套不同的服务适配层,在应用系统运行中,根据配套的分布式服务采用的协议,采用对应的RPC或者RESTful协议方式,将数据发送到对方应用,并处理返回结果。在业务逻辑中,通过在云厂商适配子模块中运行maven命令进行打包,可以生成在该云厂商分布式环境下运行的应用程序包。通过分层的目录结构,应用程序可以打包不同的适配程序,访问不同云平台资源。通过这种方式,也可以独立扩展出更多的云适配方案,满足各种云平台运行的要求,而无需修改任何业务代码。例如,某需要增加某云厂商xxx的云平台支持,只需要根据下面的步骤即可完成:在模板工程的yun-main目录下新建一个adapt-xxx,并且在其pom文件中定义其父工程为yun-biz。
步骤S40:接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
可理解的是,所述服务端在接收到所述待访问数据,对所述待访问数据进行处理,生成所述返回结果,所述面向云架构系统的适配设备对所述返回结果进行进行处理,从而完成服务端的访问过程。
在本实施例中,通过接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型,根据所述待访问接口类型选取与所述服务端配套的服务适配层,根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,通过配套的服务适配层,对接口进行抽象,无需考虑云环境各产品的访问差异性,依赖适配接口进行访问,实现兼容;接收所述服务端反馈的返回结果,并对所述返回结果进行处理,实现对各种产品兼容,从而实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问。
参照图3,图3为本发明面向云架构系统的适配方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明面向云架构系统的适配方法的第二实施例。
在第二实施例中,所述步骤S30之后,还包括:
步骤S301:在接口访问时添加预设Java注解。
举例进行说明,在所述接口类型是分布式服务接口时,对所述云适配子模块的分布式服务接口上添加元数据,获得适配程序,对所述配程序进行参数配置,获得适配接口。
应理解的是,所述Java注解又称元数据,在分布式服务的场景下,基于java语言开发的服务消费方,可以透明的访问服务提供方提供的分布式服务,而无需限定服务提供方是远程过程调用协议(Remote Procedure Call Protocol,RPC)或者是架构样式的网络系统RESTful方式提供的接口,即RPC和RESTful一致性访问框架。其实现方式为,通过在java接口类中添加java注解来定义服务提供方提供的接口,并为不同的分布式服务提供方提供不同的分布式访问适配层。服务消费方在访问服务提供方提供的接口时,只需调用上述带有java注解的接口的具体方法即可。
可理解的是,不同分布式服务框架下的服务间访问方式,重点在于,通过为服务消费方配套不同的服务适配层,在应用系统运行中,根据配套的分布式服务采用的协议,采用对应的RPC或者RESTful协议方式,将数据发送到对方应用,并处理返回结果。分布式服务接口为普通java接口类,在该类上添加以下注解:a.在接口上添加ApiAnnotation,用于描述分布式服务的名称;b.在执行方法上添加ApiMethodAnnotation,用于描述分布式服务访问的URL;c.在执行方法入参上,添加ApiParameterAnnotation,用于描述分布式服务访问的参数,在RESTFul下是如何传递参数。此java注解,用于描述服务提供方提供的分布式服务,其分布式服务名称为xxx-api。在基于RESTful的分布式服务中,一般是使用分布式服务名称区分不同的服务提供方应用系统。
@ApiMethodAnnotation(method="get",url="/a/b/{1}")
此java注解,用于描述服务提供方提供的分布式服务接口的URL为/a/b/{1},以及其访问HTTP协议方法GET,在通过URL的path传递参数情况下,即ApiParameterType.PATH,参数{1}为参数顺序占位符。
@ApiParameterAnnotation(type=ApiParameterType.PATH)String orgId
此java注解,用于描述服务提供方提供的分布式服务的接口的参数传递方式,此接口传递方法为URL上的path中。
此注解支持参数在path中传递外,还支持
a.HTTP的HEAD
type=ApiParameterType.HEAD String orgId
b.query string
type=ApiParameterType.QUERY-STRING String orgId
c.HTTP body
type=ApiParameterType.BODY String orgId
步骤S302:在所述预设Java注解中添加AOP拦截。
可理解的是,java接口访问代理:通过在接口访问时添加的注解,添加AOP拦截,实现请求代理到分布式服务适配代码上。以上描述的是基于spring framework编写的服务消费方应用系统,是如何编写访问服务提供方的接口的。
a.@Sericie为spring framework的服务注解,用于将class实例化为一个javabean。
b.@Autowired为spring framework的注解,用于自动织入一个服务提供方的客户端实例。其服务提供方的实例产生由分布式服务适配层框架完成。
c.OrgDTO orgDTO=orgAPI.getOrg(orgId)为应用访问服务提供方提供的OrgAPI接口的getOrg方法。
基于AOP方式实现的接口访问拦截,其依赖aspectJ的AOP框架。
@Pointcut(value="@annotation(a.b.c.ApiMethodAnnotation)")
public void methodPointcut(){}
描述了在一个拦截切面位置,即在访问带有ApiAnnotation注解的接口的方法时,该拦截器生效。
@Around("methodPointcut()")
描述了该拦截器生效后,对拦截到的方法调用进行方法拦截前和拦截后处理。
根据分布式服务采用的协议配置,选择使用RpcUtil或者使用HttpUtil的方式将请求发送给服务提供方。
String apiType=getConfigValue(“delegate.type.OrgAPI”);
从配置文件中获取配置的分布式服务采用何种方法方式。
步骤S303:根据所述AOP拦截将所述访问请求进行拦截,并将拦截的访问请求代理至对应的服务适配代码上。
分布式服务适配:针对不同的分布式服务框架,提供不同的分布式服务适配。例如,阿里的HSF框架,其分布式服务适配依赖,使用maven的pom管理引入spring-cloud-starter-hsf。
访问协议配置中配置项,delegate.type.OrgAPI=RPC|RESTful,可以放到classpath下能被加载的properties中。
进一步地,在本实施例中,在所述步骤S20之前,还包括:
编写与待访问接口类型对应的所述适配程序;
对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层。
在所述接口类型是非结构化云存储接口时,对所述云适配子模块的接口编写对应的适配程序;将所述适配程序中可扩展标记语言文件配置到预设容器框架下,获得适配接口。
在具体实现中,业务代码调用分布式文件上传的抽象接口实现文件上传的业务逻辑。所述预设容器框架可以是spring框架,通过spring框架同的依赖注入FSManager实例,实现一个具体的适配实现的FSManager的实现类。是针对云上分布式存储的实际访问方式进行定制开发的程序。不同云上的分布式存储的访问方式各不相同,所以会有多套实现类,即多套适配方案。在构造一个fsEntity实例后,通过抽象接口fsManager的putObject方法,实现文件上传到分布式服务中。依赖注入的思想是:当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。在本实施例中,所述步骤S30,包括:根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
可理解的是,编写非结构化存储适配程序,通过所述抽象接口调用预设函数,将文件上传至分布式服务器。所谓抽象,是通过在多种分布式存储方案访问的实现中,总结出共性的类和函数。以下以开源的非结构化存储fastdfs作为示例:FSStoreGenericManagerImpl实现了抽象接口FSManager,并实现了文件上传的putObject函数。所述预设函数为putObject函数。在文件上传的putObject中,调用fasfdfs提供的客户端sdk中提供的类FastFileStorageClient进行文件的具体上传工作。可扩展标记语言文件为xml文件,对所述适配程序进行参数配置,具体为:通过将xml文件配置到spring框架下。在本实施例中,所述对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层,包括:通过spring的xml方式对所述适配程序进行配置,获得与待访问接口类型对应的服务适配层。
进一步地,在所述接口类型是服务网关接口时,通过预设实现类对所述云适配子模块的接口进行抽象,获得对应的适配程序;对所述适配程序进行参数配置,获得适配接口。
应理解的是,使用spring框架方式,依赖注入一个ApiCallerManager实例。pring框架最强大的地方就是实现了依赖注入,也叫控制反转。当某个Java实例(调用者)需要另一个Java实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。而在依赖注入的模式下,创建被调用者的工作(也就是实例化一个类)不再由调用者来完成,通常由Spring容器来完成,然后注入调用者,因此称为控制反转,也称为依赖注入。举例:首先,建立接口;其次,建立接口的实现类;建立映射配置文件bean.xml;最后,测试用例。在spring的配置文件中声明这个客户端调用了哪个类,然后spring的ioc容器完成注入工作,传统的做法,一个类如果要调用其它的类,就须实例化这个类(除非你在这个类里写static方法),这样两个类之间建立了很强的耦合。而面向对象就是为了降低程序之间的耦合,达到可重用的目的,本实施例中采用spring框架降低耦合,用实例化接口来代替实例化实现了这一接口的类,然后在spring的配置文件中声明这个接口和类的关系,就可以在客户端调用这个实现类的方法。传递业务参数到网关的程序中去:构造一个请求参数对象,并填充请求参数;可以添加参数到url上;可以添加参数到http的head中;进行请求发送和返回值处理。从而实现将请求发送至服务网关。在本实施例中,所述根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端,包括:根据所述服务适配层获取对应的协议方式,使用spring框架,依赖入注入预设实例,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
可理解的是,获取所述服务网关的类型,根据所述服务网关的类型编写对应的服务网关适配程序。以下以开源的Kong为例,描述如何编写一股服务网关适配程序:定义类KongApiCaller实现接口ApiCaller实现invoke()函数。Invoke()方法中,通过httpclient将消息内容填充到http的头部,url或者http的body中。其中以token认证方式,实现了请求认证的认证机制。
需要说明的是,通过抽象接口调用所述服务网关适配程序,将请求发送至服务网关。在通过抽象接口调用所述服务网关适配程序之前,还包括:通过spring的xml方式对所述服务网关适配程序进行配置。在应用框架spring中进行配置已实现类的代码引入和初始化。
进一步地,在所述接口类型是分布式消息队列接口时,对所述云适配子模块的接口编写对应的适配程序;通过预设分布式发布订阅消息系统对所述适配程序进行参数配置,获得适配接口。
在具体实现中,面向抽象接口进行访问,使用spring框架,依赖入注入一股MQProducer实例,用于mq消息发布。初始化一个MQMessage的对象,构造一个消息,以及该消息发送到消息队列的那个TOPIC中。使用MqProducer的实例进行发送该消息。编写消息队列适配程序:所述预设分布式发布订阅消息系统可以是Kafka。以开源的消息队列kafka为例,描述如何实现一个消息队列访问的适配程序:MQProducerByKafka实现了抽象接口MQProducer,将消息封装到kafka提供的消息对象ProducerRecored对象中,调用kafka的客户程序kafkaProducer进行消息发送。引入适配程序:以maven管理的依赖方式,引入kafka的依赖包spring-kafka和kafka-clients。引入适配程序配置:用spring的xml初始化MQProducerByKafka的一个实例。
在本实施例中,通过在接口访问时添加预设Java注解,在所述预设Java注解中添加AOP拦截,根据所述AOP拦截将所述访问请求进行拦截,并将拦截的访问请求代理至对应的服务适配代码上,对于各种云资源访问无需考虑实际云环境各产品的访问差异性,打包时添加对应的适配程序,使得应用程序的部署方式更加灵活,业务代码也无需进行修改,实现对各种产品兼容,从而实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有面向云架构系统的适配程序,所述面向云架构系统的适配程序被处理器执行时实现如上文所述的面向云架构系统的适配方法的步骤。
此外,参照图4,本发明实施例还提出一种面向云架构系统的适配装置,所述面向云架构系统的适配装置包括:
确定模块10,用于接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型。
应理解的是,所述访问请求为云资源访问请求,从所述访问请求中提取待访问的云资源类型,根据云资源类型查找对应的待访问接口类型。由于各厂商对云平台资源的访问存在差异性,为了保证业务逻辑父模块中访问云平台资源不和具体厂商进行绑定,通过对常见云资源,包括分布式缓存,分布式消息队列,分布式非结构化存储,分布式服务和业务网关等的访问接口进行抽象,将业务逻辑编写面向抽象接口进行编程,对抽象接口实现放到了对应的云适配子模块中,获得所述待访问接口类型。例如,在业务逻辑中,分布式消息队列会用到两个接口:消息发布接口,消息订阅接口。各云厂商的分布式消息队列的客户端程序,均提供了上述两个API。基于此特点,其实现方式为一个抽象一个接口类MQServie,里面包含消息发布方法(produce)和消息订阅方法(consum),以及多套实现类:AliMQService实现了对阿里云提供的消息队列的访问,TencentMQService实现了对腾讯云提供的消息队列的访问,PinganMQService实现了对平安云提供的消息队列的访问。
选取模块20,用于根据所述待访问接口类型选取与所述服务端配套的服务适配层。
需要说明的是,通过预设项目对象模型设置所述服务适配层,所述服务适配层包括云适配子模块。所述预设项目对象模型可以是maven,基于maven的父子工程结构的特点,使用模块化的结构,创建父模块以及对应的云适配子模块,所述适配层包括所述父模块和所述云适配子模块。例如,业务逻辑父模块为yun-biz,面向各云厂商的各个云适配子模块为adapt-ali支持阿里云,adapt-generic支持开源的云技术,adapt-pingan支持平安云,adapt-huawei支持华为云,adapt-tencent支持腾讯云。其中,模块之间的父子关系,是通过maven的pom文件的parent进行指定。例如,适配模块yun-main/adapt-ali/pom.xml,定义了其父工程为yun-biz。所述待访问接口类型与所述服务端配套的服务适配层之间存在对应关系,则可通过所述待访问接口类型选取与所述服务端配套的服务适配层。在本实施例中,所述待访问接口类型包括:分布式缓存接口,分布式消息队列接口,非结构化云存储接口,分布式服务接口或业务网关接口。
发送模块30,用于根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端。
在具体实现中,通过为服务消费方配套不同的服务适配层,在应用系统运行中,根据配套的分布式服务采用的协议,采用对应的RPC或者RESTful协议方式,将数据发送到对方应用,并处理返回结果。在业务逻辑中,通过在云厂商适配子模块中运行maven命令进行打包,可以生成在该云厂商分布式环境下运行的应用程序包。通过分层的目录结构,应用程序可以打包不同的适配程序,访问不同云平台资源。通过这种方式,也可以独立扩展出更多的云适配方案,满足各种云平台运行的要求,而无需修改任何业务代码。例如,某需要增加某云厂商xxx的云平台支持,只需要根据下面的步骤即可完成:在模板工程的yun-main目录下新建一个adapt-xxx,并且在其pom文件中定义其父工程为yun-biz。
处理模块40,用于接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
可理解的是,所述服务端在接收到所述待访问数据,对所述待访问数据进行处理,生成所述返回结果,所述面向云架构系统的适配设备对所述返回结果进行进行处理,从而完成服务端的访问过程。
在本实施例中,通过接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型,根据所述待访问接口类型选取与所述服务端配套的服务适配层,根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,通过配套的服务适配层,对接口进行抽象,无需考虑云环境各产品的访问差异性,依赖适配接口进行访问,实现兼容;接收所述服务端反馈的返回结果,并对所述返回结果进行处理,实现对各种产品兼容,从而实现自动切换到新的云上分布式消息队列以及实现不同的云资源访问。
在一实施例中,所述面向云架构系统的适配装置还包括:
添加模块,用于在接口访问时添加预设Java注解;
所述添加模块,还用于在所述预设Java注解中添加AOP拦截;
代理模块,用于根据所述AOP拦截将所述访问请求进行拦截,并将拦截的访问请求代理至对应的服务适配代码上。
在一实施例中,所述面向云架构系统的适配装置还包括:
编写模块,用于编写与待访问接口类型对应的所述适配程序;
配置模块,用于对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层。
在一实施例中,所述发送模块30,还用于根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
在一实施例中,所述配置模块,用于通过spring的xml方式对所述适配程序进行配置,获得与待访问接口类型对应的服务适配层。
在一实施例中,所述所述发送模块30,还用于根据所述服务适配层获取对应的协议方式,使用spring框架,依赖入注入预设实例,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
在一实施例中,所述待访问接口类型包括:分布式缓存接口,分布式消息队列接口,非结构化云存储接口,分布式服务接口或业务网关接口。
本发明所述面向云架构系统的适配装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为标识。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种面向云架构系统的适配方法,其特征在于,所述面向云架构系统的适配方法包括以下步骤:
接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型;
根据所述待访问接口类型选取与所述服务端配套的服务适配层;
根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端;
接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
2.如权利要求1所述的面向云架构系统的适配方法,其特征在于,所述根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端之后,还包括:
在接口访问时添加预设Java注解;
在所述预设Java注解中添加AOP拦截;
根据所述AOP拦截将所述访问请求进行拦截,并将拦截的访问请求代理至对应的服务适配代码上。
3.如权利要求1所述的面向云架构系统的适配方法,其特征在于,所述根据所述待访问接口类型选取与所述服务端配套的服务适配层之前,所述面向云架构系统的适配方法还包括:
编写与待访问接口类型对应的所述适配程序;
对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层。
4.如权利要求3所述的面向云架构系统的适配方法,其特征在于,所述根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端,包括:
根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
5.如权利要求3所述的面向云架构系统的适配方法,其特征在于,所述对所述适配程序进行参数配置,获得与待访问接口类型对应的服务适配层,包括:
通过spring的xml方式对所述适配程序进行配置,获得与待访问接口类型对应的服务适配层。
6.如权利要求4所述的面向云架构系统的适配方法,其特征在于,所述根据所述服务适配层获取对应的协议方式,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端,包括:
根据所述服务适配层获取对应的协议方式,使用spring框架,依赖入注入预设实例,通过抽象接口调用所述服务适配层的适配程序,基于所述协议方式将待访问数据发送至所述服务端。
7.如权利要求1~6中任一项所述的面向云架构系统的适配方法,其特征在于,所述待访问接口类型包括:分布式缓存接口,分布式消息队列接口,非结构化云存储接口,分布式服务接口或业务网关接口。
8.一种面向云架构系统的适配装置,其特征在于,所述面向云架构系统的适配装置包括:
确定模块,用于接收服务端发送的访问请求,根据所述访问请求确定待访问接口类型;
选取模块,用于根据所述待访问接口类型选取与所述服务端配套的服务适配层;
发送模块,用于根据所述服务适配层获取对应的协议方式,基于所述协议方式将待访问数据发送至所述服务端;
处理模块,用于接收所述服务端反馈的返回结果,并对所述返回结果进行处理。
9.一种面向云架构系统的适配设备,其特征在于,所述面向云架构系统的适配设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的面向云架构系统的适配程序,所述面向云架构系统的适配程序被所述处理器执行时实现如权利要求1至7中任一项所述的面向云架构系统的适配方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有面向云架构系统的适配程序,所述面向云架构系统的适配程序被处理器执行时实现如权利要求1至7中任一项所述的面向云架构系统的适配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010742128.0A CN111858101B (zh) | 2020-07-28 | 2020-07-28 | 面向云架构系统的适配方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010742128.0A CN111858101B (zh) | 2020-07-28 | 2020-07-28 | 面向云架构系统的适配方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858101A true CN111858101A (zh) | 2020-10-30 |
CN111858101B CN111858101B (zh) | 2023-05-26 |
Family
ID=72944841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010742128.0A Active CN111858101B (zh) | 2020-07-28 | 2020-07-28 | 面向云架构系统的适配方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858101B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764723A (zh) * | 2021-01-21 | 2021-05-07 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
CN114356450A (zh) * | 2021-12-29 | 2022-04-15 | 税友信息技术有限公司 | 一种跨云迁移部署方法及系统 |
WO2022143653A1 (zh) * | 2020-12-30 | 2022-07-07 | 中兴通讯股份有限公司 | 基于微服务的多云接口适配方法、系统及存储介质 |
CN115225624A (zh) * | 2022-07-22 | 2022-10-21 | 济南浪潮数据技术有限公司 | 一种基于云平台的网络控制方法、系统、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528185A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
CN107659624A (zh) * | 2017-09-06 | 2018-02-02 | 国云科技股份有限公司 | 一种适用于云计算的异构云管理系统及方法 |
CN107682285A (zh) * | 2017-09-27 | 2018-02-09 | 国云科技股份有限公司 | 一种异构云平台统一资源授权方法 |
US10009443B1 (en) * | 2017-06-06 | 2018-06-26 | IP Company 8, LLC | Provisioning remote application servers on a service provider infrastructure as a service platform |
CN108616406A (zh) * | 2018-05-15 | 2018-10-02 | 上海南洋万邦软件技术有限公司 | 一种多云平台资源一键检测优化系统 |
CN109743354A (zh) * | 2018-12-05 | 2019-05-10 | 国云科技股份有限公司 | 一种多云全托管容器集群方法 |
CN110324177A (zh) * | 2019-05-31 | 2019-10-11 | 中国人民解放军国防科技大学 | 一种微服务架构下的服务请求处理方法、系统及介质 |
CN110874728A (zh) * | 2019-10-12 | 2020-03-10 | 平安银行股份有限公司 | 网上支付系统、网上支付方法、装置、介质及服务器 |
CN114157662A (zh) * | 2021-11-09 | 2022-03-08 | 国云科技股份有限公司 | 一种云平台参数适配方法、装置、终端设备及储存介质 |
-
2020
- 2020-07-28 CN CN202010742128.0A patent/CN111858101B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528185A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
US10009443B1 (en) * | 2017-06-06 | 2018-06-26 | IP Company 8, LLC | Provisioning remote application servers on a service provider infrastructure as a service platform |
CN107659624A (zh) * | 2017-09-06 | 2018-02-02 | 国云科技股份有限公司 | 一种适用于云计算的异构云管理系统及方法 |
CN107682285A (zh) * | 2017-09-27 | 2018-02-09 | 国云科技股份有限公司 | 一种异构云平台统一资源授权方法 |
CN108616406A (zh) * | 2018-05-15 | 2018-10-02 | 上海南洋万邦软件技术有限公司 | 一种多云平台资源一键检测优化系统 |
CN109743354A (zh) * | 2018-12-05 | 2019-05-10 | 国云科技股份有限公司 | 一种多云全托管容器集群方法 |
CN110324177A (zh) * | 2019-05-31 | 2019-10-11 | 中国人民解放军国防科技大学 | 一种微服务架构下的服务请求处理方法、系统及介质 |
CN110874728A (zh) * | 2019-10-12 | 2020-03-10 | 平安银行股份有限公司 | 网上支付系统、网上支付方法、装置、介质及服务器 |
CN114157662A (zh) * | 2021-11-09 | 2022-03-08 | 国云科技股份有限公司 | 一种云平台参数适配方法、装置、终端设备及储存介质 |
Non-Patent Citations (1)
Title |
---|
侯富: "多云环境下的服务自治管理技术", 《中国优秀博硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022143653A1 (zh) * | 2020-12-30 | 2022-07-07 | 中兴通讯股份有限公司 | 基于微服务的多云接口适配方法、系统及存储介质 |
CN112764723A (zh) * | 2021-01-21 | 2021-05-07 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
CN112764723B (zh) * | 2021-01-21 | 2021-09-17 | 奇秦科技(北京)股份有限公司 | 一种基于Spring无侵入修改标准产品业务系统和方法 |
CN114356450A (zh) * | 2021-12-29 | 2022-04-15 | 税友信息技术有限公司 | 一种跨云迁移部署方法及系统 |
CN114356450B (zh) * | 2021-12-29 | 2024-05-24 | 税友信息技术有限公司 | 一种跨云迁移部署方法及系统 |
CN115225624A (zh) * | 2022-07-22 | 2022-10-21 | 济南浪潮数据技术有限公司 | 一种基于云平台的网络控制方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111858101B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111858101A (zh) | 面向云架构系统的适配方法、装置、设备及存储介质 | |
CN106951233B (zh) | 混合模式智能手机应用开发框架系统 | |
CN107870787B (zh) | 应用程序插件化加载方法及系统 | |
CN112035228B (zh) | 一种资源调度方法及装置 | |
US10956179B1 (en) | Third party integration of plugins and widgets | |
US7694140B1 (en) | Web service client extensions | |
US7487513B1 (en) | Web service archive | |
US11042387B2 (en) | Deploying cross-platform applications on mobile devices with native and web components | |
US7822826B1 (en) | Deployment of a web service | |
CN106569880B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
Nguyen et al. | Blueprint template support for engineering cloud-based services | |
CN113055492A (zh) | 服务灰度链路的控制方法、装置、计算机设备和存储介质 | |
CN114125028A (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
Colombo-Mendoza et al. | MobiCloUP!: a PaaS for cloud services-based mobile applications | |
CN109446648B (zh) | 仿真服务建立方法及装置 | |
US20080229274A1 (en) | Automating Construction of a Data-Source Interface For Component Applications | |
CN111367685B (zh) | 接口调用的方法及装置、计算机设备、存储介质 | |
CN110673892A (zh) | 一种基于组件配置的接口统一调用方法 | |
CN101964742B (zh) | 一种网络开放能力使用方法、系统和装置 | |
CN103677842A (zh) | 软件工具配置式集成扩展调用方法与系统 | |
Moreira et al. | Supporting adaptable distributed systems with FORMAware | |
CN110825373A (zh) | 一种移动端动态化方法及装置 | |
Deng et al. | Evolution in model-driven software product-line architectures | |
CN115729604A (zh) | 微应用集成方法、系统、电子设备和存储介质 | |
CN115437647A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220607 Address after: 518000 China Aviation Center 2901, No. 1018, Huafu Road, Huahang community, Huaqiang North Street, Futian District, Shenzhen, Guangdong Province Applicant after: Shenzhen Ping An medical and Health Technology Service Co.,Ltd. Address before: Room 12G, Area H, 666 Beijing East Road, Huangpu District, Shanghai 200001 Applicant before: PING AN MEDICAL AND HEALTHCARE MANAGEMENT Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |