数字中国·星火文集 | Kong网关服务介绍及应用
Kong网关服务介绍及应用
神州控股
宫建飞
1.
知识图谱的不完备性需要知识推理来补全
许多政务项目中需要制作API给客户或者其他伙伴使用,接口服务部署到服务器上,生成url地址并通过反向代理将接口的url通过统一的端口提供给用户。
单节点API服务架构图
我们将这种部署API服务的服务器称为运行节点。
由于每个API服务都需要使用服务器资源,每个服务器上部署的API服务是有限的,所以通常会有多个运行节点。
多节点API服务架构
每个服务器的ip地址是不同的,用户想要访问不同的API接口,还需要知道这个API所在的服务器地址,无法提供统一的接口地址,而且用户只需要知道API的地址就可以直接访问API,数据没有安全性的防护,因此需要引入网关服务,将所有运行节点的API接口注册到网关服务上,通过网关将接口地址提供用户使用,用户只需要访问网关服务器就可以访问所有运行节点上的接口,在网关上增加权限校验的功能,保护数据的安全。
增加网关后API服务架构图
2.
Kong的介绍
Kong Gateway 是一个轻量级、快速、灵活的云原生 API 网关,是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
Kong的特点:
1、可扩展性: 通过简单地添加更多的服务器,可以轻松地进行横向扩展,这意味着您的平台可以在一个较低负载的情况下处理任何请求。
2、在任何基础架构上运行: Kong网关可以部署在单个或多个数据中⼼环境的私有云或公有云上。它还⽀持⼤多数流⾏的操作系统,⽐如Linux、Mac和Windows。Kong包括许多实⽤技巧,以便针对⼤多数现代平台完成安装和配置⼯作。
3、Restful风格修改配置:KONG的任何修改设置都是通过restful api发送请求来完成的,无需手动处理各种配置文件,配合UI可实现更佳简单的使用效果。
4、插件化: 可以通过添加新的插件进行扩展,这些插件可以通过RESTful Admin API轻松配置;即插即用。
Kong本质上就是对API的代理,将API的地址注册到Kong上,用户的请求通过Kong,转发到对应的节点上。Kong的强大之处在于提供了丰富的插件扩展功能,插件集(可以是 0 或 N 个)在 API 请求响应循环的生命周期中被执行。插件使用 Lua 编写,基础功能包括:HTTP 基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 Nginx 监控等。
Kong拥有丰富的插件群来解决我们本来需要重复手动配置或者需要自己实现的内容,通过插件可以带来各种场景更加方便使用。Kong的插件分为几大模块:
1、Authentication:权限验证插件,kong支持多中授权验证的方式,包括Oauth2.0、Hmac、basic、key Authentication等。
2、Security:安全插件,保护API接口的安全性,防止恶意访问、攻击API。包括Bot Detection、IP Restriction、Salt Security、Kong Path Allow、Signal Sciences等。
3、Traffic Control:对API请求的限制。包括ACL、Canary Release、Rate Limiting、Response Size Limiting等。
4、Analytics & Monitoring:分析与监控,将kong的访问记录发送给第三方的数据分析服务,对API的性能做分析。包括Datadog、Zipkin、SinganlFx等。
5、Transformations:转换,对API的请求和响应做修改,包括 Request Transformer、Response Transformer、Template Transformer等。
6、Logging:日志插件,将访问API的日志信息发送给第三方任务。包括File Log、HTTP Log、TCP Log、UDP Log等。
3.
知识图谱的不完备性需要知识推理来补全
在湘西政务项目中,客户需要实现各个委办局之间的数据可以互相申请访问,我们把他们需要的数据制作成API接口,部署服务器上;客户需要实现数据之间的共享访问,就需要网关的功能了。具体操作步骤如下:
1、将API接口注册到Kong网关上
注册到网关上的API接口
2、创建不同的key作为秘钥分配给不同的用户
访问秘钥的列表
3、为不同秘钥添加允许访问的API,进行权限的校验,实现访问权限的控制。
为秘钥添加允许访问的API
用户通过申请访问其他委办局的API接口,通过管理员审批后,将该用户的秘钥添加到API的ACL插件中,用户携带秘钥就可以访问这个API的数据,从而实现了数据共享交换的功能。
4.
结语
Kong作为API网关提供了API管理功能,及围绕API管理包含了一些默认的插件,另外还具备集群水平扩展能力,整体吞吐量大幅提升。我们以湘西政务数据共享交换平台项目为例,介绍了kong网关的操作和使用过程,在不同部门直接数据共享交换中取得了满意效果。