U会员test 扫二维码继续学习二维码时效为半小时

(0评价)
阿里云服务器租用价格表,租一台阿里云服务器要多少钱
zXXWz0a2发起了问答09-15
0
回复
7
浏览

【阿里云】恭喜您注册成为阿里云会员, 点击立享新人免费云服务器 点此进入阿里云官方云小站

通过DTS数据订阅功能,用户可实时同步RDS日志变更到Redis,实现缓存更新和MySQL与Redis间的一致性。这种Cache-Aside Pattern模式通过DTS服务确保数据同步的高效性和稳定性,优化商品信息和账单信息的实时同步与查询性能,提升系统响应速度。

一、方案优势

实时同步RDS与Redis构建缓存一致性方案的优势

数据实时同步

通过DTS订阅功能实时订阅Binlog数据,实现MySQL与Redis异构数据库之间的数据实时同步,保证数据的实时性和一致性。

同步链路稳定

数据传输服务DTS订阅功能,高服务化能力保证同步链路的易用性和稳定性,针对同步链路异常、链路延迟等事件及时告警、通知。

高效自定义结构转化

提供DTS订阅MySQL BINLOG日志数据变更事件获取,关系型结构和KV结构逻辑映射,以及缓存更新Redis的代码端到端的示例。

二、架构与部署

实时同步RDS与Redis构建缓存一致性。通过RDS MySQL+DTS+Redis的架构,实现RDS MySQL与Redis缓存之间的数据同步和一致性。通过实时同步MySQL数据库数据到Redis缓存,提高数据查询速度,降低数据库压力,确保业务数据的实时性和准确性。

方案概览

在许多业务场景中(比如商品信息查询、库存管理、账户余额查询、交易记录查询、用户信息查询等),为了提高数据查询速度和降低数据库压力,我们通常会使用Redis作为缓存层。然而,保持MySQL与Redis缓存之间的数据一致性是一个关键挑战。本方案将探讨基于Cache-Aside Pattern模式下的一种高效的MySQL与Redis缓存同步一致性方案,以确保业务数据的实时性和准确性,提高数据查询速度,降低数据库压力。

方案架构

方案提供的默认设置(如地域、VPC、安全组、vSwitch、实例名称等)完成部署后在阿里云上搭建的RDS MySQL实时数据同步到云数据库 Redis进行加速分析的架构图如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。

本方案的技术架构包括以下基础设施和云服务:

  • 地域和可用区:云数据库 RDS MySQL 实例、云数据库 Redis 实例以及数据传输服务 DTS 实例必须在同一个地域中,但可以选择部署在不同的可用区。
  • 1个专有网络VPC:云数据库 RDS MySQL 实例、云数据库 Redis 实例以及数据传输服务 DTS 实例必须在同一个 VPC 网络环境中。
  • 1个云数据库RDS MySQL版实例:为线上订单/票务等服务提供数据持久化服务和事务一致性服务。
  • 1个云数据库Redis版实例:为线上订单/票务等服务提供缓存加速、库存查询以及秒杀限流等服务。
  • 1个数据传输服务DTS实例:用于订阅云数据库RDS MySQL中相关的数据库表对象的BINLOG日志数据。
  • 1台云服务器ECS实例:用于部署DTS订阅应用程序,用于接收数据传输服务DTS订阅云数据库RDS实例的更新事件,并且通过应用程序对云数据库Redis进行更新。

部署准备

开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。

准备账号

1.如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

2.为阿里云账号充值。

  • 为节省成本,本方案默认选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。

  • 完成本方案的部署及体验,预计产生费用不超过20元(假设您选择下表中的相关规格资源,且运行时间不超过2小时,如果调整了资源规格,请以控制台显示的实际报价以及最终账单为准)。

云服务 规格配置 地域 预估费用参考
云服务器 ECS 规格:ecs.g5.xlarge,4 vCPU 16 GB 华东2(上海) 配置费用:1.854 元/小时
存储空间:40 GB(ESSD PL1云盘) 公网流量费用:0.800 元/GB
带宽:100 Mbps(按使用流量)
云数据库 RDS MySQL 版 规格:mysql.x4.medium.2c 华东2(上海) 1.8 元/小时
存储空间:100 GB
云数据库 Redis 规格:标准版 高可用 16GB主从版 华东2(上海) 3.00 元/小时
数据传输服务 DTS 数据订阅 华东2(上海) 3.00 元/小时

