API网关之Kong网关简介

article/2025/8/27 6:21:10

1. Kong简介

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

API网关应用架构

Kong主要有三个组件:

  1. Kong Server :基于nginx的服务器,用来接收API请求。

  2. Apache Cassandra/PostgreSQL :用来存储操作数据。

  3. Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。

Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

2. Kong网关的特性

Kong网关具有以下的特性:

  • 可扩展性: 通过简单地添加更多的服务器,可以轻松地进行横向扩展,这意味着您的平台可以在一个较低负载的情况下处理任何请求;

  • 模块化: 可以通过添加新的插件进行扩展,这些插件可以通过RESTful Admin API轻松配置;

  • 在任何基础架构上运行: Kong网关可以在任何地方都能运行。您可以在云或内部网络环境中部署Kong,包括单个或多个数据中心设置,以及public,private 或invite-only APIs。

Kong网关架构

  1. Kong核心基于OpenResty构建,实现了请求/响应的Lua处理化;

  2. Kong插件拦截请求/响应,如果接触过Java Servlet,等价于拦截器,实现请求/响应的AOP处理;

  3. Kong Restful 管理API提供了API/API消费者/插件的管理;

  4. 数据中心用于存储Kong集群节点信息、API、消费者、插件等信息,目前提供了PostgreSQL和Cassandra支持,如果需要高可用建议使用Cassandra;

  5. Kong集群中的节点通过gossip协议自动发现其他节点,当通过一个Kong节点的管理API进行一些变更时也会通知其他节点。每个Kong节点的配置信息是会缓存的,如插件,那么当在某一个Kong节点修改了插件配置时,需要通知其他节点配置的变更。

3. Kong网关插件

  1. 身份认证插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。

  2. 安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。

  3. 流量控制插件:请求限流(基于请求计数限流)、上游响应限流(根据upstream响应计数限流)、请求大小限制。限流支持本地、Redis和集群限流模式。

  4. 分析监控插件:Galileo(记录请求和响应数据,实现API分析)、Datadog(记录API Metric如请求次数、请求大小、响应状态和延迟,可视化API Metric)、Runscope(记录请求和响应数据,实现API性能测试和监控)。

  5. 协议转换插件:请求转换(在转发到upstream之前修改请求)、响应转换(在upstream响应返回给客户端之前修改响应)。

  6. 日志应用插件:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

4. Kong网关请求流程

为了更好地理解系统,这是使用Kong网关的API接口的典型请求工作流程:

请求流程

当Kong运行时,每个对API的请求将先被Kong命中,然后这个请求将会被代理转发到最终的API接口。在请求(Requests)和响应(Responses)之间,Kong将会执行已经事先安装和配置好的任何插件,授权您的API访问操作。Kong是每个API请求的入口点(Endpoint)。

5. 总结

Kong作为API网关提供了API管理功能,及围绕API管理实现了一些默认的插件,另外还具备集群水平扩展能力,从而提升整体吞吐量。Kong本身是基于OpenResty,可以在现有Kong的基础上进行一些扩展,从而实现更复杂的特性。

虽然有一些特性Kong默认是缺失的,如API级别的超时、重试、fallback策略、缓存、API聚合、AB测试等,这些功能插件需要企业开发人员通过Lua语言进行定制和扩展。

综上所述,Kong API网关默认提供的插件比较丰富, 适应针对企业级的API网关定位。

以下是个人微信公众号, 用于学习与交流, 欢迎大家关注。
运维前沿公众号


http://chatgpt.dhexx.cn/article/FflTZ0CZ.shtml

相关文章

如何手撕一个API 网关(API Gateway)?

一、什么是API Gateway 一个比较普遍的定义如下: API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。 API网关方式的核心要点是&…

接口网关

1、什么是接口网关? 接口网关的作用:拦截请求,类似Nginx(在nginx中配置拦截策略),对该请求进行权限控制,负载均衡、日志管理、接口调用监控等 所有请求都交给接口网关,让网关再进行…

微服务中的 API 网关(API Gateway)

以下是个人于搭建脚手架过程中的一些理念。 SpringCloud微服务架构中,会使用到网关服务。那么可想而知,网关作为边缘服务,其承受的压力是最大的,当然是要考虑网关的高可用,那么就需要多个网关服务集群部署&#xff0c…

