一种基于Kong网关实现的正向代理方法与流程

文档序号:18081531发布日期:2019-07-06 10:07阅读:1644来源:国知局
一种基于Kong网关实现的正向代理方法与流程

本发明涉及计算机技术领域,尤其涉及一种基于kong网关实现的正向代理方法。



背景技术:

在运营app产品后台技术中,需要与众多第三方供应商的数据api接口对接,以便在自建的数据仓库无法满足用户的查询请求时,便将请求分发至合作方的api接口,以最终为用户提供服务。

最初的技术实现是将第三方的数据接口地址,直接硬编码在各类后台应用代码中,生产环境应用服务器直接与公网的第三方api接口进行通讯,生产环境的所有机器全部能够与外网进行通讯。但现有技术存在以下缺点:

一、维护成本高:

随着公司业务规模的扩大,对接的第三方数据api越来越多,第三方数据源采用的协议、域名、地址各家各样,汇集在一起杂乱无章,毫无规律性可言,对识别、记忆、沟通造成诸多不便。再加上商务合作的变更,也需要频繁修订所有涉及应用的配置文件,维护难度大的缺点逐渐凸显。

二、网络结构:

1、后台应用直接与位于公网环境的第三方api交互,要求所有的后台服务器必须要有公网带宽,能够与公网节点进行通讯。造成生产环境的内外网隔离、网段容量规划不受运维人员主控,需要对应用代码的实现逻辑将就。

2、后台应用与第三方api的交互,跟正常的业务请求处理占用一个网络通道,无法进行流量区分,也无法针对性升级。

三、运维管理:

1、后台应用与第三方api的交互发生在众多应用服务器,网络带宽消耗、连接数、延时、交互结果等数据分布扩散,很难进行统一监控和管理。

2、后台应用在公有云部署时,因需要与公网通讯,无法使用更便宜的内网云主机,必须使用有外网带宽的云主机,经济成本高。

四、性能问题

1、dns解析造成的响应延迟大。第三方api的接口地址只有少部分是直接使用ip地址,大部分是域名。在与第三方api交互时,操作系统层需要完成大量的第三方域名的域名解析,且因第三方api的cdn、安防策略的缘故,也无法通过建立内部dns服务器减少公网域名解析代价。

2、防火墙资源消耗增加。数量众多的应用后台服务器,各自频繁主动发起对外的tcp连接请求,造成防火墙nat地址转换、安全规则匹配、包过滤、日志记录开销增大,防火墙cpu资源消耗居高不下。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于kong网关实现的正向代理方法,以解决背景技术中提出的问题。

为实现上述目的,本发明提供了一种基于kong网关实现的正向代理方法,第三方数据api接口consumer以及kongapi网关位于无公网访问权限的内网网段,kongapi网关上运行forward_proxy插件,forward_proxy插件通过标准proxy代理服务器连接运行在公网的第三方数据api接口upstream,所述kong网关上配置service和route路由策略,该功能由kong原生提供,对service启用forward_proxy插件,该插件执行正向代理转发逻辑,由lua语言实现,具体的流程为:

consumer发起一个对route地址的post请求,当匹配route地址的请求对象到达kong网关,forward_proxy从kong的数据库缓存对象中,查询到与该route地址匹配的service对象,从service对象解析出upsream节点的api接口地址;

forward_proxy修改原请求对象的host头部,将route地址替换成upsream节点api接口的域名,同时将请求转发至proxy标准代理服务器;

proxy收到请求后,从请求对象的host地址获知请求最终去向,将请求转发至upstream节点api地址;

upstream节点收到请求,处理请求,回复响应至proxy,proxy转发响应至kong网关,kong网关增加一些自定义头部,再转发响应至consumer。

进一步地,所述标准proxy代理服务器为一个或者多个。

进一步地,所述upstream节点使用http和https两种协议。

本发明的有益效果是:

1、引进kong网关之后,外部第三方的api的维护可以在kong网关中统一管理维护,对后台代码侵入较少;

2、通过kong的正向代理转发(forward_proxy)插件,后台应用发送至kong网关upstream节点的请求,最终被kong转发给了正向代理服务器,由代理服务器转发给upsream节点。因此kong网关和后台应用均可以部署在内网,只需要保证kong网关跟正向代理服务器和后台应用之间的内网通讯正常即可,方便了生产网络结构和容量规划;

3、在业务层,正向代理服务器可以部署在专门的网络节点,为此实现了正常业务流量跟与第三方api交互带来的流量进行区分,避免在出口带宽和出口设备资源上的竞争;

