redis - kong api网关如何使用redis
问题描述
我们使用 kong api 网关作为所有 api 的单一网关。我们的 api 很少(1500-2000ms)面临延迟问题。后来当我们检查时,由于“速率限制”插件而产生了延迟。当我们禁用插件时,延迟会得到改善,并且响应与我们直接从 IP 获得的响应相同(接近 300 毫秒)。我正在尝试设置 redis 节点来缓存数据库查询,我不确定我们如何配置 kong 以从 redis 本身读取。我们如何将数据库查询缓存到 redis 节点。我们正在为kong使用postgresql。
解决方案
我想也许你正试图同时做几件不同的事情。
首先,速率限制:您的config.policy
参数的值是多少?Kong 文档有三个值:“ (local
计数器将本地存储在节点的内存中),cluster
(计数器存储在数据存储中并在节点之间共享)和redis
(计数器存储在 Redis 服务器上,并将在节点)。”
如果您看到高延迟,并且您config.policy
的设置为cluster
or redis
,则可能是由于 Kong 和 postgres/redis 之间的延迟(取决于您使用的策略)。如果您只是为了防止滥用而使用速率限制,则使用“本地”策略会更快。(在 Kong 文档中有更多关于此的内容。)
另一个问题是关于缓存的:Kong Enterprise 有一个内置的缓存插件,但是对于 Kong Community,由于它是建立在 Nginx 之上的,因此您可以使用 Nginx 进行缓存。此链接可能会对您有所帮助。
推荐阅读
- c++ - 避免在共享库之间传递数据的开销
- python - 如何让python读取字典目录中的所有文件?
- asp.net-mvc - 当打开一页的两个选项卡时,通知不起作用
- ios - 使用空格进行 GET 查询
- react-native - 文本输入占位符在本机反应中下降
- node.js - 如何避免在错误响应中将错误集合包装在 Apollo Server V2 中的错误对象中
- python - Pandas Groupby Plotting MultiIndex 按顶级分组
- c++ - 我怎么能忽略字符串中一个字符之后的所有内容?
- node.js - Issus 使用 node.js 在 Firestore 中添加新对象
- python - 通过新的 python 重写使用不和谐令牌制作不和谐垃圾邮件机器人