基于KONG的微服务API网关
文 | 综合代维支撑团队
- Kong的简单介绍 -
Kong是一款基于Nginx 、Apache Cassandra(或PostgreSQL)技术的开源API网关框架,主要特点是高性能以及其强大的扩展性。
由于本身是基于Nginx进行开发,通过扩展多个Kong服务实例以及前置的负载均衡配置,可以应对大批量的网络请求。开发者亦可使用 Lua 编写插件模块,扩展已有功能,这些插件在 API 请求响应循环的生命周期中将被执行。
Kong本身也已经集成了相当多的插件,包括CORS跨域、logging、限流、转发、健康检查、熔断、黑白名单等。API Gateway网关使搭建一个新的微服务框架变得简单、快捷、高效。因此,开发者可以将更多精力放在和业务紧密相关的工作上。
- Kong的使用实例 -
Kong安装相对简单:首先安装Apache Cassandra(或PostgreSQL)数据库,下载Kong安装包并按官网的命令安装,接着初始化数据库,即可启动服务。当然,也可以在docker hub下载Kong镜像,免安装运行。
我们可以通过使用RESTful API来操作和配置Kong,这里推荐使用pantsel/konga(开源的Kong仪表盘,通过web页面更方便查看设置Kong),下面通过查询代维系统的组织基本信息的API例子,为大家介绍Kong代理转发及限流功能。
具体步骤如下:
步骤一:创建upstream对象服务,同时也可以针对此上游对象设置健康检查。
添加upstream界面
步骤二:为upstream对象添加对应的target,即IP和端口(如果有多个服务器可以继续添加target,根据服务器的负载能力填写权重大小,默认为100)。
添加target界面
步骤三:添加与upstream对应的server对象,填写路径,端口,以及读写超时信息。
添加server界面
步骤四:为server添加对应的route。这样,一个完整的API代理转发的规则就已经完成了。
添加route界面
步骤五:最后,我们为这个API添加一个限流插件,可以通过server或者route添加或删除限流插件,根据自己的业务需要填写限制次数,无需重启Kong服务即可生效。
添加plugin界面
当客户端在设定时间内访问此API接口超过设定数量时,Kong服务将会给客户端返回”Too Many Requests”错误,如下图所示:
- 小结 -
Kong支持蓝绿部署,金丝雀发布。在修改配置,甚至升级版本时都不需要重启Kong服务,有效保障业务功能正常运行。
本期嘉宾
本期嘉宾 | 广东移动综合代维管理系统支撑团队
一群90后青春活力团队,团队成员包括:徐容样、罗锡师、潘志伟、何灏天、许子珊等人。团队致力于建设高效运维、减员增效的综合代维平台,快速响应广东网管中心DEVOPS的要求,率先将自动化测试用应于DEVOPS流水线,大幅降低人工测试的工作量,更好的保证了存量功能点的测试覆盖率。
你可能还喜欢