当前位置: 首页 > article >正文

【Kong Gateway】全面解析Kong Gateway:服务、路由、upstream、插件的核心概念介绍

Kong Gateway 是一个功能强大的 API 网关,提供了丰富的 API 管理功能,包括流量控制、认证、路由、监控等。以下是 Kong Gateway 中的一些核心概念及它们之间的关系:

1. Service(服务)

定义:

在 Kong 中,Service 表示一个后端的上游服务,它是 API 请求的目标。每个 Service 都包含了与目标服务相关的配置,如服务地址、端口等。通过 Kong Gateway,客户端请求会被路由到对应的 Service,然后通过 Route 定义的规则将请求转发到服务的不同路径。

关联:

  • Service 是 Kong Gateway 中路由请求的目标,它会将请求转发到实际的上游服务器。
  • RouteService 紧密关联,Route 是将外部请求与内部的 Service 连接起来的桥梁。

示例:

创建一个 Service 时,你会指定它的上游服务器地址、协议等。

curl -X POST http://localhost:8001/services/ \
  --data "name=example-service" \
  --data "url=http://example.com"

2. Route(路由)

定义:

Route 是 Kong 中用于定义 API 路径和方法的实体。它指定了如何将外部请求(如 HTTP 请求)路由到一个或多个 Service。你可以为特定的请求配置路由规则,比如基于路径、方法、主机名等。

关联:

  • Route 通过与 Service 关联,决定了如何将客户端请求路由到后端的上游服务。
  • Route 可以与 Plugins 关联,用来对特定路由的请求进行处理,比如认证、限流等。

示例:

创建一个与 Service 关联的 Route,例如:

curl -X POST http://localhost:8001/routes \
  --data "service.id=example-service-id" \
  --data "hosts[]=example.com" \
  --data "paths[]=/api"

3. Consumer(消费者)

定义:

Consumer 是 Kong 中的一个抽象,代表一个服务的使用者。Consumer 用来管理与 API 服务的关系,例如认证信息、访问限制等。消费者可以是应用程序、用户、设备等。通过创建消费者,你可以对每个消费者单独配置访问策略和流量控制。

关联:

  • Consumer 可以和 Plugins 关联,用于为特定消费者配置流量限制、认证等策略。
  • Consumer 可以与 RouteService 关联,通过为不同消费者配置不同的 API 访问策略来实现细粒度的访问控制。

示例:

创建一个消费者:

curl -X POST http://localhost:8001/consumers/ \
  --data "username=jsmith"

4. Consumer Group(消费者组)

定义:

ConsumerGroup 是对多个 Consumer 的集合,用于更高效地管理多个消费者。它是对消费者的逻辑分组,可以在 Kong 中设置一个组策略,统一管理组内所有消费者的访问控制、限流等配置。虽然 Kong 原生没有 ConsumerGroup 的直接支持,但在某些场景中,可以通过创建多个消费者并通过命名方式管理,或者通过自定义 Plugin 来模拟类似的功能。

关联:

  • ConsumerGroup 中的每个 Consumer 都可以与 RouteService 以及 Plugins 关联,通过配置这些元素来实现批量管理和策略配置。

5. Upstream(上游)

定义:

Upstream 是 Kong 中用于定义多个上游服务实例的概念。通过 Upstream,你可以配置一个负载均衡池,其中包含多个 Target(即上游服务实例)。这样,当流量达到 Kong 时,Kong 会将请求负载均衡地分配到池中的服务实例上。

关联:

  • UpstreamService 紧密相关,它通过聚合多个目标服务来实现负载均衡。
  • TargetUpstream 的组成部分,用于定义具体的服务实例地址。Upstream 中的多个 Target 可以提供高可用性和负载均衡。
  • Service 可以选择绑定到一个 Upstream,从而将请求分发到不同的服务实例。

示例:

创建一个 Upstream 并添加多个 Target

curl -X POST http://localhost:8001/upstreams \
  --data "name=example-upstream"

curl -X POST http://localhost:8001/upstreams/example-upstream/targets \
  --data "target=192.168.1.1:80"

curl -X POST http://localhost:8001/upstreams/example-upstream/targets \
  --data "target=192.168.1.2:80"

6. Plugins(插件)

定义:

Plugin 是 Kong 用来扩展功能的模块。Kong 提供了多种插件,用于实现 API 管理的不同功能,如身份验证、限流、日志记录等。插件可以作用于不同的级别,包括全局、服务、路由、消费者等。

关联:

  • Plugin 可以与 ServiceRouteConsumer 等实体关联,以实现针对性的功能。
  • 插件可以用于控制 API 流量、实现认证、处理日志等。

示例:

Service 启用 Rate Limiting 插件:

curl -X POST http://localhost:8001/services/example-service/plugins \
  --data "name=rate-limiting" \
  --data "config.minute=5" \
  --data "config.policy=local"

各个概念之间的关系

  1. Service 与 Route:

    • Service 定义了后端服务,Route 用于将客户端请求路由到相应的 Service。每个 Route 可以指定路径、主机、HTTP 方法等,决定了请求如何被路由到后端服务。
  2. Consumer 与 Plugins:

    • Consumer 代表了 API 的使用者,可以为每个消费者配置不同的插件策略。比如你可以为某个 Consumer 启用认证插件、流量限制插件等,以控制该消费者的访问行为。
  3. Service 与 Upstream:

    • Service 可以与一个或多个 Target 关联,这些 Target 组成了一个 Upstream。通过 Upstream,Kong 可以实现负载均衡,将请求分发到多个后端服务实例。
  4. Route 与 Plugins:

    • 插件可以应用于 Route,例如,给某个特定路径启用流量控制、认证等插件。
  5. Consumer 与 Route:

    • 你可以为特定的消费者配置特定的 RoutePlugin,实现精细化的流量控制和认证管理。

通过这些概念的配合,Kong Gateway 提供了灵活且强大的 API 管理功能,帮助开发者高效地管理 API 流量、认证和安全等各方面的需求。


http://www.kler.cn/a/516419.html

相关文章:

  • 关于CAN(FD)转以太网详细介绍
  • 由于请求的竞态问题,前端仔喜提了一个bug
  • IP协议格式
  • 【C】本地变量与全局变量
  • Element使用表单重置如果不使用prop,重置无法生效
  • 66,【6】buuctf web [HarekazeCTF2019]Avatar Uploader 1
  • 【自然语言处理(NLP)】介绍、发展史
  • springboot 配置redis
  • 3b1b线性代数基础
  • 蓝桥杯lesson3---string的使用
  • RabbitMQ 匿名队列详解
  • Elasticsearch的经典面试题及详细解答
  • CrypTen项目实践
  • 人工智能学习(一)之python入门
  • STM32的ADC工作模式
  • Linux 主流桌面环境及其默认应用大横评
  • 面向对象和面向过程的区别
  • 从ChatGPT热潮看智算崛起
  • Unity3D 动态骨骼性能优化详解
  • 对grid布局有哪些了解【css】
  • el-dialog内容大于高度时可滑动
  • python自动生成pg数据库表对应的es索引
  • Day21-【软考】短文,计算机网络开篇,OSI七层模型有哪些协议?
  • C++ 通过域名获取服务器ip(跨平台)
  • 【2024 CSDN博客之星】个人收获分享
  • OpenCV文字绘制支持中文显示