一种API网关服务更新的方法及装置与流程

文档序号:19218795发布日期:2019-11-26 01:56阅读:297来源:国知局
一种API网关服务更新的方法及装置与流程

本发明实施例涉及软件开发技术领域,尤其涉及一种api网关服务更新的方法及装置。



背景技术:

在进行开放平台api(applicationprogramminginterface,应用程序编程接口)网关应用开发过程中,当新上架某个api服务或者下架当前已有的api服务时,需要对api网关应用进行更新,即更新api网关应用程序中的xml(extensiblemarkuplanguage,可扩展标记语言)格式静态配置文件,并将更新后的xml格式静态配置文件替换原有文件且重启api网关应用程序。

api网关应用作为承载众多http(hypertexttransferprotocol,超文本传输协议)服务的入口,本身要求具备高可用性,但现有的更新方式中,每次新增、下架某个api服务就需要重启应用程序,应用程序重启过程中,服务调用方无法正常通过api网关应用程序远程调用服务,影响了服务调用方的正常需求。



技术实现要素:

本发明实施例提供一种api网关服务更新的方法及装置,用以在不重启api网关应用的前提下,实现api网关服务的动态更新。

本发明实施例提供的一种api网关服务更新的方法,适用于通过分布式远程调用框架实现的api网关,所述方法包括:

api网关应用获取本地配置信息;所述本地配置信息是所述api网关应用根据从订阅服务器所订阅服务的标识确定的;

所述api网关应用从动态配置服务器获取动态配置信息;所述动态配置信息是所述动态配置服务器根据动态配置指令进行更新后生成的;所述动态配置指令用于变更从所述订阅服务器订阅的服务;

所述api网关应用比较所述本地配置信息和所述动态配置信息,若确定出新增服务的第一标识,则根据所述第一标识从所述订阅服务器订阅所述新增服务,且在所述api网关应用的应用容器中实例化所述新增服务;

所述api网关应用根据所述动态配置信息更新所述本地配置信息。

上述技术方案中,api网关获取本地配置信息和动态配置信息,对本地配置信息和动态配置信息进行比较,若确定出当前有新增服务,则自动从订阅服务器中订阅该新增服务以及在应用容器中实例化该新增服务,还会自动根据该动态配置信息更新本地配置信息。无需人工将更新后的静态配置信息替换原有的静态配置信息,且无需重启api网关应用,实现api网关应用的热更新,可以使得api网关应用一直处于开启状态,满足服务调用方的调用需求。提升api网关应用的服务配置的灵活性,以及实现api网关的高可用性,减小了api网关在重启过程短时服务调用失败的可能性。

可选的,所述api网关应用获取本地配置信息之前,还包括:

所述api网关应用获取静态配置信息;所述静态配置信息包括全局配置信息及提供服务的标识;

所述api网关应用根据所述全局配置信息对所述分布式远程调用框架进行全局配置;

所述api网关应用根据所述提供服务的标识,从所述订阅服务器订阅所述提供服务,且在所述api网关应用的应用容器中实例化所述提供服务;

所述api网关应用根据所述提供服务的标识确定所述本地配置信息。

上述技术方案中,api网关在初次启动时,由于api网关的本地配置信息为空,则api网关对所有的静态配置信息进行加载和配置,将服务实例化到应用容器中,以及向订阅服务器订阅服务。

可选的,所述api网关应用根据所述动态配置信息更新所述本地配置信息之后,包括:

所述api网关应用接收服务调用方的服务请求,所述服务请求中包括待调用服务的标识;

所述api网关应用根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址;

所述api网关应用根据所述服务提供方的地址和在所述api网关应用的应用容器中实例化后的待调用服务,从所述服务提供方中调用所述待调用服务并返回服务响应至所述服务调用方。

可选的,还包括;

所述api网关应用比较所述本地配置信息和所述动态配置信息,若确定出删除服务的第二标识,则将所述第二标识记录在已删除标识信息中;

所述api网关应用根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址之前,还包括:

所述api网关应用根据所述待调用服务的标识,确定所述已删除标识信息中不存在所述待调用服务的标识。

上述技术方案中,通过设置已删除标识信息,在确定出动态配置信息中删除了某个api服务的服务标识时,可以将该api服务的服务标识加入至已删除标识信息中,从而实现对api服务的下架。

相应的,本发明实施例还提供了一种api网关服务更新的装置,适用于通过分布式远程调用框架实现的api网关,所述装置包括:获取单元和处理单元;

