应对高并发,利用Redis版缓存实现极速响应
手动部署
80
https://www.aliyun.com/solution/tech-solution/redis-cache-speedup
方案概览
本方案旨在基于云数据库Redis版(ApsaraDB for Redis)构建缓存以提速应用,提升业务系统的性能,降低响应时间,使应用能够过承担更高的负载。
方案架构
方案提供的默认设置完成部署后在阿里云上搭建的运行环境如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
方案示例模拟了员工与部门关联的场景,通过HTTP API以部门ID为参数,获取部门下的员工ID以及姓名。数据优先从数据库中查询,选择使用Redis作为缓存后,首次加载仍然通过数据库查询,之后的查询将会优先从Redis中取出结果。在清理掉数据库数据之后,由于缓存在有效期,仍然可以查询到结果。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、云服务器ECS、云数据库 RDS MySQL 版、云数据库Redis版等云资源形成云上私有网络。
1台交换机:将1台云服务器ECS连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。
1台云服务器ECS:用于部署模拟服务。
1个云数据库RDS MySQL版实例:为模拟服务提供数据服务。
1个云数据库Redis版实例:提供缓存服务
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
规划网络和资源
10
网络规划
请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。
规划项 | 数量 | 说明 |
地域 | 1 | 您的云服务部署的地域。选择地域的基本原则请参见地域和可用区。 |
专有网络VPC | 1 | 在部署过程中新建一个VPC作为本方案的专有网络。 |
交换机 | 1 | 本方案需要1台交换机,用来连接不同的云资源实例。 |
公网IP | 1 | 创建云服务器ECS实例时,选择分配公网IP地址,自动为云服务器ECS实例创建1个公网IP。 |
安全组 | 1 | 用于限制专有网络VPC下云服务器ECS的网络流入和流出规则。 |
规划云资源
请参考表格中的说明和方案默认示例值为每个规划项做详细规划并在实际部署时将默认示例值修改为您的实际规划。
规划项 | 数量 | 说明 |
ECS | 1 | 本方案需要1台ECS实例,用于部署模拟服务。 |
RDS MySQL | 1 | 本方案需要1个RDS MySQL版实例,用于存储模拟数据(用户,部门等)。 |
RDS Redis | 1 | 本方案需要1个RDS Redis版实例,用于缓存。 |
部署资源
30
规划好资源后,请按照以下步骤部署方案中的所有资源。
创建专有网络VPC和交换机
为了实现高可用,您需要将云服务器等资源尽可能分布在多个可用区,规避单可用区故障造成的服务不可用。本方案以双可用区为例,因此,您需要创建1个专有网络和2个交换机。
登录专有网络管理控制台。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,单击专有网络。
在专有网络页面,单击创建专有网络。
在创建专有网络页面,配置1个专有网络和1台交换机。配置交换机时,请确保交换机所属的可用区的ECS、RDS MySQL版以及RDS Redis版是可用状态。
项目
说明
示例值
VPC名称
建议您在部署过程中新建一个VPC作为本方案的专有网络。部署过程中填写VPC名称即可创建对应名称的VPC。
长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。
VPC_HZ
IPv4网段
在创建VPC时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云VPC支持的网段信息请参见组成部分。
在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。
192.168.0.0/16
Vswitch名称
建议您在部署过程中在新建的VPC内创建虚拟交换机。部署过程中填写交换机名称即可创建对应名称的虚拟交换机。
长度为2~128个字符,以英文大小字母或中文开头,可包含数字、下划线(_)和连字符(-)。
vsw_001
可用区
在规划的地域内选择1个可用区,1台虚拟交换机部署在1个可用区。
建议选择排序靠后的,一般此类可用区较新。新可用区资源更充沛,新规格也会在新的可用区优先上线。
可用区 H
IPv4网段
每台虚拟交换机需要一个IPv4网段
vsw_001:192.168.1.0/24
创建安全组
您已经在1个专有网络VPC下的2个可用区分别创建1台交换机。接下来您需要创建1个跨可用区的安全组,用于限制该专有网络VPC下的2台交换机的网络流入和流出。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,选择网络与安全>安全组。
在安全组页面,单击创建安全组。
在创建安全组页面,创建1个安全组。
项目
说明
示例值
名称
设置安全组的名称。
SecurityGroup_1
网络
选择之前规划的专有网络VPC。
VPC_HZ
安全组类型
本方案需从公网拉取博客网站服务镜像,因此选择普通安全组,以实现公网出方向所有地址可访问。实际部署时,您建议选择安全性更高的企业级安全组。
普通安全组
入方向
入方向除默认的端口号外,本方案还需添加3306端口号以及6379端口号。
3306
6379
创建云服务器ECS
您已经创建1个专有网络VPC。接下来您需要在可用区创建1个云服务器ECS实例,对外提供服务。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,选择实例与镜像>实例。
在实例页面,单击创建实例。
在云服务器ECS购买页面,创建1台云服务器ECS。
项目
说明
示例值
实例名称
需要一个实例名称。
APP001
可用区
本方案要求一台云服务器ECS实例与一个虚拟交换机位于同一可用区
可用区 H
支付方式
ECS实例的计费方式。
ECS计费的详细信息请参见计费方式概述。
按量付费
实例规格
ECS的实例规格及内核、vCPU数量。关于ECS选型的最佳实践请参见ECS选型最佳实践。
ecs.c6.large
镜像
ECS的“装机盘”,为ECS实例提供操作系统、预装软件等。
Alibaba Cloud Linux
镜像版本
镜像的版本。
Alibaba Cloud Linux 3.2104 LTS 64位(安全加固)
系统盘类型
硬盘类型。
ESSD云盘
系统盘容量
硬盘容量。
40 GiB
公网IP
用于在云服务器ECS上从公网安装必须软件和配置模拟应用服务。
分配公网 IPv4 地址
带宽计费方式
由于本方案只需在云服务器ECS上从公网安装必须软件和配置模拟应用服务,因此选择按使用流量,以节省流量成本。
按使用流量
带宽值
本方案以5 Mbps为例。
5 Mbps
安全组
两台ECS都使用之前创建的安全组。
SecurityGroup_1
创建云数据库RDS MySQL版
您已经创建1台云服务器ECS。接下来您需要创建云数据库 RDS MySQL 版实例、数据库、数据库账号。您需要记录创建的云数据库PolarDB MySQL版的内网连接地址、数据库名称、账号、密码用于之后的模拟应用配置。
登录云数据库RDS控制台。
创建云数据库RDS MySQL版实例:
在全局概览页面,单击创建实例。
在购买页面,购买1个云数据库RDS MySQL版实例,其他保存默认即可。
等待数据库实例生产完成。
项目
说明
示例值
地域
本方案以华东1(杭州)地域为例。
华东1(杭州)
计费方式
本方案以创建按量付费为例。
按量付费
引擎
本方案以MySQL为例。
MySQL 8.0
产品系列
本方案使用基础系列,生产环境请使用高可用系列或集群系列。
基础系列
规格
数据库规格
mysql.n1e.medium.1
网络类型
默认选择专有网络
专有网络
专有网络VPC
选择之前规划的专有网络VPC。
VPC_HZ
交换机
选择之前规划的交换机。
vsw_001:192.168.1.0/24
创建数据库账号:
在左侧导航栏,选择实例列表。
在实例列表页面,单击创建的实例。
在左侧导航栏,选择账号管理。
单击创建账号。
在创建账号面板,设置数据库账号名称(此处需设定为
rds
),选择账号类型为普通账号,设置密码,然后单击确定。
创建数据库:
在左侧导航栏,选择配置与管理 > 数据库管理。
单击创建数据库。
在创建数据库面板,设置数据库名称(此处需设定为
biz
),设置字符集为utf8mb4
,选择授权账号为上一步创建的账号,然后单击创建。
设置白名单:
在左侧导航栏,选择配置与管理 > 白名单与安全组。
在添加安全组面板,选择规划的安全组,然后单击确定。
获取数据库的内网地址:
在左侧导航栏,单击数据库连接。
在数据库连接区域,复制内网地址。
创建云数据库Redis版
您已经创建1台云服务器ECS,1个云数据库 RDS MySQL 版实例。接下来您需要创建云数据库 Redis版实例、数据库、数据库账号。您需要记录创建的云数据库 Redis版实例的内网连接地址、数据库名称、账号、密码用于之后的模拟应用配置。
创建云数据库Redis版实例:
在全局概览页面,单击创建云原生实例。
在购买页面,购买1个云数据库Redis版实例,其他保存默认即可。
等待数据库实例生产完成。
项目
说明
示例值
地域
本方案以华东1(杭州)地域为例。
华东1(杭州)
计费方式
本方案以创建按量付费为例。
按量付费
产品
本方案以Redis为例。
Redis
部署模式
本方案使用云原生(原云盘),部署模式比较请参考文档:云原生实例和经典实例对比 。
云原生(原云盘)
系列
本方案以标准版为例。
标准版
可用区
本方案以单可用区为例。
单可用区
主可用区
选择虚拟交换机所在可用区
杭州 可用区H
网络类型
默认选择专有网络
专有网络
专有网络VPC
选择之前规划的专有网络VPC。
VPC_HZ
交换机
选择之前规划的交换机。
vsw_001:192.168.1.0/24
实例类型
本方案以高可用为例。
高可用
大版本
本方案以Redis 6.0为例。
Redis 6.0
架构类型
标准主备架构,详情请参考文档:标准架构。
不启用集群
实例名称
可根据实际情况选择。
redis
创建数据库账号:
在左侧导航栏,选择实例列表。
在实例列表页面,单击创建的实例。
在左侧导航栏,选择账号管理。
单击创建账号。
在创建账号面板,设置数据库账号名称(此处需设定为
redis
),选择账号权限设置为读写,设置密码,然后单击确定。
设置白名单:
在左侧导航栏,选择配置与管理 > 白名单设置。
在白名单设置面板,点击添加白名单设分组,分组名称填入
ecs
,添加方式选择加载ECS私网IP,选择已经创建的ECS IP,点击确定。在安全组面板,选择规划的安全组,然后单击确定。
获取数据库的内网地址:
在左侧导航栏,单击实例信息数。
在连接信息区域,在专有网络一行,复制连接地址。
配置模拟应用服务
10
部署模拟服务
创建了云资源后,接下来您需要执行以下操作使用云资源初始化模拟服务。
登录ECS管理控制台。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,选择实例与镜像>实例。
部署博客网站服务。
在实例页面,找到创建的一台ECS实例,在其右侧操作列,单击远程连接。
在远程连接对话框的通过Workbench远程连接区域,单击立即登录,然后根据页面提示登录。
执行以下命令部署模拟应用服务。
yum install nginx -y yum install java-1.8.0-openjdk.x86_64 -y cat <<'EOF' > /etc/nginx/conf.d/app_with_redis.conf server { listen 80 default_server; server_name _; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } EOF sed -i 's/ _;/ domain.not.exists;/' /etc/nginx/nginx.conf curl -o AppWithRedisDemo.jar 'https://help-static-aliyun-doc.aliyuncs.com/demos/AppWithRedisDemo.jar' nohup java -DMYSQL_HOST=rm-bp1***4gb.mysql.rds.aliyuncs.com -DMYSQL_PASSWORD=PASS***WORD -DREDIS_HOST=r-bp1***zra.redis.rds.aliyuncs.com -DREDIS_PASSWORD=redis:PASS***WORD -jar AppWithRedisDemo.jar & /bin/systemctl start nginx.service
其中19行
MYSQL_HOST
需要设定为创建云数据库RDS MySQL版实例的内网地址;MYSQL_PASSWORD
需要设定为创建云数据库RDS MySQL版实例的数据库密码;REDIS_HOST
需要设定为创建云数据库Redis版实例的内网地址;REDIS_PASSWORD
需要设定为创建云数据库Redis版实例的数据库密码;
准备测试数据
初始化模拟服务后,您需要调用模拟服务的初始化接口导入模拟数据。
登录ECS管理控制台。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,选择实例与镜像>实例。
部署模拟应用服务。
在实例页面,找到创建的一台ECS实例,在其右侧操作列,单击远程连接。
在远程连接对话框的通过Workbench远程连接区域,单击立即登录,然后根据页面提示登录。
在终端中执行指令
curl http://localhost:8080/initData?token=AppWithRedis
如返回值为
{"success":true,"message":"success","data":""}
则说明测试数据准备完成。
登录云数据库RDS控制台,在实例列表页面,找到目标实例,点击实例名称;
在新页面点击登录数据库,如遇到提示欢迎使用极简模式,可以选择跳过,直接使用。如遇到提示创建DMS服务关联角色,点击确认。如遇到提示实例自动接入开关,默认选择为开,可根据需要选择,可以在界面右上角点击实例自动接入:进行配置。
如出现了登录实例对话框,输入数据库账号(此处为
rds
)密码(此处为用户设置的密码),管控模式选择自由操作,点击登录。在SQLConsole窗口中输入
SELECT * FROM `employee_department`
可以看到当前数据库中存在的数据。
完成及清理
20
方案验证
清理资源
在本方案中,您创建了1台云服务器ECS实例、1个交换机、1个专有网络VPC、1个云数据库RDS MySQL版实例,1个云数据库Redis版实例 。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:
释放2台云服务器ECS实例:
登录ECS控制台,在实例页面,找到目标实例,然后在操作列选择>释放设置,根据界面提示释放实例。
释放1台交换机:
登录专有网络控制台,在交换机页面,找到目标交换机,然后在操作列单击删除,按照界面提示释放实例。
释放1个专有网络VPC:
登录专有网络控制台,在专有网络页面,找到目标VPC,然后在操作列单击删除,按照界面提示释放实例。
释放1个云数据库RDS MySQL版实例:
登录云数据库RDS控制台,在实例列表页面,找到目标实例,然后在操作列中选择更多>释放实例。
释放1个云数据库Redis版实例:
登录云数据库Redis版控制台,在实例列表页面,找到目标实例,然后在操作列中选择>删释放。
一键部署
60
https://www.aliyun.com/solution/tech-solution/redis-cache-speedup
方案概览
本方案旨在基于云数据库Redis版(ApsaraDB for Redis)构建缓存以提速应用,提升业务系统的性能,降低响应时间,使应用能够过承担更高的负载。
方案架构
方案提供的默认设置完成部署后在阿里云上搭建的运行环境如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
方案示例模拟了员工与部门关联的场景,通过HTTP API以部门ID为参数,获取部门下的员工ID以及姓名。数据优先从数据库中查询,选择使用Redis作为缓存后,首次加载仍然通过数据库查询,之后的查询将会优先从Redis中取出结果。在清理掉数据库数据之后,由于缓存在有效期,仍然可以查询到结果。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为应用型负载均衡ALB、云服务器ECS、云数据库 RDS MySQL 版、云数据库Redis版等云资源形成云上私有网络。
1台交换机:将1台云服务器ECS连接在同一网络上,实现它们之间的通信,并提供基本的网络分段和隔离功能。
1台云服务器ECS:用于部署模拟服务。
1个云数据库RDS MySQL版实例:为模拟服务提供数据服务。
1个云数据库Redis版实例:提供缓存服务
部署准备
10
开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。
准备账号
一键部署
30
ROS一键部署
打开一键配置模板链接前往ROS控制台,系统自动打开使用新资源创建资源栈的面板,并在模板内容区域展示YAML文件的详细信息。
说明ROS控制台默认处于您上次访问控制台时所在的地域,请根据您创建的资源所在地域修改地域后再执行下一步。
确认好地域后,保持页面所有选项不变,单击下一步进入配置模板参数页面。
在配置模板参数页面修改资源栈名称,可用区,配置ECS实例(推荐使用计算型c6,ecs.c6.large)。填写完所有必选信息并确认后单击创建开始一键配置。
当资源栈信息页面的状态显示为创建成功时表示一键配置完成。
完成资源栈部署后,您需要调用模拟服务的初始化接口导入模拟数据。
登录ECS管理控制台。
在顶部菜单栏,选择华东1(杭州)地域。
在左侧导航栏,选择实例与镜像>实例。
部署模拟应用服务。
在实例页面,找到创建的一台ECS实例,在其右侧操作列,单击远程连接。
在远程连接对话框的通过Workbench远程连接区域,单击立即登录,然后根据页面提示登录。
在终端中执行指令
curl http://localhost:8080/initData?token=AppWithRedis
如返回值为
{"success":true,"message":"success","data":""}
则说明测试数据准备完成。
登录云数据库RDS控制台,在实例列表页面,找到目标实例,点击实例名称;
在新页面点击登录数据库,如遇到提示欢迎使用极简模式,可以选择跳过,直接使用。如遇到提示创建DMS服务关联角色,点击确认。如遇到提示实例自动接入开关,默认选择为开,可根据需要选择,可以在界面右上角点击实例自动接入:进行配置。
如出现了登录实例对话框,输入数据库账号(此处为
rds
)密码(此处为用户设置的密码),管控模式选择自由操作,点击登录。在SQLConsole窗口中输入
SELECT * FROM `employee_department`
可以看到当前数据库中存在的数据。
完成及清理
20
方案验证
清理资源
在本方案中,您创建了1台云服务器ECS实例、1个交换机、1个专有网络VPC、1个云数据库RDS MySQL版实例和1个云数据库Redis版实例。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用:
释放资源栈下的资源,即1台云服务器ECS实例、1个交换机、1个专有网络VPC、1个云数据库RDS MySQL版实例和1个云数据库Redis版实例。
登录ROS控制台。
在左侧导航栏,选择资源栈
在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。
在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。