API网关,网关平台API流量统一入口

API网关作为API网关平台的API流量的统一入口承担着非常重要的数据输入输出工作,API网关最核心的作用是对服务进行路由并进行数据转发,API网关将成为前后端交互以及内外网交互的唯一数据进出口,所以API网关适合于进行服务鉴权.数据缓存.流量控…

API 网关 (API Gataway)

API 网关 (API Gataway) API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会…

云原生中为什么需要API网关?

目录 一、API 的状态二、API 价值链三、API 挑战四、安全和访问控制五、可靠性和性能六、可见性和治理七、什么是 API 网关?八、为什么需要 API 网关?九、结论越来越多的组织正在转向 API 驱动的架构。 这种强大的方法可帮助他们快速创新,与同类最佳的外部服务集成,并以前所…

API网关介绍及选型(kong)

文章目录 为什么需要 API 网关API网关的功能API网关选型API 网关实现对比 kong vs tyk kongKong 支持功能Kong 的管理方式kong端点kong策略模式 docker启动kong基于kong oauth2 acl的用户接入权限管理整体流程需求实现 API网关是一个服务器,是系统的唯一入口。从面…

API 网关如何工作?

API 网关如何工作? 在本文中阅读和探索 API 网关、其优势及其工作原理! 鲁奇塔瓦玛 API 网关是微服务架构的重要组成部分。API 网关是一种软件模式,它放置在应用程序编程接口 (API) 或一组微服务之前,以促进传入请求和传出数据和服…

API网关

1、API网关介绍 API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分…

一文搞懂 API 网关

Content 前言API GatewayAPI注册协议转换服务发现服务调用优雅下线性能缓存限流稳定性熔断降级日志隔离网关管控平台其他 总结 前言 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。 那么这里就会遇到一…

使用spring cloud搭建微服务框架

bubbozookeeper制作的基于dubbo的微服务框架,可以说算是有点过时了,我们先来了解一下什么是微服务。 微服务就是对某个应用系统的每个API进行有效的拆分,然后通过某种连接方式,用以提供给其他应用系统调用的API的服务,…

开源微服务框架 汇总

诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式。 关于微服务架构是什么,没有一个明确的定义,每个实…

微服务框架支持

事务上下文 目录概述需求: 设计思路实现思路分析1.Seata 的事务上下文由 RootContext 来管理。2.应用可以通过 RootContext 的 API 接口来获取当前运行时的全局事务 XID。3.应用是否运行在一个全局事务的上下文中,就是通过 RootContext 是否绑定 XID 来判…

开源微服务框架

诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式。 关于微服务架构是什么,没有一个明确的定义,每个实…

微服务框架入门(springcloud)

在学习微服务之前我们先理解一下什么是微服务? 微服务是springcloud吗? 微服务是分布式架构的一种,分布式架构就是要把服务拆分,拆分的过程中存在着许多的问题,springcloud仅仅是解决了拆分过程中的服务治理问题,至于其他的复制的问题并没有给出方案 传统的架构把业务写在…

golang 微服务框架

rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。 谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。 不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源…

微服务框架-SpringCloud

3 总结 拜托!面试请不要再问我Spring Cloud底层原理_云深i不知处的博客-CSDN博客 最后再来总结一下,上述几个Spring Cloud核心组件,在微服务架构中,分别扮演的角色: Eureka:各个服务启动时,E…

SpringCloud微服务框架(通俗易懂,一秒上手)

🎁🎁资源:https://pan.baidu.com/s/1zRmwSvSvoDkWh0-MynwERA&pwd1234 SpringCloud微服务框架 (一)认识微服务服务架构演变SpringCloud (二)微服务拆分案例服务拆分服务间调用 (三…

微服务学习——微服务框架

Nacos配置管理 统一配置管理 配置更改热更新 将配置交给Nacos管理的步骤: 在Nacos中添加配置文件在微服务中引入nacos的config依赖在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个…

SpringCloud 微服务框架

单体架构:将业务全部功能集中到一个项目中,打成一个war包存储,部署在一台服务器中,只有一个数据库 优点 :架构简单,部署成本低。适合小型项目 问题:高并发性能问题,开发时代码耦合问题&#x…