API调用方法和装置与流程

文档序号:18406753发布日期:2019-08-10 00:28阅读:387来源:国知局
API调用方法和装置与流程

本申请涉及计算机技术领域,尤其涉及一种api调用方法和装置。



背景技术:

对于一个大型的互联网公司来说,内部往往存在很多系统,它们一般分布在不同的服务器上,通过各种协议提供各种服务。另外很多公司都采取了服务化的架构,即每个业务作为一个服务由专门的团队维护,并且独立部署,因此访问这些服务的时候就需要配置不同的地址,操作较为繁琐,也不便于针对各个服务的维护。



技术实现要素:

本申请提供一种api调用方法和装置,具体地,本申请是通过如下技术方案实现的:

第一方面,本申请提供一种api调用方法,所述方法应用于网关系统,所述网关系统提供多个应用程序编程接口api,包括:

接收来自应用程序的针对目标api的调用请求;

调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理;

将参数处理结果返回给所述应用程序。

第二方面,本申请提供一种api调用装置,所述装置应用于网关系统,所述网关系统提供多个应用程序编程接口api,包括:

接收单元,用于接收来自应用程序的针对目标api的调用请求;

调用单元,用于调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理;

返回单元,用于将参数处理结果返回给所述应用程序。

分析上述技术方案可知,通过作为调用api的业务流量的统一入口的网关系统,可以对api进行统一管理,且仅需通过网关系统的地址,即可调用不同的api,实现不同服务的访问,简化了api调用操作,便于对不同的服务进行维护和管理。

附图说明

图1是本申请一示例性实施例示出的一种api调用系统的示意图;

图2是本申请一示例性实施例示出的一种api调用方法的流程图;

图3是本申请一示例性实施例示出的一种网关系统的示意图;

图4是本申请一示例性实施例示出的另一种网关系统的示意图;

图5是本申请一示例性实施例示出的另一种网关系统的示意图;

图6是本申请一示例性实施例示出的另一种网关系统的示意图;

图7是本申请一示例性实施例示出的一种api调用装置所在网关系统的硬件结构图;

图8是本申请一示例性实施例示出的一种api调用装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参考图1,图1是本申请一示例性实施例示出的一种api调用系统的示意图。

在如图1所示的api调用系统中,网关系统可以仅由一台服务器组成,也可以是由多台服务器组成的分布式系统。

对于分布式网关系统而言,可以将其划分为多个网关实例;其中,网关实例的具体数量可以根据实际需求进行设定。在实际应用中,当这些网关实例中的某个网关实例出现问题而导致无法正常提供服务时,其他网关实例仍然可以正常提供服务,从而可以提高分布式网关的可靠性。

网关系统可以作为调用api(applicationprogramminginterface,应用程序编程接口)的业务流量的统一入口,即网关系统可以提供多个api,以供应用程序(application,app)调用。

请参考图2,图2是本申请一示例性实施例示出的一种api调用方法的流程图。该方法可以应用于图1所示的网关系统,包括如下步骤:

步骤201:接收来自应用程序的针对目标api的调用请求。

步骤202:调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理。

步骤203:将参数处理结果返回给所述应用程序。

在本实施例中,由于网关系统可以作为调用api的业务流量的统一入口,因此不同的电子设备上运行的应用程序也都可以基于网关系统的ip地址完成api的调用。

具体地,应用程序在需要调用某个api(称为目标api)时,可以构造目的ip地址为网关系统的ip地址的调用请求,以将该调用请求发送给网关系统;其中,该调用请求可以用于调用目标api。

在实际应用中,该调用请求中除了可以包含需要通过调用目标api进行处理的参数之外,还可以包含目标api的接口标识(例如:接口名)。网关系统在接收到该调用请求后,可以首先基于该接口标识确定对应的api,该api即为发送该调用请求的应用程序需要调用的目标api。

后续,网关系统可以调用目标api,以基于目标api对应的服务(称为目标服务),对该调用请求中的参数进行处理;其中,目标服务为通过目标api提供给调用方进行调用的预定义的函数。在这种情况下,基于目标服务对该调用请求中的参数进行处理,即为将该调用请求中的参数代入预定义的函数进行计算,而参数处理结果也即为计算结果。

网关系统在完成基于目标服务对该调用请求中的参数的处理后,可以将参数处理结果返回给发送该调用请求的上述应用程序。该应用程序在接收到该参数处理结果后,可以基于该参数处理结果进行后续进一步的处理,也可以将该参数处理结果展示给用户以供查看,在本申请中对此不作特别限定。

在一个可选的实施例中,网关系统可以提供用于管理api的用户界面,用户可以通过该用户界面对某个api(称为目标api)进行接口管理,例如:对目标api进行配置、发布、修改、上线、下线以及沙箱测试等处理。

网关系统在检测到针对目标api的接口管理指令(例如:配置指令、发布指令、修改指令、上线指令、下线指令以及沙箱测试指令等)时,可以基于该接口管理指令对所述目标api进行相应的处理。

