开发者学堂课程【Redis 入门及实战:Redis 的生态】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/777/detail/13654
Redis 的生态
内容介绍:
一、 Redis 生态工具使用场景
二、 Redis 上下游产品联动场景
本节内容分为两块,第一块 Redis 生态工具的使用场景,包含 Redis 的迁移与同步, Redis 的备份恢复, Redis 数据管理和 Redis 的资质服务,第二部分内容包含是 Redis 上下游产品联动场景,包含 Redis 和数据库应用场景, Redis 和大数据应用场景。
一、Redis 生态工具使用场景
首先我们来看一下 Redis 生态工具的使用场景。
Redis 的生态工具分为两类,第一类是资源 Redis 工具包,Redis - shake。可以实现 Redis 解析、备份、恢复和同步。第二类工具是阿里云数据库团队提供的成熟的生态工具产品。包含四个产品, DTS 支持 Redis 的牵引与同步, DMS 支持 Redis 的数据管理, DBS 支持 Redis 的备份与恢复, DAS 支持 Redis 的资质服务。
1、Redis - Shake 介绍
Shake 是阿里云自研的开源 VS 数据传输工具,支持对 Redis 数据进行解析、恢复、备份和同步。 Redis - Shake 易于部署,高效灵活。
支持 Redis 的上云迁移备份,恢复单向同步上云迁移的功能,支持自建 Redis 迁移,云数据库 Redis 迁移。以及其他与 Redis 迁移至阿里云。备份恢复的功能。备份的过程是将云数据库 Redis 版实例中的数据备份到 RDB 文件中,恢复的过程是将 Redis 的备份文件内的数据迁移到云数据库 Redis 实例中,完成恢复单向同步。单向同步可以支持自建 Redis 之间的同步,也可以支持自建 Redis 与云数据库 Redis 版的同步。
Redis - Shake最基本也是最重要的能力是支持 Redis 的迁移与同步。 Redis - Shake 的同步模式,可以支持全量数据迁移和增量数据迁移。下图是 Redis - Shake 支持 Redis 迁移同步的工作原理。首先, Redis - Shake 向原 red 数据库发送同步请求,原 Redis 数据库发送 RDB 文件,并写入到目标 Redis 数据库中。在全量数据迁移结束后,开始进行增量数据迁移。以上是对 Redis - Shake工具的介绍。
2、数据传输 DTS 介绍
下面我们介绍一下阿里云数据库团队提供的生态工具产品,第一个产品数据传输DTS。数据传输 DTS 可以在公共云和混合云场景下使用,致力于解决远距离毫秒级异步数据传输的难题。DTS 的底层数据流基础设施是阿里巴巴双 11 异地多活的基础架构。DTS 已经在阿里云上运行了六年之久。帮助用户实现了 40 多万实力的上云迁移,为数千应用提供实时的数据流。那 Redis 通过 DTS 可以实现的场景有,上云迁移实施同步,异地多活缓存更新。下面我们详细介绍一下上云迁移、异地多活和缓存更新三个场景。
3、DTS 支持 Redis 上云迁移
首先我们介绍一下 DTS 支持 Redis 上云迁移,传统迁移方式要求在数据迁移期间,停止向源数据库写入数据,即需要停机迁移,来保障数据的一致性。根据数据量和网络的情况,迁移所耗费的时间可能会持续数小时甚至数天,对业务影响较大。
DTS 可以提供不停机迁移的解决方案,只有当业务从源实例切换到目标实例期间会影响业务,其他时间业务均能正常提供服务,将停机时间降低到分钟级别。
下图是 DTS 支持数据迁移的原理图。因为 Redis 数据库没有结构迁移部分,所以通过 DTS 迁移。只有全量数据迁移和增量数据迁移两部分,首先。对于数据库进行全量数据迁移,全量数据迁移启动的同时,增量数据迁移也要启动,开始增量数据的拉取。在全量数据迁移结束之后,开始增量数据的回放。等到源库和目标库的数据基本同步之后,进行数据库的切换,切换以后,业务应用就可以在新的目标库上进行读写,以上是 DTS 支持 Redis 上云迁移的场景。
4、DTS 支持 Redis 缓存更新
下面我们再来介绍一下 DTS 支持 Redis 缓存更新的场景。Redis 通常会作为应用和关系型数据库的缓存使用,提高业务访问速度,提升业务读并发。
DTS 提供的数据订阅功能,可以异步订阅数据库的增量数据,并更新缓存的数据,实现轻量级的缓存更新。
优势
1)更新路径短
业务完成更新数据库后直接返回,不需要关心缓存失效流程,延迟低。
2)应用简单可靠
应用无需实现复杂双写逻辑,只需启动异步线程监听增量数据,更新缓存数据即可。
3)应用更新无额外性能消耗
数据订阅通过解析数据库的增量日志来获取增量数据,不会对业务和数据库性能造成影响。
5、DTS 支持 Redis 双向同步
下面我们介绍一下 DTS 支持 Redis 的双向同步。数据传输 DTS 支持 Redis 企业版实例间的双向同步,适用于异地多活、数据容灾等多种应用场景。可以实现就近读写,减少访问延迟。
注意事项
1)双向数据同步时,正向数据同步作业会执行全量数据初始化和增量数据同步,反向数据同步作业仅执行增量数据同步。
2)为保障数据一致性,双向数据同步作业运行期间,请勿在两端数据库同时对同一个 key 执行修改或写入操作。
6、DBS 支持 Redis 备份恢复
下面我们再介绍一下数据库备份 DBS 产品。数据库备份 DBS 是阿里云提供的低成本、高可靠的云原生数据库备份平台。DBS 通过数据库日志解析同步技术完成备份恢复,业务 RPO/RTO 可达秒级。DBS 支持文件、日志、数据库等全站备份,支持本地数据中心、其他云厂商、ECS 数据库及云数据库等环境,是企业级混合云统一备份平台。
Redis 可以实现混合云备份和容灾备份。混合云备份是说,无论是在阿里云、其他云或者本地数据中心,均可以通过 DBS 实现统一的数据库备份。第二个场景,容灾备份,通过 DBS 对 Redis 进行备份,可以符合一定等级的等保合规要求,以上是对 DBS。支持备份恢复的介绍。
7、通过 DMS 管理 Redis
下面我们再介绍一下数据管理 DMS 产品,数据库备份 DBS 是阿里云提供的低成本、高可靠的云原生数据库备份平台。DBS 通过数据库日
志解析同步技术完成备份恢复,业务 RPO/RTO 可达秒级。DBS 支持文件、日志、数据库等全站备份,支持本地数据中心、其他云厂商、ECS 数据库及云数据库等环境,是企业级混合云统一备份平台。
8、通过 DMS 实现人员数据安全
下面我们再介绍一下数据管理 DMS 企业版数据安全解决方案︰
【权限安全】通过 DMS 安全协同可控制 DB 级、key 级的权限
【数据安全】每人每天查询的次数可按需进行管控,管理员可按需调整,避免过多数据的接触
【变更安全】支持对非只读的更新操作进行安全管控,可将更新操作限制需要工单指定人员审批后执行,对高危操作可禁止提交执行
DMS 提供的授权管理方案∶
9、通过 DAS 实现 Redis 自治服务
数据自治服务 DAS 是阿里云提供的生态工具产品。基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务。帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。
主要介绍一下通过 DAS 实现 Redis 的监控大盘、勤俭评分和 AutoScaling 三个能力。监控大盘可以实现多实力的同时监控,指标异动一目了然,巡检评分可以对实力进行健康度进行综合评分。重点治理得分低的实例,AutoScaling 可以实现自动弹性扩缩容应对业务高峰。下面演示一下通过 DAS 实现 Redis 资质服务的使用方式:
这里是数据库资质服务的控制台。在这里左侧可以看到监控大盘在监控大盘里找到Redis。比如选一个已经创建的监控大盘,在这里可以看到多个实例,同纬度的一个曲线图。
那如何创建这个监控大盘?点击新增监控大盘,命名后,选择你要监控的实例。然后在下面选择想要监控的指标,选择好后,就可以在这里看到数据库的大盘。这是 Redis 的监控大盘。下面我们再看一下 Redis 的实例的体检得分,体检评分。在这里我们可以看到。所有实例的评分。比如这里有扣分详情,当前这个实例是没有扣分的,这里也会有实例的评分报告。
然后再看一下 AutoScaling 的功能,弹性扩缩容的功能,现在只对云盘社区版进行提供。在实例详情里面自制中心中。可以通过自治功能开关进行开启。开启资质服务后,点击自动扩容可以设置。根据业务的情况设置阈值。在阈值设定了之后。如果业务达到阈值之后,就会自动的向上扩容。这是对 DAS 的一个操作的介绍。以上是对所有生态工具的介绍。
二、Redis 上下游产品联动场景
1、Redis 与数据库 RDS 场景
首先介绍一下 Redis 与数据库 RDS 的场景,云数据库 RDS 是关系型数据库的统称,包含 MySQL、SQL Server、PostgreSQL、MariaDB 四款产品。
大家对此以关系型数据库结合的场景,最经典的场景就是公司作为数据库的缓存使用。Redis 作为底层数据库的缓存,可以有效降低数据响应时间,提高吞吐量和并发处理能力,降低后端数据库负载,提升整体业务处理性能。
这种架构是互联网行业最常用也是最经典的架构。缓存数据可以持久化并提供高可用架构满足业务的可用性及数据可靠性要求。
2、Redis 与数据库 RDS 场景
利用 Redis 缓存会话,用户偏好设置等信息,可以实现快速认证,降低对后端数据库的访问。
3、Redis 数据库 vs 缓存
Redis 在某些场景中既可以作为数据库使用,也可以作为缓存使用,大家在业务中可以根据各自的需要去决定。
Redis 的使用方式:
1)Redis 作为数据库
游戏场景:游戏部署架构相对简单,Redis 作为存储数据库使用,主程序部署在ECS 上,所有业务数据存储在 Redis 中,作为持久化数据库。
电商应用:秘杀类购物系统大型促销秒杀系统,系统整体访问压力非常大,云Redis 支持持久化功能,可以直接选择 Redis 作为数据库系统使用。
2)Redis 作为缓存
游戏场景:Redis 作为缓存,加速应用访问。数据存储在后端的 RDS 数据库中。
电商应用:带有计数系统的库存系统底层用 RDS 存储具体数据信息,数据库字段中存储具体计数信息。云数据库 Redis 版来进行计数的读取,RDS 存储计数信息。
4、将 MySQL 数据迁移到 Redis
Redis 作为缓存,首先要将关系型数据库中的数据迁移到 Redis 中。关系型数据库中库表结构的数据无法直接传入以键值结构保存数据的 Redis 数据库,迁移前需要将源端数据转换为特定的结构。
迁移场景
阿里云 RDS MySQL 实例和云数据库 Redis 版实例作为迁移的源端和目的端,运行迁移命令的 Linux 环境安装在 ECS 实例中。
迁移前的数据∶
迁移后的数据∶
5、Redis 与数据库 RDS 的增改查操作
1)查询操作
前端发来请求时,先进行缓存的查询,如果缓存存在要查询的数据,则返回。否则去数据库中查询,并添加到缓存中,再返回数据,这样在下次查询时,便可直接从缓存中取。
2)添加操作
添加操作直接添加到数据库即可,也可以在添加到缓存的同时添加到数据库。但在数据量较大时,推荐的做法是先将数据添加到缓存,在另一个线程中将数据同步到数据库。
3)修改操作
修改操作先修改数据库,再将缓存的数据删除即可。
6、Redis 与大数据应用 Spark
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,形成一个高速发展应用广泛的生态系统。
场景
广告公司在网页上投递动态图片广告,广告的展现形式是根据热点图片动态生成的。为了收益最大化,需要统计广告的点击数来决定哪些广告可以继续投放,哪些广告需要更换。
基于以上诉求选择 StructuredStreaming + Redis Stream 作为解决方案︰