所述获取单元,用于获取本地配置信息;所述本地配置信息是api网关应用根据从订阅服务器所订阅服务的标识确定的;

所述获取单元,还用于从动态配置服务器获取动态配置信息;所述动态配置信息是所述动态配置服务器根据动态配置指令进行更新后生成的;所述动态配置指令用于变更从所述订阅服务器订阅的服务;

所述处理单元,用于比较所述本地配置信息和所述动态配置信息,若确定出新增服务的第一标识,则根据所述第一标识从所述订阅服务器订阅所述新增服务,且在所述api网关应用的应用容器中实例化所述新增服务;并根据所述动态配置信息更新所述本地配置信息。

可选的,所述处理单元还用于:

在控制所述获取单元获取本地配置信息之前,控制所述获取单元获取静态配置信息;所述静态配置信息包括全局配置信息及提供服务的标识;

根据所述全局配置信息对所述分布式远程调用框架进行全局配置;

根据所述提供服务的标识,从所述订阅服务器订阅所述提供服务,且在所述api网关应用的应用容器中实例化所述提供服务;

根据所述提供服务的标识确定所述本地配置信息。

可选的,所述处理单元还用于:

在根据所述动态配置信息更新所述本地配置信息之后,接收服务调用方的服务请求,所述服务请求中包括待调用服务的标识;

根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址;

根据所述服务提供方的地址和在所述api网关应用的应用容器中实例化后的待调用服务,从所述服务提供方中调用所述待调用服务并返回服务响应至所述服务调用方。

可选的,所述处理单元还用于:

比较所述本地配置信息和所述动态配置信息,若确定出删除服务的第二标识,则将所述第二标识记录在已删除标识信息中;

所述处理单元还用于:

在根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址之前,根据所述待调用服务的标识,确定所述已删除标识信息中不存在所述待调用服务的标识。

相应的,本发明实施例还提供了一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述api网关服务更新的方法。

相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述api网关服务更新的方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种系统架构的示意图;

图2为本发明实施例提供的一种api网关服务更新方法的流程示意图;

图3为本发明实施例提供的另一种api网关服务更新方法的流程示意图;

图4为本发明实施例提供的一种api网关服务更新的装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1示例性的示出了本发明实施例提供api网关服务更新的方法所适用的系统架构,该系统架构可以是分布式远程调用框架,该分布式远程调用框架可以包括服务提供方集群110、订阅服务器120、api网关集群130、负载均衡服务器140、动态配置服务器150、api网关管理平台160和api调用方170。

服务提供方集群110由多台提供相同api服务的服务提供方111组成,在服务提供方111应用启动时,会向订阅服务器120注册其提供的服务,订阅服务器120记录有所有服务提供方111所提供服务的服务标识和对应服务提供方111的地址。此处的订阅服务器120也可以理解为注册中心,服务提供方111应用启动时,会向注册中心注册其提供的服务。

api网关集群130由多台api网关131组成,在每台api网关131上运行web应用(以下称为api网关应用),api网关应用具备验证用户权限、接收http请求、处理、转发、调用远程服务、返回响应等功能。在api网关应用启动时,作为服务消费者会向订阅服务器120订阅需要使用的服务,订阅服务器120返回服务提供方111地址列表给api网关应用并被其缓存在应用内存中,如果服务提供方111有变更,订阅服务器120会发送变更数据给api网关应用。

api网关131对外提供http协议的接口。一次完整的api接口调用过程如下:api调用方170向api网关131发送http请求,http请求首先会经过api网关131前置的负载均衡服务器140,负载均衡服务器140根据api网关集群130中多台api网关131负载压力的情况,http请求会被转发到某一台api网关131上。该台api网关131的api网关应用根据缓存在应用内存中的远程服务的地址列表,经过远程调用框架提供的软负载均衡处理、协议及参数转换后,实际远程调用某一台服务提供方111提供的服务。服务提供方111返回的响应经过api网关应用转换为http响应报文后,返回给api调用方170。

api网关管理平台160为用户提供可视化界面,用户可以通过可视化界面下发动态配置指令,动态配置服务器150中根据动态配置指令生成动态配置信息并存储。

基于上述描述,图2示例性的示出了本发明实施例提供的一种api网关服务更新的方法的流程,该流程可以由上述api网关应用执行。

如图2所示,该流程具体包括:

步骤201,api网关应用获取本地配置信息。

