缓存加速新玩法,让你的应用飞起来

科技   2024-12-26 18:00   浙江  

阿里妹导读


本文主要叙述如何运用云数据库 Tair 构建缓存,助力应用提速、优化性能。

一、引言

随着业务的不断发展,应用系统面临的流量压力日益增大。如何在高并发场景下降低系统响应时间、提升整体性能,成为每一位开发人员需要攻克的关键课题。使用缓存,无疑是解决这一问题的首选方案。今天,我们为您介绍如何运用云数据库 Tair 构建缓存,助力应用提速、优化性能。

为什么选择云数据库 Tair 构建缓存?

缓存是一种数据存储机制,通过在高速存储介质中暂存频繁请求的数据,减少对主存储或数据库的直接访问,从而提高系统性能和响应速度。根据应用需求、数据特性和系统架构的不同,构建缓存的方式也是灵活多样。云数据库 Tair 是兼容开源 Redis 协议标准的数据库服务,适用于缓存、实时流数据处理等场景,具有稳定可靠、弹性扩展、易用高效等特点,并支持多种数据结构和高级功能。

核心优势:

  • 高性能存储服务:提供了高性能的键值存储服务,可以满足各种业务场景的需求。采用多线程模型,读写性能达到同规格云数据库 Redis 社区版实例的数倍,能够有效地提高应用的响应速度。
  • 高可用性和弹性伸缩:基于双机热备架构及集群架构,支持自动扩容,提供多种高可用方案,可以根据业务需求动态调整实例规格和容量,帮助您快速弹性适配业务高峰,避免内存溢出的风险,有效保障线上业务稳定性。
  • 丰富数据类型支持:提供丰富的自研增强型数据结构,包括 exString(包含Redis String 命令增强)、exHash、exZset、GIS、Bloom、Doc、TS、Cpc、Roaring、Search 和Vector,帮助您精简代码并提高业务整体性能。

点击文末“阅读原文”,了解更多详情,参与活动更有精美礼品等您来拿!

二、方案展示

1. 通过对比访问带缓存与不带缓存的接口,验证缓存功能

通过ECS实例的公网IP访问应用接口,通过不同参数验证方案。

验证不带缓存的接口

通过浏览器访问http://<ECS公网IP>/getAllEmployeesInDepartment?departmentId=1&cacheFirst=false接口,返回值为:

通过浏览器访问

http://<ECS公网IP>/getAllEmployeesInDepartment?departmentId=1&cacheFirst=true接口,此时再次访问此接口,返回值为:
可见message字段中提示当前数据从缓存中读取。

验证缓存数据:

i. 登录云数据库 Tair 控制台,在实例列表页面,找到目标实例,点击实例名称;

ii. 在新页面点击登录数据库,如出现了登录实例对话框,输入数据库账号(此处为redis)密码(此处为用户设置的密码),安全托管可以选择不开启,管控模式选择自由操作,点击登录

iii. 在SQLConsole中输入:GET department:1

可以看到执行历史中返回值为接口数据:
2. 通过Locust性能测试,验证缓存减轻数据库压力
为了进一步验证方案在高并发场景下数据库的压力情况,我们使用负载测试工具 Locust(参考官方文档安装) 进行测试。

性能测试:无缓存接口

i. 创建文件locustfile.py,完整代码如下:

ii. 在命令行中运行locust启动 Locust。

打开浏览器,访问 Locust Web 界面 http://localhost:8089,如图所示填写新的测试参数。

参数说明:
  • Number of users:并发用户数量。

  • Ramp up:即每秒钟增加的用户数量。
  • Host:目标系统的基地址,例如:http://<ECS公网IP>。

iii. 启动测试并执行一段时间后,点击 Stop 停止测试。

iv. 登录云数据库RDS控制台,在实例列表页面,找到目标实例,点击监控

性能测试:缓存接口

i. 修改locustfile.py代码如下:

ii. 在命令行中运行locust启动 Locust,参考上一步的操作,完成测试,并查看RDS监控。

对比分析:

对比前后两次的数据库监控数据,可以明显看出,在测试无缓存接口时,数据库的流量吞吐量、TPS/QPS、执行次数等指标发生了显著变化,出现了一个处理波峰。而在访问带缓存的接口时,这些指标则更为平滑。具体来看,无缓存访问时的执行次数峰值接近700,而带缓存的情况下则稳定在个位数。这表明缓存机制能够有效缓解数据库的压力。
3. 通过删除数据库中的数据,验证缓存命中

清理数据库中的数据记录:

i. 登录云数据库RDS控制台,在实例列表页面,找到目标实例,点击实例名称;

ii. 在新页面点击登录数据库,如出现了登录实例对话框,输入数据库账号(此处为rds)密码(此处为用户设置的密码),管控模式选择自由操作,点击登录

iii. 在SQLConsole窗口中输入

当执行历史出现提示:

说明数据清理完成。

访问缓存接口:

通过浏览器访问http://<公网IP>/getAllEmployeesInDepartment?departmentId=1&cacheFirst=true接口,返回值为:
可见 message 字段中提示当前数据从缓存中读取,说明缓存已被正确命中。

点击阅读原文,体验运用高性能的云数据库 Tair 构建缓存为应用提速~

阿里云开发者
阿里巴巴官方技术号,关于阿里的技术创新均呈现于此。
 最新文章