KrakenD url匹配通配符 url_pattern wildcard

KrakenD是一个高性能Api网关,  api转发的推荐做法是每个api一个配置项,也就是一个endpoint,其开发者认为api网关和纯粹的L7路由不一样(文章链接).

因此社区版并没有提供通配符*匹配(偷懒失败😫),即 /product及其之后的所有url(如/product/detail) 全部转发到指定的backend并把后续的url带上,

如图所示,如果backend的host是http://productService

/product http://productService/product
/product/detail http://productService/product/detail

 

但是KrakenD 企业版有提供一个 wildcard Routes插件, 功能类似,将满足通配符的请求转发到backend的url_pattern+通配符后url path.

社区版里也有一种方法可以曲线救国,就是用多级url来进行匹配, 如果 /product/* 转发到http://productService/* 一个endpoint, /product/*/*转发到http://productService/*/* 另一个endpoint,具体的krakend.json配置如下,

复制代码
{
  "version": 2,
  "extra_config": {},
  "endpoints": [
    {
      "endpoint": "/product/{level1}",
      "method": "GET,POST,PATCH,PUT,DELETE",
      "output_encoding": "no-op",
      "backend": [
        {
          "url_pattern": "/{level1}",
          "method": "GET,POST,PATCH,PUT,DELETE",
          "encoding": "no-op",
          "host": [
            "http://productService"
          ]
          }
      ]
    },
    {
      "endpoint": "/product/{level1}/{level2}",
      "method": "GET,POST,PATCH,PUT,DELETE",
      "output_encoding": "no-op",
      "backend": [
        {
          "url_pattern": "/{level1}/{level2}",
          "method": "GET",
          "encoding": "no-op",
          "host": [
            "http://productService"
          ]
          }
      ]
    }
  ]
}
复制代码

api url path会有多少级就配置对应多少个endpoint.

 

 

顺便测试下Krakend性能

配置如下

R7 3700X 

8G 3000 C16 * 2

.net 5.0-alpine 

 

Krakend转发到asp.net core,100w个请求, rps 1.4W 

 

 

 

直接请求asp.net  core,100w个请求, rps 4w 

 

posted @   turingguo  阅读(229)  评论(4编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示