举例来说,用户可以通过网关系统提供的用户管理api的用户界面,对目标api自身的参数进行配置,并在配置完成后,点击该用户界面中的“确认”按钮。网关系统在检测到用户针对该“确认”按钮的点击操作时,可以视为检测到针对目标api的配置指令,并对目标api的参数进行相应的配置。

在一个可选的实施例中,对于包括多个网关实例的分布式网关系统而言,可以对用于调用api的业务流量进行负载均衡,即对接收到的调用请求进行负载均衡。

具体地,在接收到某个调用请求后,可以首先基于预设的负载均衡算法,确定用于处理该调用请求的网关实例。

在确定了用于处理该调用请求的网关实例后,可以将该调用请求转发给该网关实例。该网关实例在接收到该调用请求后,可以调用相应的api,以基于该api对应的服务对该调用请求中的参数进行处理。

举例来说,请参考图3,图3是本申请一示例性实施例示出的一种网关系统的示意图。

如图3所示,可以分别在网关系统包括的各个网关实例的前端设置nginx负载均衡器。在这种情况下,可以先由nginx负载均衡器接收到调用请求,并确定用于处理该调用请求的网关实例。后续,也可以由nginx负载均衡器将该调用请求转发给确定的网关实例,该网关实例在接收到该调用请求后,可以调用相应的api,以基于该api对应的服务对该调用请求中的参数进行处理。

在实际应用中,在每个网关实例中,都可以基于与该网关实例对应的线程池处理调用请求,以提高cpu利用率。

需要说明的是,nginx负载均衡器可以部署在网关系统的前端设备上,也可以部署在网关系统上,本申请对此不作限制。

在一个可选的实施例中,对于未划分网关实例的网关系统,或者包括多个网关实例的网关系统中的各个网关实例而言,在接收到调用请求时,可以基于预设的异步非阻塞算法,调用目标api,以基于目标api对应的目标服务,对该调用请求中的参数进行处理。

举例来说,可以分别在网关系统包括的各个网关实例中设置一个线程池,该线程池可以用于处理由该网关实例接收到的调用请求。在该线程池的每个线程中,可以基于采用异步非阻塞技术的asynhttpclient处理调用请求,以提高cpu利用率。

在一个可选的实施例中,对于包括多个网关实例的分布式网关系统而言,通常需要保证各个网关实例的配置信息是同步的,即各个网关实例的配置信息需要保持一致,以避免在进行api调用时出现错误。

网关系统可以提供用于修改网关实例的配置信息的用户界面,用户可以通过该用户界面对某个网关实例(称为目标网关实例)的配置信息进行修改。或者,目标网关实例的某些配置信息也可能在运行过程中自行发生变化。

在检测到目标网关实例的配置被修改时,可以分别向其他各个网关实例发送配置请求报文。其他各个网关实例在接收到该配置请求报文时,可以基于该配置请求报文,执行与目标网关实例相同的配置修改,这样可以使网关系统包括的各个网关实例的配置信息保持一致。

举例来说,请参考图4,图4是本申请一示例性实施例示出的另一种网关系统的示意图。

如图4所示,可以分别在网关系统包括的各个网关实例中设置zookeeper客户端,并设置用于管理这多个zookeeper客户端的zookeeper管理端。每个zookeeper客户端可以按照预设的时间间隔,定期向zookeeper管理端发送心跳包,以保持其与zookeeper管理端之间的连接。在目标网关实例的配置被修改时,zookeeper管理端可以通过目标网关实例中的zookeeper客户端监听到目标网关实例的配置被修改,而其他各个zookeeper客户端则可以通过zookeeper管理端监听到对应的同步配置请求。其他各个网关实例在通过其zookeeper客户端监听到该同步配置请求时,可以基于该同步配置请求,执行与目标网关实例相同的配置修改。

在实际应用中,对于每个网关实例而言,其配置信息和实例信息都可以存储在zookeeper管理端和分布式缓存中,即每个网关实例都是无状态实例,这样可以根据实际需求扩展任意数量的网关实例。

需要说明的是,zookeeper管理端可以部署在网关系统的前端设备上,也可以部署在网关系统上,本申请对此不作限制。

在一个可选的实施例中,可以采用三级缓存机制实现api调用,以提高网关性能。

具体地,请参考图5,图5是本申请一示例性实施例示出的另一种网关系统的示意图。

如图5所示,某个网关实例在接收到用于调用目标api的调用请求后,可以先确定该网关实例的缓存中是否存储有目标api对应的目标服务。

如果该网关实例的缓存中存储有目标api对应的目标服务,则可以直接在该网关实例的缓存中调用目标api,以基于目标api对应的目标服务,对该调用请求中的参数进行处理。

如果该网关实例的缓存中未存储有目标api对应的目标服务,则可以进一步地确定网关系统的缓存中是否存储有目标api对应的目标服务。

如果网关系统的缓存中存储有目标api对应的目标服务,则可以在网关系统的缓存中调用目标api,以基于目标api对应的目标服务,对该调用请求中的参数进行处理。

如果网关系统的缓存中未存储有目标api对应的目标服务,则可以在数据库中调用目标api,以基于目标api对应的目标服务,对该调用请求中的参数进行处理。

