kong api网关如何使用redis

Posted

技术标签:

【中文标题】kong api网关如何使用redis【英文标题】:How to use redis with kong api gateway 【发布时间】:2019-02-08 10:57:11 【问题描述】:

我们使用 kong api 网关作为所有 api 的单一网关。我们的 api 很少(1500-2000ms)面临延迟问题。后来当我们检查时,由于“速率限制”插件而产生了延迟。当我们禁用插件时,延迟会得到改善,并且响应与我们直接从 IP 获得的响应相同(接近 300 毫秒)。 我正在尝试设置 redis 节点来缓存数据库查询,我不确定我们如何配置 kong 以从 redis 本身读取。我们如何将数据库查询缓存到 redis 节点。 我们正在为kong使用postgresql。

【问题讨论】:

【参考方案1】:

我想也许你正试图同时做几件不同的事情。

首先,速率限制:config.policy 参数的值是多少? Kong documentation 具有三个值:“local(计数器将本地存储在节点的内存中)、cluster(计数器存储在数据存储中并在节点之间共享)和redis(计数器存储在在 Redis 服务器上,并将在节点之间共享)。”

如果您看到高延迟,并且您的 config.policy 设置为 clusterredis,这可能是由于 Kong 和 postgres/redis 之间的延迟(取决于您使用的策略)。如果您只是为了防止滥用而使用速率限制,则使用“本地”策略会更快。 (在 Kong 文档中有更多关于此的内容。)

另一个问题是关于缓存的:Kong Enterprise 有一个built-in caching plugin,但是对于 Kong Community,由于它是建立在 nginx 之上的,因此您可以使用 Nginx 进行缓存。 This link 可能会对您有所帮助。

【讨论】:

感谢@esperluette 将限速插件策略设置为集群,这会造成大量延迟。后来我将其更改为本地,这将延迟减少到 300 毫秒。我将检查提供的来自 nginx 的缓存链接。再次感谢!! 感谢您让我知道这对您有用!我看到你是 Stack Overflow 的新手,欢迎!如果您可以将此答案标记为“已接受”(单击复选标记),那就太好了! (有关已接受答案的更多信息:***.com/help/someone-answers)【参考方案2】:

有一个社区自定义插件,可以在不需要使用 Kong Enterprise 的情况下使用 redis 缓存 -> https://github.com/globocom/kong-plugin-proxy-cache

也许您可以将其与速率限制相结合以实现所需的延迟性能或使用此插件作为灵感。

【讨论】:

以上是关于kong api网关如何使用redis的主要内容,如果未能解决你的问题,请参考以下文章

AfterShip 亿级流量 API 网关的演进

负载均衡详解 - 玩转Kong网关

易观API网关—Kong分享篇

微服务之API网关:kong:使用场景之路由功能

使用 Kong 和 Nginx 部署 Api 网关

API网关Kong使用指南(六)—— 支持HTTPS