Kong关键概念 - 路由(Routes)

这篇具有很好参考价值的文章主要介绍了Kong关键概念 - 路由(Routes)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

路由(Routes)

路由决定在请求到达Kong Gateway之后如何(以及是否)将其发送到其服务。服务代表后端API,而路由定义了对客户端暴露的内容。

一个单独的服务可以有多个路由。一旦匹配到路由,Kong Gateway会将请求代理到其关联的服务。

路由与服务的交互

路由与服务结合使用,可以让您通过Kong Gateway向应用程序暴露服务。Kong Gateway通过使用路由将服务与应用程序进行抽象。由于应用程序始终使用路由进行请求,因此对服务的更改(如版本控制)不会影响应用程序的请求方式。路由还允许多个应用程序使用同一个服务,并根据使用的路由应用不同的策略。

例如,如果有一个外部应用程序和一个内部应用程序需要访问example_service服务,但是外部应用程序在查询服务的频率上应受到限制,以确保不会发生拒绝服务的情况。如果为服务配置了速率限制策略,并且当内部应用程序调用服务时应用该策略,那么内部应用程序也会受到限制。路由可以解决这个问题。

在上述例子中,可以创建两个路由,例如/external和/internal,并且这两个路由都可以指向example_service服务。可以配置策略来限制使用/external路由的频率,并将该路由提供给外部客户端使用。当外部客户端尝试通过Kong Gateway使用/external访问服务时,他们会受到速率限制。但是当内部客户端通过Kong Gateway使用/internal访问服务时,内部客户端不会受到限制。

请求是如何路由的 

对于每个传入的请求,Kong Gateway必须根据定义的路由决定由哪个服务处理。在3.0版本中,Kong Gateway引入了一个新的路由器,可以在两种模式下运行,传统兼容模式(traditional_compat mode)和表达式模式(expressions mode)。传统兼容模式的配置方式与先前版本相同,而表达式模式使用了新的配置方案。建议新的部署使用表达式路由器,因为它更强大和具有更多表达能力。

路由器的默认模式是traditional_compat,以下部分描述了它的运行方式。traditional_compat模式旨在与Kong Gateway 3.x之前的版本中的路由器行为相同。有关表达式模式的描述,请参阅How to Configure Routes using Expressions - v3.5.x | Kong Docs。 

 通常情况下,路由器会根据优先级对所有定义的路由进行排序,并使用优先级最高的匹配路由来处理请求。如果有多个具有相同优先级的匹配路由,则不定义将使用哪个匹配路由,Kong Gateway将根据其内部数据结构的组织方式选择其中一个来使用。

如果一个路由包含前缀或正则表达式路径,那么路由的优先级将针对每个路径单独计算,并相应地路由请求。

在traditional_compat模式下,路由的优先级按照以下降序重要性顺序确定:

1. 优先级分数(Priority points)
2. 通配符主机(Wildcard hosts)
3. 头部计数(Header count)
4. 正则表达式和前缀路径(Regular expressions and prefix paths)

优先级分数(Priority points)

对于路由的每个方法、主机、头部和SNIs的存在,将为该路由添加一个"优先级点"。 "优先级点"的数量确定了路由被考虑的整体顺序。具有更高"优先级点"值的路由将在具有较低值的路由之前考虑。这意味着如果一个路由有定义方法,而第二个路由有定义方法和头部,那么第二个路由将比第一个路由更早被考虑。

通配符主机(Wildcard hosts)

在具有相同"优先级点"值的路由中,那些具有任何通配符主机(wildcard host)指定的路由将在没有指定任何通配符主机(或没有主机)的路由之后被考虑。

头部计数(Header count)

根据所指定的头部数量,对生成的组进行排序,具有较高数量头部的路由优先级高于具有较少数量头部的路由。

正则表达式和前缀路径(Regular expressions and prefix paths)

在具有相等优先级的结果路由组中,路由器按照以下方式对路由进行排序:

  • 首先考虑具有正则表达式路径的路由,并根据其regex_priority值进行排序。具有较高regex_priority值的路由将优先考虑于具有较低regex_priority值的路由。
  • 没有正则表达式路径的路由按照它们路径的长度进行排序。具有较长路径的路由将优先考虑于具有较短路径的路由。

对于具有多个路径的路由,每个路径将被单独考虑以确定优先级。实际上,这意味着对于每个路径都存在单独的路由。

正则表达式(Regular expressions) 

在路由中使用的正则表达式比简单的前缀路由需要更多的资源来进行评估。如果必须评估许多正则表达式来路由请求,Kong Gateway引入的延迟可能会增加,CPU使用率也可能会增加。在具有数千个路由的安装中,通过将正则表达式路由替换为简单的前缀路由,可以改善Kong Gateway的吞吐量和延迟。如果需要使用正则表达式来执行精确路径匹配,则使用表达式路由器( expressions router)将显着提高Kong Gateway在这种情况下的性能。 

自版本3.0起,如果路由器在expressions或traditional_compatible模式下运行,Kong Gateway将使用Rust编程语言附带的正则表达式引擎。之前的版本使用PCRE库来评估正则表达式。虽然这两个引擎在很大程度上是兼容的,但两者之间存在细微差异。如果您在使用正则表达式路由时遇到问题,请参考您使用的引擎的相关文档。

使用路由动态重写请求的URL

路由可以动态配置,将请求的URL重写为上游的不同URL。例如,您的旧版上游端点可能有一个基本URI,如/api/old/。然而,您希望公开访问的API端点现在被命名为/new/api。为了将服务的上游端点路由到新的URL,您可以设置一个路径为/api/old/的服务,并设置一个路径为/new/api的路由。