3.阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。

  • 访问资源组页面,单击创建资源组,创建一个资源组,例如命名为Rds2Redis。
  • 访问RAM控制台-用户页面,单击创建用户,勾选控制台访问和OpenAPI 调用访问,填写其他信息,创建一个RAM用户。
  • 访问RAM控制台-权限策略页面,单击创建权限策略,单击脚本编辑,并复制粘贴以下内容,完成创建自定义权限策略。

{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:Describe",
"vpc:Describe
",
"ros:",
"dts:
"
],
"Resource": "*"
}
]
}

  • 访问RAM控制台-用户页面,授予权限。
    单击目标RAM用户操作列的添加权限,选择授权范围为指定资源组(例如Rds2Redis),然后选择系统策略AliyunECSFullAccess、AliyunRDSFullAccess、AliyunKvstoreFullAccess和AliyunVPCFullAccess,单击确定。
    再次单击目标RAM用户操作列的添加权限,选择授权范围为整个云账号,然后选择前面创建的自定义权限策略,单击确定。

4.(可选,仅首次使用DTS服务时需要创建)创建AliyunDTSDefaultRole角色,用于DTS服务访问当前云账号下的RDS、ECS等云资源。

  • 访问RAM访问控制台-角色页面,单击创建角色,角色类型选择阿里云账号,角色名称配置为AliyunDTSDefaultRole,单击完成。
  • 找到已创建的AliyunDTSDefaultRole角色,单击操作列的精准授权。选择权限类型为系统策略,输入策略名称为AliyunDTSRolePolicy,单击确定。
  • 单击已创建的AliyunDTSDefaultRole角色名,切换至信任策略管理页签,单击修改信任策略,将信任策略修改为如下内容后,单击确定。

{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"dts.aliyuncs.com"
]
}
}
],
"Version": "1"
}

一键部署

资源编排(ROS)可以让您通过YAML或JSON文件清晰简洁地描述所需的云资源及其依赖关系,然后自动化地创建和配置这些资源。您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置。

本文介绍的ROS模板主要完成了以下内容:

  • 部署1个专有网络VPC。
  • 部署1台交换机。
  • 部署1台云服务器 ECS。
  • 部署1个云数据库RDS MySQL。
  • 部署1个云数据库Redis。
  • 配置1个数据传输服务DTS订阅任务。
  • 已在ECS中部署DTS订阅程序。

1.打开一键配置模板链接前往ROS控制台,系统自动打开使用新资源创建资源栈的面板。

2.确认好地域后(本教程以华东2(上海)地域为例),在配置参数模板步骤中配置资源栈名称、ECS和Database。

3.单击下一步,跳转至资源预览页,单击创建,系统将自动创建并部署本教程所需的资源。

4.当资源栈信息页面的状态显示为创建成功时表示一键配置完成。

5.单击资源页签,找到已创建的RDS实例,单击实例ID,进入RDS实例详情页,获取RDS的公网连接地址。

6.登录RDS实例,向源端 RDS MySQL 上写入、更新、删除相关数据,以模拟RDS MySQL上面的数据变更。

数据同步结果验证

更新RDSMySQL数据

上一步中您已经在数据传输服务DTS管理控制台上配置了DTS延迟告警、检查了DTS同步延迟等情况,接下来可以向源端 RDS MySQL 上写入、更新、删除相关数据,以模拟RDS MySQL上面的数据变更,比如可以模拟TPCC压测程序等或者以业务系统真实的更新数据,以观察DTS订阅情况等。

通过DTS运行程序的标准输出日志情况,可以观察到DTS订阅任务在订阅源端数据变更的情况,如图所示:

检查Redis最新数据