本发明实施例中,api网关应用在初次启动时,可以获取预先配置好的静态配置信息,该静态配置信息可以是xml格式静态信息,其中,该静态配置信息中包括全局配置信息及提供服务的标识;api网关应用根据全局配置信息对分布式远程调用框架进行全局配置,如配置订阅服务器、通信协议等;提供服务的标识指的是当前配置的api网关应用向api调用方所提供的服务的标识,api网关应用根据该提供服务的标识,从订阅服务器订阅该提供服务,且在api网关应用的应用容器中实例化该提供服务;在完成订阅服务和实例化服务后,api网关应用根据该已订阅服务的标识(相当于提供服务的标识)确定本地配置信息。此处,实例化服务指的是根据类和全局配置信息,在api网关应用的应用容器中创建具体的用于提供服务的对象。

api网关应用可以定时获取本地配置信息,该本地配置信息即api网关应用根据从订阅服务器中已订阅服务的标识确定的。本地配置信息可以以本地配置列表的形式存储,该本地配置列表由已订阅服务的标识和已订阅服务的标识对应的服务提供方地址组成。

步骤202,api网关应用从动态配置服务器获取动态配置信息。

用户在需要对api网关服务进行更新时,可以通过api网关管理平台的可视化界面下发动态配置指令,该动态配置指令用于变更api网关应用从订阅服务器订阅的服务,也就是用于变更api网关向api调用方提供的服务。示例性的,用户在需要新增某个api服务时,则可以下发记录有该新增api服务的标识的动态配置指令,动态配置服务器根据动态配置指令对本地存储的动态配置信息更新,将该新增api服务的标识增加至该动态配置信息中。

动态配置服务器中可以采用redis存储动态配置信息,格式为key-value,其中,key指的是api服务在api网关应用中的服务标识,value指的是该api服务的配置信息,如最大访问时长,根据不同的远程调用框架,对于api服务的配置信息可能不同。示例性的,动态配置信息可以如下:

{"apiservice1":"{\"serviceid\":\"api_service_id_1\",\"timeout\":\"3000\"}","apiservice2":"{\"serviceid\":\"api_service_id_2\"}",}

此外,动态配置服务器也可以采用其他key-value型数据库以存储动态配置信息,比如memcached。key-value型数据库可以提高api网关应用从动态配置服务器获取动态配置信息的速度。当然,动态配置服务器也可以采用关系型数据库以存储动态配置信息,如mysql、oracle等。

步骤203,api网关应用比较本地配置信息和动态配置信息,若确定出新增服务的第一标识,则根据第一标识从订阅服务器订阅新增服务,且在api网关应用的应用容器中实例化新增服务。

api网关应用比较本地配置信息和动态配置信息,一种实现方式中,api网关应用若确定本地配置信息少于动态配置信息,则可以确定出当前动态配置信息中有新增的api服务的服务标识(也即新增服务的第一标识),可以根据该新增的api服务的服务标识,从订阅服务器中新增对该api服务的订阅,以及在应用容器中实例化该新增的api服务。

步骤204,api网关应用根据动态配置信息更新本地配置信息。

如图3为本发明实施例提供的另一种api网关服务更新的方法的流程,api网关应用使用了spring框架和magpie分布式远程服务调用框架实现,动态配置服务器通过redis来存储动态配置信息。api网关应用在启动时,获取xml格式的静态配置信息,api网关应用的spring容器会加载bean实例,完成magpie框架全局配置,并向订阅服务器订阅服务。api网关应用启动完成后,将已订阅服务作为本地配置信息存储至内存中。api网关应用在运行中,每隔1分钟(时间可配置)从redis中重新获取一次全量的动态配置信息,与内存中保存的本地配置信息进行比较,如果发现新增api服务,则从订阅服务器中订阅该新增api服务以及将该新增api服务的bean实例加载至spring容器中。api网关应用根据重新获取的动态配置信息更新本地配置信息。本地配置信息也可以理解为存储在api网关应用的应用内存中的动态配置信息的副本。

在api网关应用根据动态配置信息更新本地配置信息之后,可以接收服务调用方的服务请求,其中,该服务请求中包括待调用服务的标识,api网关可以根据服务请求中待调用服务的标识从服务提供方调用服务。具体的,api网关应用接收服务调用方的服务请求,api网关应用根据待调用服务的标识,从本地配置信息中确定出用于提供待调用服务的服务提供方的地址,api网关应用根据服务提供方的地址和在api网关应用的应用容器中实例化后的待调用服务,从服务提供方中调用该待调用服务并返回服务响应至服务调用方。