Kong Gateway还可以通过在路由路径和请求转换高级插件中使用正则表达式捕获组来处理更复杂的URL重写情况。例如,当您必须将/api/<function>/old替换为/new/api/<function>时,可以使用这种方法。

Kong Gateway 3.0.x或更高版本附带了一个新的路由器。新的路由器可以使用正则表达式捕获组,使用一种称为Expressions的领域特定语言来描述路由。Expressions可以使用正则表达式将路由或路径描述为模式。

路由的插件 

您还可以使用插件与路由进行交互。这使您能够进一步提升Kong Gateway的路由能力。

以下是一些相关插件:

  • LDAP认证高级版:通过用户名和密码保护,为Kong Gateway集群、路由和服务提供安全性。
  • 双向TLS认证:通过客户端证书和双向TLS认证,为路由和服务提供安全性。
  • 基于请求头的路由:根据请求头来路由请求。
  • 高级路由转换器:通过改变上游服务器、端口或路径来转换路由。
路由配置 

在您开始对一个服务进行请求之前,您必须为其添加一个路由。

您可以使用以下方法将路由添加到Kong Gateway的服务中:

  • 通过Admin API发送HTTP请求
  • 使用Kong Manager用户界面创建路由

 文章来源地址https://www.toymoban.com/news/detail-817997.html

 

到了这里,关于Kong关键概念 - 路由(Routes)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kong 服务和路由的添加

    这里参考DB-less-Mode,因为使用的是 yaml 配置文件的形式,所以所有的相关配置只需要往初始化的 kong.yml 文件中添加就可以了,就像nginx的配置文件 DB-less-Mode vim /etc/kong/kong.yml Response: 我们可以在kong的 8000 端口后加上路由后缀 /test-service 查看服务是否正常 这里由于项目路径原因

    2024年02月16日
    浏览(37)
  • Kong网关初次尝试

    本次目的:研究市面上的API网关 Docker  部署 : 1. postgre 2. kong migrations bootstrap 3. kong 问题是migrations时会报lua的错误,后面调研一下。 1. 注册一个service,指定服务的ip 端口等信息。 2. 设定一个路由发现方式,支持path、method、host,这里先用最简单的path。创建了路由test指定了

    2024年01月25日
    浏览(39)
  • Docker安装Kong

    首先我们创建一个 Docker 自定义网络,以允许容器相互发现和通信。在下面的创建命令中 kong-net 是我们创建的 Docker 网络名称。 Kong 目前使用 Cassandra 或者 PostgreSQL,你可以执行以下命令中的一个来选择你的 Database。请注意定义网络 --network=kong-net 。 使用 PostgreSQL: 我们使用 d

    2024年02月06日
    浏览(29)
  • Kong网关概述

    介绍Kong网关 Kong Gateway是一个轻量级、快速且灵活的云原生API网关。API网关是一个反向代理,可以管理、配置和路由对API的请求。 Kong Gateway在任何RESTful API的前面运行,并且可以通过模块和插件进行扩展。它被设计用于在分散式架构中运行,包括混合云和多云部署。 通过Kon

    2024年01月23日
    浏览(41)
  • 【云原生网关】Kong 使用详解

    目录 一、前言 二、Kong介绍 三、Kong核心组件 3.1 kong组件介绍 3.1.1 Kong Server

    2024年02月02日
    浏览(39)
  • kong-dashboard安装

    简介 kong-dashboard提供了UI界面操作和查看kong,可以进行api、consumers、plugins操作 官网:https://hub.docker.com/r/pgbi/kong-dashboard/ 安装 联网安装 备份后安装到使用环境 启动 界面 通过页面http://localhost:8080可以进行新增、修改、删除操作,如果只是基础的使用感觉够了。 API界面

    2024年02月13日
    浏览(42)
  • Kong 自定义插件安装和调试

    官方文档 1、在本地安装(基于当前目录中的.rockspec) response 2、打包已安装的文件 response 同时会生成 kong-plugin-mepjwt-0.1.0-1.all.rock 文件 3、安装插件 response 查看 response 在 kong.conf 文件中添加插件 yaml 文件配置 在加载过程中难免会有错误,需要自己打日志排查 我的插件主要是解开

    2024年02月15日
    浏览(52)
  • Kong工作原理 - 负载均衡 - 负载均衡算法

    负载均衡器支持以下负载均衡算法: 1. 轮询(Round-robin) 2. 一致性哈希(Consistent Hashing) 3. 最少连接(Least Connections) 4. 延迟(Latency) 这些算法仅在使用upstream实体时可用,详见高级负载均衡。 注意:对于所有这些算法,重要的是要了解如何设置每个后端的权重和端口。

    2024年01月25日
    浏览(43)
  • Kong工作原理 - 负载均衡 - 高级负载均衡

    通过upstream实体可用高级负载均衡算法。 使用这些负载均衡器时,后端服务的添加和删除将由Kong处理,不需要进行DNS更新。Kong将充当服务注册表的角色。 通过上游和目标实体进行负载均衡器的配置。 upstream:一个“虚拟主机名”,可以在服务主机字段中使用,例如,一个名

    2024年01月25日
    浏览(44)
  • 整合一套高性能网关Kong

    前言 #     相信大家对Api网关都比较的熟悉,我们之前的文章也介绍过ASP.NET Core的网关Ocelot,也介绍过Spring Cloud Gateway。说到网关的主要功能,其实总结起来就两个字\\\"统一\\\",无论是作为应用的入口、认证授权、熔断限流等等主要都是为了统一的地方做一些事情。今天我们介

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包