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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!