4、借助kong网关开源的prometheus插件进行日志采集,与grafana配合实现了数据监控可视化,让后台应用与第三方的api交互过程,变得透明可控,方便运维管理。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的架构示意图。

具体实施方式

如图1所示,一种基于kong网关实现的正向代理方法,第三方数据api接口consumer以及kongapi网关位于无公网访问权限的内网网段,kongapi网关上运行forward_proxy插件,forward_proxy插件通过标准proxy代理服务器连接运行在公网的第三方数据api接口upstream,所述kong网关上配置service和route路由策略,该功能由kong原生提供,对service启用forward_proxy插件,该插件执行正向代理转发逻辑,由lua语言实现,具体的流程为:

consumer发起一个对route地址的post请求到达kong网关,forward_proxy从kong的数据库缓存对象中,查询到与该route地址匹配的service对象,从service对象解析出upsream节点的api接口地址;

forward_proxy修改原请求对象的host头部,将route地址替换成upsream节点api接口的域名,同时将请求转发至proxy标准代理;

proxy收到请求后,从请求对象的host地址获知请求最终去向,将请求转发至upstream节点api地址;

upstream节点收到请求,处理请求,回复响应至proxy,proxy转发响应至kong网关,kong网关增加一些自定义头部,再转发响应至consumer。

其中,上述英文释义为:

consumer:在公司的应用场景,是指各类后台应用,调用托管在kong网关上的第三方数据api接口;

kong:mashape公司开源的api网关;

forward_proxy:运行在kong网关上的一个正向代理转发插件;

标准proxy:http/https代理服务器;

upstream:在公司的应用场景,是指运行在公网的第三方数据api接口;

部署时,consumer、kong、标准proxy、upstream所处的网络位置如图1所示,从部署架构图上可以看出,consumer不是直接向upstream节点接口发送请求的,而是会经过kong网关和proxy代理,将请求转发至upstream节点接口。因此,只需要将proxy部署在有公网访问权限的网段,consumer和kong都可以隐藏在无公网访问权限的网域内。

配置方法:

1、需要在kong网关上配置service和route路由策略,该功能由kong原生提供。假定:

route地址为:http://api.example.com/api/v1/poetry

service地址为:https://api.apiopen.top/recommendpoetry

2、对service启用forward_proxy插件,该插件执行正向代理转发逻辑,由lua语言实现。

请求流程如下:

consumer发起对route地址http://api.example.com/api/v1/poetry的post请求,当匹配route地址【http://api.example.com/api/v1/poetry】的请求对象到达kong网关时,forward_proxy从kong的数据库缓存对象中,查询到与该route地址匹配的service对象,从service对象解析出upsream节点的api接口地址。

forward_proxy修改原请求对象的host头部,将地址从api.example.com替换成upsream节点api接口的域名api.apiopen.top,同时将请求转发至proxy标准代理。

proxy收到请求后,从请求对象的host地址,获知请求最终去向,将请求转发至upstream节点api地址https://api.apiopen.top/recommendpoetry。

upstream节点收到请求,处理请求,回复响应至proxy,proxy转发响应至kong网关,kong网关增加一些自定义头部,再转发响应至consumer。

本发明解决的技术问题是:

1、为了解决api管理问题,技术团队引入了kong网关。并且通过自行研发运行在kongapi网关的forward_proxy插件,使得kongapi网关在api管理的基础上,增加具备正向代理转发的功能,以便kongapi网关部署在公网隔离的内网环境时,也能通过与标准代理结合,处理consumer对upstream节点的请求,且支持upstream节点使用http和https两种协议。

2、kong并未开源正向代理转发的功能,在kong的收费enterprise版本中包含了正向代理转发功能,但当前仍不能支持https协议。

本发明具有以下优势:

1、引进kong网关之后,外部第三方的api的维护可以在kong网关中统一管理维护,对后台代码侵入较少;

2、通过kong的正向代理转发(forward_proxy)插件,后台应用发送至kong网关upstream节点的请求,最终被kong转发给了正向代理服务器,由代理服务器转发给upsream节点。因此kong网关和后台应用均可以部署在内网,只需要保证kong网关跟正向代理服务器和后台应用之间的内网通讯正常即可,方便了生产网络结构和容量规划;

3、在业务层,正向代理服务器可以部署在专门的网络节点,为此实现了正常业务流量跟与第三方api交互带来的流量进行区分,避免在出口带宽和出口设备资源上的竞争;

4、借助kong网关开源的prometheus插件进行日志采集,与grafana配合实现了数据监控可视化,让后台应用与第三方的api交互过程,变得透明可控,方便运维管理。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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