需要说明的是,在网关实例的缓存中读取数据的时间,小于在网关系统的缓存中读取相同数据的时间;而在网关系统的缓存中读取数据的时间,也小于在数据库中读取相同数据的时间。数据库可以部署在网关系统的前端设备上,也可以部署在网关系统上,本申请对此不作限制。

在一个可选的实施例中,可以对网关系统在运行过程中生成的日志信息进行统计和分析,以将统计结果展示给用户,并基于分析得到的报警信息进行报警。

举例来说,请参考图6,图6是本申请一示例性实施例示出的另一种网关系统的示意图。

如图6所示,可以分别在网关系统包括的各个网关实例中设置一个日志收集器,以由该日志收集器将该网关实例在运行过程中生成的日志信息推送到kafka存储系统中。此外,还可以采用mongodb数据库存储api调用日志。

storm实时计算系统可以获取到kafka存储系统中存储的日志信息,并对获取到的日志信息进行实时的统计和分析。后续,可以将统计结果发送至监控系统进行展示,以供用户查看;另一方面,可以将实时分析得到的运行异常等报警信息发送至报警系统进行报警。此外,监控系统还可以获取mongodb数据库中存储的api调用信息,从而可以统计各个api的调用次数等相关信息,并对得到的相关信息进行展示,以供用户查看。

需要说明的是,kafka存储系统、storm实时计算系统、监控系统、报警系统或mongodb数据库可以部署在网关系统的前端设备上,也可以部署在网关系统上,本申请对此不作限制。

在一个可选的实施例中,网关系统可以基于预设的安全鉴权算法,对接收到的用于调用目标api的调用请求进行安全鉴权。

如果该调用请求安全鉴权通过,则可以调用目标api,以基于目标api对应的目标服务,对该调用请求中的参数进行处理。

举例来说,可以基于标准oauth2.0协议,对接收到的用于调用目标api的调用请求进行安全鉴权;或者,可以基于数字签名技术,对接收到的用于调用目标api的调用请求进行安全鉴权。

在实际应用中,还可以分别为各个api设置黑名单或白名单。具体地,如果为某个api设置了黑名单,则后续可以不对ip地址命中该黑名单的调用请求进行处理;相应地,如果为某个api设置了白名单,则后续可以仅对ip地址命中该白名单的调用请求进行处理。

分析上述技术方案可知,通过作为调用api的业务流量的统一入口的网关系统,可以对api进行统一管理,且仅需通过网关系统的地址,即可调用不同的api,实现不同服务的访问,简化了api调用操作,便于对不同的服务进行维护和管理。

与前述api调用方法的实施例相对应,本申请还提供了api调用装置的实施例。

本申请api调用装置的实施例可以应用在网关系统上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网关系统的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,图7是本申请api调用装置所在网关系统的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网关系统通常根据该api调用的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图8,图8是本申请一示例性实施例示出的一种api调用装置的框图。该装置80可以应用于图7所示的网关系统,包括:

接收单元801,用于接收来自应用程序的针对目标api的调用请求;

调用单元802,用于调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理;

返回单元803,用于将参数处理结果返回给所述应用程序。

在一个可选的实施例中,所述装置80还可以包括:

管理单元804,用于在检测到针对所述目标api的接口管理指令时,基于所述接口管理指令对所述目标api进行相应处理。

在一个可选的实施例中,所述网关系统为包括多个网关实例的分布式系统;

所述调用单元802具体可以用于:

基于预设的负载均衡算法,确定用于处理所述调用请求的网关实例,以由所述网关实例调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理。

在一个可选的实施例中,所述装置80还可以包括:

同步单元805,用于在检测到目标网关实例的配置被修改时,分别向其他各个网关实例发送同步配置请求,以使所述网关实例与所述目标网关实例执行相同的配置修改。

在一个可选的实施例中,所述调用单元802具体可以用于:

确定所述网关实例的缓存中是否存储有所述目标api对应的目标服务;

如果所述网关实例的缓存中存储有所述目标服务,则在所述网关实例的缓存中调用所述目标api,以基于所述目标服务,对所述调用请求中的参数进行处理;

如果所述网关实例的缓存中未存储有所述目标服务,则确定所述网关系统的缓存中是否存储有所述目标服务;

如果所述网关系统的缓存中存储有所述目标服务,则在所述网关系统的缓存中调用所述目标api,以基于所述目标服务,对所述调用请求中的参数进行处理;

如果所述网关系统的缓存中未存储有所述目标服务,则在数据库中调用所述目标api,以基于所述目标服务,对所述调用请求中的参数进行处理。

在一个可选的实施例中,所述调用单元802具体可以用于:

基于预设的异步非阻塞算法,调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理。

在一个可选的实施例中,所述装置80还可以包括:

计算单元806,用于基于日志信息进行统计和分析,以将统计结果展示给用户,并基于分析得到的报警信息进行报警。

在一个可选的实施例中,所述装置80还可以包括:

鉴权单元807,用于基于预设的安全鉴权算法,对所述调用请求进行安全鉴权;

所述调用单元802具体可以用于:

如果所述调用请求安全鉴权通过,则调用所述目标api,以基于所述目标api对应的目标服务,对所述调用请求中的参数进行处理。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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