本发明涉及互联网网关技术领域,具体的,涉及一种api管理方法和api网关系统。
背景技术:
金融服务业随着业务体量的壮大,内部服务对外暴露的接口越来越多,接口调用方客户众多,环境复杂;对接口安全性、高性能、统一管理提出了更高的要求,因此需要一套统一的接入层来管理所有的对外接口;这套接入层需要适用于金融行业特点,解决如下问题:统一api接入点;协议转换;流量路由;流量控制;权限与访问控制;实现api元数据管理;简化后端开发;提升系统可运维能力。业内现有nginx(一种高性能的http和反向代理web服务器) lua(一种脚本语言)、阿里云slb等解决方案。
nginx lua实现方式,可以实现简单的负载均衡、路由管理、流量控制,但是无法对接口元数据进行管理,接口配置变更需要修改每个nginx配置文件,统一发布过程复杂,容易出错;lua脚本存在技术门槛,无法交给业务开发人员进行维护。
slb作为阿里云流量入口负载均衡控制软件,能够进行路由、流量分发、http服务注册等功能;但是后端只能接入http协议,无法实现按照商户限流,路由规则简单,无法满足金融行业需求,并且应用必须上云后才能使用slb。
技术实现要素:
针对相关技术中存在的问题,本发明的目的在于提供一种api管理方法和api网关系统,可以减少配置出错概率,完全实现了api元数据管理的要求,避免了手工更改文件带来的风险,实现了对所有节点的统一管理并且整个配置变更只需要操作配置界面,不需要修改lua脚本,便于业务开发团队使用。
根据本发明的实施例,一种api管理方法,包括:当api配置数据有变动时,通知服务端;服务端在收到通知之后,拉取变动的api配置数据;服务端将拉取到的api配置数据存放在本地文件中。
根据本发明的实施例,api管理方法还包括:采用灰度下发流程下发api配置数据,灰度下发流程包括:在下发api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求;在同一个域下,灰度下发流程不终结,不启动新的流程。
根据本发明的实施例,api管理方法还包括:在服务端中的任意一个服务端启动时,任意一个服务端从网关管理端拉取api配置数据,若拉取不成功,则从本地文件获取api配置数据。
根据本发明的实施例,api管理方法还包括:根据api配置数据将api配置信息转换为api映射;根据解析的http信息与api映射进行匹配;在匹配成功之后,根据客户端ip、商户id、访问请求参数中的至少一种进行限流处理。
根据本发明的实施例,api管理方法还包括:通过心跳检测算法检测异常的服务端。
根据本发明的实施例,api管理方法中,拉取变动的api配置数据包括:所述服务端监听相应的分布式应用程序协调服务节点,并根据所述分布式应用程序协调服务节点中的变更id拉取变动的所述api配置数据。
根据本发明的实施例,一种api网关系统,包括网关管理端和服务端,其中,网关管理端用于当api配置数据有变动时通知服务端;服务端用于在收到通知之后,从网关管理端拉取变动的api配置数据并将拉取到的api配置数据存放在本地文件中。
根据本发明的实施例,api网关系统的网关管理端还用于:采用灰度下发流程下发api配置数据,灰度下发流程包括:在下发api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求;在同一个域下,灰度下发流程不终结,不启动新的流程。
根据本发明的实施例,api网关系统在服务端中的任意一个服务端启动时,任意一个服务端从网关管理端拉取api配置数据,若拉取不成功,则从本地文件获取api配置数据。
根据本发明的实施例,api网关系统的服务端还用于:根据api配置数据将api配置信息转换为api映射,以及,在根据解析的http信息与api映射进行的匹配成功之后,根据客户端ip、商户id、访问请求参数中的至少一种进行限流处理。
根据本发明的实施例,api网关系统通过心跳检测算法检测异常的服务端。
根据本发明的实施例,api网关系统的服务端还用于:所述服务端监听相应的分布式应用程序协调服务节点,并根据所述分布式应用程序协调服务节点中的变更id拉取变动的所述api配置数据。
本发明的有益技术效果在于:本发明通过统一的网关管理端,对所有节点进行控制,完成api配置。配置元数据存储在数据库,记录全部变更过程。配置下发存在流程控制,可以减少配置出错概率。因此完全实现了api元数据管理的要求,下发时通过管理端统一批量推送,避免了手工更改文件带来的风险,实现了对所有节点的统一管理;整个配置变更只需要操作配置界面,不需要修改lua脚本,便于业务开发团队使用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明一个实施例的一种api管理方法的流程图;
图2是根据本发明一个实施例的网关系统的示意图;
图3是根据本发明一个实施例的灰度下发流程的示意图;
图4是根据本发明一个实施例的灰度下发的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供了一种api(应用程序接口)管理方法,包括:
s11,当api配置数据有变动时,通知服务端。
s12,服务端在收到通知之后,拉取变动的api配置数据。
s13,服务端将拉取到的api配置数据存放在本地文件中。
本发明的上述技术方案,通过在api配置数据有变动时,通知服务端,服务端在收到通知之后,拉取变动的api配置数据,将拉取到的api配置数据存放在本地文件中。可以配置api元数据存储在数据库,记录全部变更过程,与现有的修改配置文件的方法相比,api配置数据不再依赖于文件系统,而是将api配置数据做为元数据精细化管理,持久化存储,使得配置下发过程更安全可靠。
如图2所示,本发明通过统一的网关管理端,对所有节点进行控制并完成api配置。其中,本发明的网关系统可以包括管理(admin)端、服务(server)端、服务注册发现代理(agent)端。网关系统采用大集群多租户方式管理业务接入和部署,按照:集群-业务域两个层级划分接入域;server端承接外部流量,负责协议转换、限流、路由等功能;注册发现agent端负责监听业务应用服务实例信息,根据监听结果将服务上线或下线。服务注册信息的读取流程如下:直接从zk节点中读取每个实例对应的服务注册信息。其中服务注册信息可以包括appname、实例ip port、实例状态、实例分组标签。服务注册信息实时性强,因此不需要缓存至本地文件。对于网关系统中的server端,通过抽象的协议适配器技术对接后端多种服务类型,后端服务可接入微服务框架、消息系统,实现http-微服务、http-消息系统的协议转换。因此后端服务满足了服务化框架的接入。
进一步的,admin端用于管理网关运行api配置数据,如果api配置数据有变动,则通过网关分布式应用程序协调服务(zookeeper,zk)通知server端,server端接收到变动通知后,调用admin端接口拉取变动的api配置数据。
admin端下发api配置数据。api配置数据的下发配置支持灰度-全量下发,对于已下发的api配置数据,可进行回滚操作。下发api配置数据时,通过网关zk通知server端有数据变更。下发采用整域全量下发模式。下发时通过admin端统一批量推送,避免了手工更改文件带来的风险,实现了对所有节点的统一管理。
根据本发明的实施例,如图3和图4所示,在修改api配置信息之后启动下发流程,然后进入灰度下发的流程。在采用灰度下发流程下发api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求。另外,在同一个域下,只允许一个流程存在,灰度下发流程不终结,不启动新的流程(包括不启动新的撤销和回滚流程)。只有以下几种操作会导致灰度下发流程的终结:最终全量下发并且流程确认或忽略、被撤销。灰度下发流程只有进行到全量下发阶段,才会出现流程确认和忽略的操作按钮。
本发明通过配置和服务分离管理,api配置数据灰度下发的方式,保证了api配置数据变更对访问请求的影响最小化,每次配置变动,server端通过版本比对只需增量改动本次变更数据,相比于全量更新模式,增量变更对api接口影响最小(2毫秒内处理完毕),实现了访问请求对配置变更无感知。同时本发明配置下发的流程控制,可以减少配置出错概率,使得配置下发过程更安全可靠,在api管理上应更加简便。整个配置变更只需要操作配置界面,不需要修改lua脚本,使业务人员能够直接参与配置维护,便于业务开发团队使用。
另外,当网关系统的server端启动时:按照全量模式到admin端拉取api配置数据,如果拉取不成功,则读取本地配置文件来加载api配置数据,如果本地加载不成功,则网关启动失败。这样,当admin端或者网关zk无法正常服务时,server端可以依赖于本地存储文件启动并提供服务,能够通过减少server端的外部依赖来提升api网关的健壮性和可靠性。
根据本发明的实施例,server端拉取变动的api配置数据具体包括:通过网关zk通知来触发配置信息拉取服务,每个server端集群对应一个zk节点,server端可以根据环境变量中的server端集群名监听zk节点,根据zk节点中的变更id,调用admin端接口拉取api配置数据。并且,将拉取到的api配置数据首先存放在本地文件中,以供网关系统启动时备选使用,然后解析api配置信息,将api配置信息转换成api映射(apimap)。
然后可以进行流量匹配流程。在一个实施例中,可以在netty(java开源网络应用程序框架)work线程中处理流量。admin端根据netty解析的http信息,至apimap中进行匹配,匹配规则可以是host(客户端) path(路由)。匹配失败则返回失败结果;匹配成功,则可以按照如下filter链进行处理:限流配置-服务路由-调用后端服务-处理response(响应)信息-返回数据,这期间采用全异步方式调用后端的server端。server端使用filter链技术处理请求,请求包括:api映射、限流、鉴权、异常处理、回调处理、路由。根据本发明的实施例,可以采用多层路由分发技术实现同一个url地址向多个不同后端应用、应用内部不同实例之间的复杂路由,可以根据http请求体、请求头中的参数设置路由规则,满足了金融行业客户路由规则复杂的场景。
可以通过api网关的封禁能力进行限流配置。具体的,可以根据客户端ip、商户id、或者访问请求中的指定参数进行访问封禁,因此可以保护后端服务免受异常访问攻击。因此可以根据ip、会话、商户id等维度进行限流;同时,通过限流技术,保障后端服务在可承受的压力范围内对外提供服务,可针对特定商户设定不同限流策略,以解决金融行业灵活复杂限流场景。在一个实施例中,可以采用滑动窗口计数器算法来解决金融行业复杂限流场景。
此外,还可以对后端服务实例采用心跳检测算法检测异常的服务端,网关系统还可以自动摘除检测到的异常服务节点,并发出告警信息。这样可以针对异常访问快速做出响应,确保正常请求和后端服务不受影响。可以减少后端服务异常带来的影响,并提升后端服务异常恢复效率。
参考图2所示,本发明还提供了一种api网关系统,包括:网关admin端和server端,其中,网关admin端用于当api配置数据有变动时通知server端;server端用于在收到通知之后,从网关admin端拉取变动的api配置数据并将拉取到的api配置数据存放在本地文件中。
在一个实施例中,api网关系统的网关admin端还用于:采用灰度下发流程下发api配置数据,灰度下发流程包括:在下发api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求;在同一个域下,灰度下发流程不终结,不启动新的流程。
在一个实施例中,api网关系统在server端中的任意一个server端启动时,任意一个server端从网关admin端拉取api配置数据,若拉取不成功,则从本地文件获取api配置数据。
在一个实施例中,api网关系统的server端还用于:根据api配置数据将api配置信息转换为api映射,以及,在根据解析的http信息与api映射进行的匹配成功之后,根据客户端ip、商户id、访问请求参数中的至少一种进行限流处理。
在一个实施例中,api网关系统通过心跳检测算法检测异常的server端。
在一个实施例中,api网关系统的server端还用于:根据环境变量中的server端集群名监听每个server端集群的zk节点,并根据zk节点中的变更id拉取变动的api配置数据。
本发明提供的网关系统,通过统一的网关管理端,对所有节点进行控制,完成api配置。配置元数据存储在数据库,记录全部变更过程。配置下发存在流程控制,可以减少配置出错概率。因此完全实现了api元数据管理的要求,下发时通过管理端统一批量推送,避免了手工更改文件带来的风险,实现了对所有节点的统一管理;整个配置变更只需要操作配置界面,不需要修改lua脚本,便于业务开发团队使用。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种api管理方法,其特征在于,包括:
当api配置数据有变动时,通知服务端;
所述服务端在收到所述通知之后,拉取变动的所述api配置数据;
所述服务端将拉取到的所述api配置数据存放在本地文件中。
2.根据权利要求1所述的api管理方法,其特征在于,还包括:采用灰度下发流程下发所述api配置数据,所述灰度下发流程包括:
在下发所述api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求;
在同一个域下,所述灰度下发流程不终结,不启动新的流程。
3.根据权利要求1所述的api管理方法,其特征在于,还包括:在所述服务端中的任意一个服务端启动时,所述任意一个服务端从网关管理端拉取api配置数据,
若拉取不成功,则从所述本地文件获取所述api配置数据。
4.根据权利要求1所述的api管理方法,其特征在于,还包括:
根据所述api配置数据将api配置信息转换为api映射;
根据解析的http信息与所述api映射进行匹配;
在匹配成功之后,根据客户端ip、商户id、访问请求参数中的至少一种进行所述限流处理。
5.根据权利要求1所述的api管理方法,其特征在于,还包括:通过心跳检测算法检测异常的服务端。
6.根据权利要求1所述的api管理方法,其特征在于,拉取变动的所述api配置数据包括:所述服务端监听相应的分布式应用程序协调服务节点,并根据所述分布式应用程序协调服务节点中的变更id拉取变动的所述api配置数据。
7.一种api网关系统,其特征在于,包括网关管理端和服务端,其中,
网关管理端用于当api配置数据有变动时通知所述服务端;
服务端用于在收到所述通知之后,从所述网关管理端拉取变动的所述api配置数据并将拉取到的所述api配置数据存放在本地文件中。
8.根据权利要求7所述的api网关系统,其特征在于,所述网关管理端还用于:采用灰度下发流程下发所述api配置数据,所述灰度下发流程包括:
在下发所述api配置数据时,根据选中的客户端ip过滤不在选择范围内的请求;
在同一个域下,所述灰度下发流程不终结,不启动新的流程。
9.根据权利要求7所述的api网关系统,其特征在于,在所述服务端中的任意一个服务端启动时,所述任意一个服务端从所述网关管理端拉取api配置数据,
若拉取不成功,则从所述本地文件获取所述api配置数据。
10.根据权利要求7所述的api网关系统,其特征在于,所述服务端还用于:
根据所述api配置数据将api配置信息转换为api映射,以及
在根据解析的http信息与所述api映射进行的匹配成功之后,根据客户端ip、商户id、访问请求参数中的至少一种进行所述限流处理。
11.根据权利要求7所述的api网关系统,其特征在于,通过心跳检测算法检测异常的服务端。
12.根据权利要求7所述的api网关系统,其特征在于,所述服务端还用于:所述服务端监听相应的分布式应用程序协调服务节点,并根据所述分布式应用程序协调服务节点中的变更id拉取变动的所述api配置数据。
技术总结