上一步中您已经部署好了数据传输服务DTS数据订阅程序,并且对源端RDS MySQL有数据更新行为发生,即RDS MySQL实例中已经有BINLOG日志的更新,通过上述步骤可以观察到DTS订阅程序可以订阅到BINLOG的最新事件,接下来检查Redis实例中是否已经有最新的数据写入和更新。

通过Redis客户端等工具连接到Redis,检查Redis实例中最新的数据,并且针对其中的key进行验证,如图所示:

同时,也可以通过如MySQL客户端等工具连接到RDS MySQL实例,检查RDS MySQL实例中对应的最新数据,如图所示:

检查DTS订阅延迟

上一步中您已经部署好了数据传输服务DTS数据订阅程序,并且对源端RDS MySQL有数据更新行为发生,接下来您需要对DTS订阅和数据同步的效果进行验证。针对生产环境,建议您在数据传输服务DTS控制台配置好对DTS订阅程序的监控报警等。

1.登录数据传输服务DTS管理控制台。

2.在顶部菜单栏,选择被授权的资源组(本文以Rds2Redis为例)和地域(本文以华东2(上海)地域为例)。

3.在左侧导航栏,选择数据订阅。

4.在订阅任务页面,定位到上述步骤中创建的订阅任务,在操作列上点击任务详情。

5.进入任务详情页面后,在左侧导航栏选择数据消费,点击任务管理。

6.查看增量数据采集等页面,检查DTS订阅延迟情况等,如图所示:

完成及清理

方案验证

完成了数据同步结果验证等步骤后,您可以通过配置和观察DTS监控报警、性能监控等来观察数据同步的可用性、延迟等,通过观察RDS MySQL实例和Redis实例中相关的记录来验证同步的正确性和一致性(注意考虑延迟带来的不一致情况)。

清理资源

在本方案中,您创建了1个专有网络VPC、1台交换机、1个云数据库 RDS MySQL 实例、1个云数据库 Redis 实例、1个数据传输服务DTS实例以及1个云服务器ECS实例。测试完方案后,您可以在ROS控制台找到目标资源栈,然后直接删除资源栈即可(删除时,删除方式选择为释放资源)。

三、应用场景

商品信息实时同步

面向电商行业等,通过实时同步RDS库中的商品信息数据到Redis缓存,提高商品信息查询速度,提升用户购物体验。

社交信息快速传播

在社交媒体领域,通过实时同步在线库中用户信息数据到Redis缓存,提高用户信息查询速度,提升用户体验。

账单信息高效查询

在金融等场景,通过实时同步存储在关系型数据库中的账户余额数据到Redis缓存,提高账户余额查询速度,提升用户体验。

官网相关地址直达:
1.更多阿里云方案查询:https://www.aliyun.com
2.阿里云服务器ECS相关活动:https://www.aliyun.com/daily-act/ecs/activity_selection
3.云小站(代金券发布平台):https://www.aliyun.com/minisite/goods

云小站代金券图.png
找好主机网 云山河阿里推荐码 永灿云阿里帮助网 搜。最快服务器 七哥服务器优惠网 了解阿里云 柯南鉴定只推好服务器 聚时尚SSL证书 今夕地服务器优惠网 技术员阿里云推荐 多趣服务器优惠 爱丢网 艾米云惠阿里云阿里优惠活动 阿里云优惠网 阿里云帮助网 阿里IPC服务器ECS优惠 uuhb服务器官网 tomwan服务器官网 ok好轻量级服务器 mieyun服务器 https://ucourse.unipus.cn/classroom/74/thread/29123 https://ucourse.unipus.cn/classroom/74/thread/27077.htm https://ucourse.unipus.cn/classroom/74/thread/29452 https://ucourse.unipus.cn/classroom/74/thread/29226 https://ucourse.unipus.cn/classroom/74/thread/29434 https://ucourse.unipus.cn/classroom/74/thread/28571.htm https://ucourse.unipus.cn/classroom/74/thread/28646.htm https://ucourse.unipus.cn/classroom/74/thread/29651.htm https://ucourse.unipus.cn/classroom/74/thread/28548 https://ucourse.unipus.cn/classroom/74/thread/27904.htm
发表回复
你还没有登录,请先 登录或 注册!