前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务系列:通过Kong网关缓存API结果

微服务系列:通过Kong网关缓存API结果

原创
作者头像
AIOPS
发布2023-11-15 19:55:46
4471
发布2023-11-15 19:55:46
举报
文章被收录于专栏:高可用高可用

1、 背景

在之前的文章中介绍了API的两个特性:限流鉴权,这篇文章我们聊聊通过Kong给API加缓存。

1、 为什么需要API网关

2、 Kong初探

3、 Kong安装配置

4、 通过Kong提供API服务

5、 通过Kong网关给API限流

6、 通过Kong网关给API加Key鉴权

7、 Kong网关实现API负载均衡

2、为什么需要缓存?

在现代应用程序中,API通常需要处理大量的请求,而这些请求可能包含重复的数据。每次请求都直接到达后端服务器获取数据,这样做会导致一些问题:

性能瓶颈: 大量请求同时涌入可能使后端服务器过载,导致响应变慢。

资源浪费: 重复的请求导致资源浪费,因为相同的响应可以被缓存并在后续请求中重复使用。

网络开销: 频繁地从后端获取相同的数据增加了网络开销,特别是对于移动应用或分布式系统。

为了解决这些问题,引入缓存机制成为一种有效的解决方案。

3、Kong网关的Proxy Cache插件

Kong的Proxy Cache插件通过缓存机制提供了一种性能优化的方式。该插件根据可配置的响应代码、内容类型和请求方法缓存响应,从而加速性能。启用缓存后,后端服务不会因为频繁请求而过载。缓存可以在特定的Kong网关对象上启用,也可以全局启用以应对所有请求。

缓存生存时间(TTL)管理缓存内容的刷新速率,来保证提供给用户的内容都是有效的。TTL为30秒意味着30秒之前的内容被视为过期,并将在后续请求中进行刷新。根据上游服务提供的内容类型,TTL配置应该有所不同:

对于很少更新的静态数据,可以设置较长的TTL。

对于动态数据,应该使用较短的TTL以避免提供过时的数据。

Kong网关遵循RFC-7234第5.2节的缓存控制操作。

4、 Proxy Cache配置实战

4.1 启用全局缓存

代码语言:javascript
复制
curl -i -X POST http://localhost:8001/plugins \
 --data "name=proxy-cache" \
 --data "config.request_method=GET" \
 --data "config.response_code=200" \
 --data "config.content_type=application/json; charset=utf-8" \
 --data "config.cache_ttl=30" \
 --data "config.strategy=memory"

返回结果如下,说明配置成功

代码语言:javascript
复制
HTTP/1.1 201 Created
Date: Wed, 15 Nov 2023 11:45:02 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Kong-Admin-Request-ID: ouXv728H1ov72FIAnukxiOKXIEwBuliJ
Content-Length: 587
X-Kong-Admin-Latency: 33
Server: kong/3.4.1.1-enterprise-edition

4.2 验证

浏览器抓包,可以看到我们的请求已经有X-Cache的响应头

5、总结

本文简单介绍了为什么需要缓存以及通过Kong网关快速给API开启缓存的方法,有什么疑问我们评论区讨论。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 背景
  • 2、为什么需要缓存?
  • 3、Kong网关的Proxy Cache插件
  • 4、 Proxy Cache配置实战
    • 4.1 启用全局缓存
      • 4.2 验证
      • 5、总结
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com