本发明实施例中,api网关应用还可以确定本地配置信息多于动态配置信息,则可以确定出当前动态配置信息中删除了某个api服务的服务标识,则api网关应用确定出该删除服务的第二标识,并将该第二标识记录在已删除标识信息中。该已删除标识信息中记录有所有已删除服务的标识,用于在服务调用方通过api网关应用调用服务时,若api网关应用确定该待调用的服务为已删除标识信息中记录的服务,则api网关应用向服务调用方返回错误信息。已删除标识信息可以是由已删除标识组成的已删除标识集合,该集合也可以叫做已下架服务集合。通过设置已删除标识信息,在确定出动态配置信息中删除了某个api服务的服务标识时,可以将该api服务的服务标识加入至已删除标识信息中,从而实现对api服务的下架。

此外,api网关不仅可以通过将第二标识记录在已删除标识信息中以实现删除第二标识对应的服务的目的,还可以直接根据该第二标识从订阅服务器中取消订阅该第二标识对应的服务,以及在api网关应用容器中去实例化该第二标识对应的服务。

一种实现方式中,api网关应用根据待调用服务的标识,从本地配置信息中确定出用于提供待调用服务的服务提供方的地址之前,还需要根据待调用服务的标识,判断已删除标识信息中是否存在该待调用服务的标识,具体的,读取动态配置服务器的已删除标识信息,执行判断逻辑,判断该已删除标识信息中是否存在该待调用服务的标识,若是,则直接返回错误信息,如错误http应答,否则,根据待调用服务的服务标识确定待调用服务的服务提供方的地址,进而从服务提供方中调用待调用服务并返回服务响应至服务调用方。

上述发明实施例中,api网关获取本地配置信息和动态配置信息,对本地配置信息和动态配置信息进行比较,若确定出当前有新增服务,则自动从订阅服务器中订阅该新增服务以及在应用容器中实例化该新增服务,还会自动根据该动态配置信息更新本地配置信息。无需人工将更新后的静态配置信息替换原有的静态配置信息,且无需重启api网关应用,实现api网关应用的热更新,可以使得api网关应用一直处于开启状态,满足服务调用方的调用需求。提升api网关应用的服务配置的灵活性,以及实现api网关的高可用性,减小了api网关在重启过程短时服务调用失败的可能性。

基于同一发明构思,图4示例性的示出了本发明实施例提供的一种api网关服务更新的装置的结构,该装置适用于通过分布式远程调用框架实现的api网关,该装置可以执行api网关服务更新的方法的流程。

该装置包括:获取单元401和处理单元402;

所述获取单元401,用于获取本地配置信息;所述本地配置信息是api网关应用根据从订阅服务器所订阅服务的标识确定的;

所述获取单元401,还用于从动态配置服务器获取动态配置信息;所述动态配置信息是所述动态配置服务器根据动态配置指令进行更新后生成的;所述动态配置指令用于变更从所述订阅服务器订阅的服务;

所述处理单元402,用于比较所述本地配置信息和所述动态配置信息,若确定出新增服务的第一标识,则根据所述第一标识从所述订阅服务器订阅所述新增服务,且在所述api网关应用的应用容器中实例化所述新增服务;并根据所述动态配置信息更新所述本地配置信息。

可选的,所述处理单元402还用于:

在控制所述获取单元401获取本地配置信息之前,控制所述获取单元401获取静态配置信息;所述静态配置信息包括全局配置信息及提供服务的标识;

根据所述全局配置信息对所述分布式远程调用框架进行全局配置;

根据所述提供服务的标识,从所述订阅服务器订阅所述提供服务,且在所述api网关应用的应用容器中实例化所述提供服务;

根据所述提供服务的标识确定所述本地配置信息。

可选的,所述处理单元402还用于:

在根据所述动态配置信息更新所述本地配置信息之后,接收服务调用方的服务请求,所述服务请求中包括待调用服务的标识;

根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址;

根据所述服务提供方的地址和在所述api网关应用的应用容器中实例化后的待调用服务,从所述服务提供方中调用所述待调用服务并返回服务响应至所述服务调用方。

可选的,所述处理单元402还用于:

比较所述本地配置信息和所述动态配置信息,若确定出删除服务的第二标识,则将所述第二标识记录在已删除标识信息中;

所述处理单元402还用于:

在根据所述待调用服务的标识,从所述本地配置信息中确定出用于提供所述待调用服务的服务提供方的地址之前,根据所述待调用服务的标识,确定所述已删除标识信息中不存在所述待调用服务的标识。

基于同一发明构思,本发明实施例还提供了一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述api网关服务更新的方法。

基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述api网关服务更新的方法。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1