1、简述
在当今数字化的时代,应用程序和服务之间的通信变得愈发复杂。为了简化和增强这种通信,开发者们经常使用API(Application Programming Interface)。API网关是管理、监控和安全维护API通信的关键工具之一。而在众多API网关中,Kong凭借其开源的特性、可扩展性和强大的功能集而备受关注。本文将深入探讨Kong的技术细节,解释其工作原理以及如何使用Kong构建强大的API生态系统。
Kong核心特性:
-
插件系统
Kong的强大之处在于其灵活的插件系统,允许开发者根据具体需求扩展和定制API网关的功能。有关核心功能之外的需求,可以通过官方提供的插件或者自定义插件来实现。 -
负载均衡
Kong通过Nginx的负载均衡功能,确保请求能够被均匀分配到后端服务,提高系统的可用性和性能。 -
认证和授权
Kong支持多种认证方式,包括基本身份验证、OAuth、JWT等,同时提供了细粒度的授权机制,确保只有合法用户能够访问受保护的资源。 -
日志记录
Kong提供了详尽的日志记录功能,可以轻松地监控API的调用情况、性能指标以及错误信息,有助于及时发现和解决问题。 -
分布式部署
Kong支持分布式部署,可以横向扩展以处理大规模的请求流量。这使得Kong成为适用于各种规模的应用和企业的理想选择。
2、原理
Kong的工作原理可以简要概括为接收来自客户端的API请求,经过一系列插件的处理,然后路由到相应的后端服务。以下是Kong的基本工作流程:
-
接收请求: 客户端发送API请求到Kong。
-
插件处理: 请求经过预定义的插件,执行一系列的操作,如认证、鉴权、日志记录等。
-
路由: 根据API请求的路由规则,Kong将请求路由到相应的后端服务。
-
后端服务: 请求最终到达后端服务,服务返回响应。
-
插件处理(响应阶段): 后端服务的响应同样会经过插件处理,进行日志记录、响应转换等操作。
-
返回响应: 经过插件处理后,Kong将响应返回给客户端。
3、安装PostgreSQL
Kong 目前使用 Cassandra 或者 PostgreSQL,可以根据业务需求选择 Database。这边选择的是PostgreSQL:
4、初始化PostgreSQL
使用 docker run –rm 来初始化数据库,该命令执行后会退出容器而保留内部的数据卷(volume)。但是要注意kong的版本和PostgreSQL的版本是否匹配,这边采用的11.1版本来匹配kong最新版本:
你可以通过Navicat Premium直接访问:
5、启动kong
完成初始化或者迁移数据库后,我们就可以启动一个连接到数据库容器的 Kong 容器,请务必保证你的数据库容器启动状态,同时检查所有的环境参数 -e 是否是你定义的环境。
Kong 默认绑定 4 个端口:
- 8000:用来接收客户端的 HTTP 请求,并转发到 upstream。
- 8443:用来接收客户端的 HTTPS 请求,并转发到 upstream。
- 8001:HTTP 监听的 API 管理接口。
- 8444:HTTPS 监听的 API 管理接口。
配置映射问题,我们可以通过docker cp [容器ID] 指令来拷贝/etc/kong目录下的配置文件:
然后docker run 添加-v指令映射配置文件:
备注:8001和8444端口是不对外,所有的流量都是通过8000或者8443端口进来。
6、安装konga
Kong是一款强大的API网关,而Konga则是Kong的可视化管理工具,使得API的配置和管理变得更加直观和便捷。本文将深入探讨Konga的技术细节,介绍它的特性、安装过程以及如何通过Konga管理Kong API网关。
- 管理所有 Kong Admin API 对象。
- 支持从远程源(数据库,文件,API等)导入使用者。
- 管理多个 Kong 节点。使用快照备份,还原和迁移 Kong 节点。
- 使用运行状况检查监视节点和 API 状态。
- 支持电子邮件和闲置通知。
- 支持多用户。
- 易于数据库集成(MySQL,PostgresSQL,MongoDB,SQL Server)。
初始化konga数据库:
启动konga:
验证是否安装成功:http://192.168.254.133:1337
7、创建连接点
8、Upstreams
Upstreams是Kong网关将流量转发到的多个target的集合,target可以是域名、ip,不同target可以有不同的port,且可分配不同的权重。通过使用upstream,Kong网关提供如下功能:
- 健康检查:Kong网关以特定策略,对target进行探活探死,若target不可用,Kong会将流量转发至其它健康的target;
- 熔断:根据健康检查的状态,对客户端请求进行熔断,防止后端级联服务雪崩;
- 负载均衡:使用ring-blancer将客户端流量均衡负载到健康的target上。
首先我们创建一个名为localfly的upstream:
添加target目标域名和端口,添加本地服务端口192.168.2.224:8000, 并分配权重:
9、SERVICES
抽象层面的服务,他可以直接映射到一个物理服务 (host 指向 ip + port),也可以指向一个 upstream 来做到负载均衡。通俗说,这个service就是后台访问接口配置。
然后添加当前路由规则Route路径:
可以Postman通过 kong的8000端口来请求本地服务服务:
10、Plugins
Kong通过插件Plugins实现日志记录、安全检测、性能监控和负载均衡等功能。下面我将演示一个例子,通过启动 key-auth实现简单网关安全检验。
通过指令来创建对应的key-auth验证:
10.1 创建Consumers
通知curl创建用户kkk:
10.2 分配Key
为kkk用户分配一个指定的key:
10.3、创建全局的key-auth
将默认的key标签apikey调整为token:
也可以通过指令命令行来创建:
10.4 请求
未使用token请求postman:
添加token请求postman:
10.5 插件
Kong 网关插件概括为如下:
- 身份认证插件:Kong 提供了 Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication 认证实现。
- 安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态 SSL、IP 限制、爬虫检测实现。
- 流量控制插件:请求限流(基于请求计数限流)、上游响应限流(根据 upstream 响应计数限流)、请求大小限制。限流支持本地、Redis 和集群限流模式。
- 分析监控插件:Galileo(记录请求和响应数据,实现 API 分析)、Datadog(记录 API Metric 如请求次数、请求大小、响应状态和延迟,可视化 API Metric)、Runscope(记录请求和响应数据,实现 API 性能测试和监控)。
- 协议转换插件:请求转换(在转发到 upstream 之前修改请求)、响应转换(在 upstream 响应返回给客户端之前修改响应)。
- 日志应用插件:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly 等
11、结论
Kong作为一个开源、灵活且功能强大的API网关,为构建健壮的微服务架构提供了可靠的基础。通过深入Navicat Premium 10.1.3激活理解Kong的核心特性和工作原理,开发者可以更好地利用这一工具来管理和保护其API生态系统。在未来,Kong将继续演进,成为更多企业和开发者构建可靠、高性能API的首选工具。
今天的文章
Navicat Premium 10.1.3激活(Docker:深入探讨Kong开源API 网关的力量)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/102811.html