Redis 的运维实战 | 学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 Redis 的运维实战

开发者学堂课程【Redis 入门及实战:Redis 的运维实战】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/777/detail/13650


Redis 的运维实战

内容介绍

一、前言

二、 Redis 社区

三、阿里云 Redis

四、企业版 Tair

 

一、前言

Redis 的运维实战,此次课程分为三部分:第一部分是 Redis 社区的发展历程和社区现状;第二部分是阿里云 Redis 的产品系列和运维体系;第三部分是企业版 Tair 的全球多活和 PITR 。

 

二、 Redis 社区

1. Redis 社区发展历程

从 2009 年诞生并发布了第一个版本之后,到现在已经经历了近十二年。目前也是全球最受欢迎的数据库,程序员在各个领域都有大规模的运用。

图片1.png

社区基本上一两年会推出一个版本,每一个版本都会有一些重要的特性,小版本一般会有一些局部特性的增强。从 2.8 版本开始, Redis 就有一些工作岗位的特性,比如说已经实现了基本数据结构,以及一系列的使用命令,非常贴合软件开发的实际需求。同时,也支持主备复制和持久化,这样对服务的可能性和数据的可靠性都有一定的保证。而且也支持事务,进行批量操作,内置的 lua 进行 lua 脚本以及项目注册操作,比如说 blocking ,事件通知等高级的特性,这时已经初步具备在生产环境中使用的条件了。

在 2015 年时,社区推出了 3.0 版本,该版本发布了集群的重量级特性,之前的 2.8 版本,只能支持主从版本,也就是最多只能支持一个结点提供服务。集群发表之后,也就可以由很多节点共同组成一个集群来共同提供服务,这样可以有效的扩展数据的存储能力和服务的信用。社区也提供了管理的软件,方便平时对集群的运用。

2016 年时推出了 3.2 小版本,没有什么特别重要的特性。主要是对 lua

复制以及其他功能进行了优化。

之后的 2017 年推出了 4.0 版本,这个版本就有很多重量级的特性。比如说 Lazy free ,可以对大体进行秒删的一个特性,能够让 Redis 运行的更平滑更稳定。有比如说 PSYNC2 ,是对原有的 PSYNC 增强,几乎在各个图层附近的场景下面做了相当多的优化,大大减少了在实际场景中进行全量复制的发生,有效的节省了像 cpu 磁盘和网络带宽的损失。另外还有 Modules ,它可以让用户自定义数据结构和运营,比之前的 lua 脚本更为灵活,可以让 Redis 在各种定制的业务中发挥更大的作用。

之后在 2018 年 10 月份推出了 5.0 版本,主要是发布 Streams 数据结构,结合了之前的特性,让 Redis 可以作为消息中间件使用。

2020 年时发布了 6.0 版本,可以说 Redis 是发布以来最具有企业特性的一个版本。其中像 io 多线程是大家期盼已久的,对性能进行了非常大的优化,通过将网络收发做成多线程化,提升了 Redis 的处理能力,获得了极限的性能。另外像 ACL 开始支持用户的概率,也可以对不同用户进行命令级别的权限管理,还要向 TLS 提供了网络传输上的安全加密,这样安全性有了更好的保障。另外像 Client side cache 为用户也提供了更强的能力来构建本地环境。

另外还有一个大事件,同年, Redis 的 Antirez 宣布退出,不再参与

Redis 的运维和社区的运营,去追求更广阔的新鲜感。同时, Antirez

建议一直以来参与专辑社区维护和建设的核心贡献者,一起组建一个

Core team 来负责之后的 Redis 的运营,就这样 Redis 的 Core

team 就正式成立,开始接管社区的维护和运营。

一年之后推出了 6.2 版本,这也是 Core team 成立之后,推出的第一个版本,广泛的采纳了很多的用户的需求和建议。比如说对 Redis 命令进行了非常丰富的扩展,在性能优化和简化运维方面也有了很大的提升。

2. Redis 社区现状

目前,社区 Core team 一共有五个成员,共同维护社区的建设。 Core team 团队目前每两周会举行一次线上会议讨论,比如说是否合并 PR ,用户有没有提出好的建议,有没有什么需求是可以满足的, Issue 该怎么解决,同时也会去讨论未来发展方向,像 7.0 的 Roadmap 现在就正在制定中。比如说会对 Redis 的主从复制做一些优化,还有资源管理方面的优化。 Redis 从初代版本的 2 万行代码到现在 6.2版本,已经有 12 万行代码了,从代码量上的也可以看得出 Redis 的功能是越来越复杂,同时也意味着提供的功能也越来越丰富。现在也还是非常欢迎大家积极参与到建设中,无论是提需求还是贡献都非常欢迎。

 

三、阿里云 Redis

1.阿里云 Redis 产品系列

图片2.png

阿里云 Redis 系列产品主要分为三大系列,分别是标准版、集群版、读写分离版,适用于不同的业务场景。

标准版采用主从的模式来搭建,主节点提供日常的访问需求,被节点保证业务平稳运行运行的完全兼容。

集群版是通过多个节点的组合,在容量和性能上都会带来提升,满足用户对容量和高性能的需求。同时,支持直连和代理两种访问模式。直连模式就是跟社区达成的 master 协议完全一致的,这种同时需要业务使用和 master 协议存在接入访问。代理模式是额外开发的一套组件,可以通过一个统一的地址来访问 Redis ,客户端的请求会通过代理服务器转发到不同的分片,就可以访问整个集群,降低了应用开发的难点。

读写分离版是由主备节点、只读节点以及保险代理一起组成一个系统。代理节点会自动的把读写请求分发到 master 和内置图解,用以支撑业务场景。

2.阿里云 Redis 运维体系

图片3.png 

同时,阿里云也建立了一套 Redis 的运维体系,涵盖了日常运维管理等各方面的需求,比如说实力运行状况、实时和历史监控、配置告警和修改参数信息,接入层会提供各种类型的连接访问。出于安全考虑,我们开发了账号体系;在网络安全方面,提供网络安全传输加密,以及定期的备份恢复,如果发生误操作,能及时恢复数据,并且支持实时热点数据分析和离线数据分析,让用户对业务的运行状态有更直观的了解。同时,我们还提供得了审计日志功能,如有业务需要纠缠,可以方便查询分析。这些功能的都可以通过控制台来接入使用。

接下来看一下性能监控,性能监控是非常基础且实用的功能,也是大家经常使用的一个功能。而在这里 Redis 提供了非常丰富的监控

项,从实力的基础运行状态,比如说 cpu 、内存、 GPS 和网络带宽,以及各种类型的的数量。

图片4.png

同时还支持自定义监控,可对各种数据结构进行的监控;也支持对集群架构下面的各种指标的监控;也可以查看节点聚合的运行状态。

另外,如果对监控频率有需求,可以设置监控,默认频率是 60 秒一次。如果需要细粒度的监控,可以在平台上进行修改,最细粒密度是五秒钟一次采集,这样可以更为细粒的监控实际的运行状态。

图片5.png

在连接管理方面, Redis 支持内网( VPC 网络)、公网访问、直连访问。公网访问只作用于练习或者调试使用。在实际业务中,公网并不建议使用。在集群版,能提供直接访问和普通访问方式,这些都可以在控制台联系管理里编辑与开通。

关于账号管理。在实际的业务场景中,有时候一个实例可能会有多个业务线来使用,不同业务的用法是不一样的,为了避免相互干扰,需要做好权限控制。目前, Redis 支持设置账号管理体系,支持读写账号和只读账号,帮助用户更加灵活的管理实例,最大限度的避免误操作,提升数据的安全性。

图片6.png

操作步骤如下:首先要进入实例的管理界面,点击右上角,进入实例管理页面;点击账号管理,进入到账号管理页面,在右上角点击创建账号。这时候就可以新建一个读写或者只读账号,另外也可以对已有的账号进行修改或删除,非常方便满足日常运维管理的需求。

同时,我们还提供了一个高级特性——审计日志,它是对实例运行操作记录提供的一种一站式管理服务,由阿里巴巴集团建立了大量大数据场景之后锤炼而成。业务无需额外攀爬就可以在云端完成运行日志采集、消费、投递及查询分析,是提升运维和运营效益非常有用的工具。审计日志服务可以帮助用户时刻掌握产品的运行状况和安全。

具体操作如下:首先需要登录控制台,点击实例 ID 进入实例管理页面,点击日志管理进入到审计日志,再点击审计日志,进去审计日志页面,然后选择审计日志的设置,这里建议使用正式版,因为正式版可以对日志保持更长的时间,之后就可以开通服务。开通之后,系统就会记录操作,同时因为审计的操作,会有额外的信任消耗,大概有 5% 到 15% 左右的幸福损失。

图片7.png

审计日志开通之后,如需要查看数据库运行的各种运行记录,也可以在审计日志查询里进行操作。寻找 Redis 资源特征的原因等,数据库 Redis 版审计日志可以提供一些线索,可以通过不同的过滤条件(关键字)来筛选日志,精确定位目标记录。

 

四、企业版 Tair

我们再来看一下企业版 Tair ,阿里云数据库 Redis 企业版也叫做阿里云 Tair ,是基于阿里集团内部使用 Tair 产品,研发的云上托管的缓存服务。

从 2009 年开始承载着阿里巴巴集团的缓存业务,经历了各种业务处理场景的磨练,是一款真正的企业级产品,到如今的基于 Tair 引进的 Redis 企业版运行,是阿里巴巴集团掉最大的服务之一。

1.社区版 Redis 与企业版 Tair

目前,阿里云提供的社区版 Redis 和企业版 Tair 两款产品,分别解决不同的业务场景。社区版 Redis 主要是解决用户的基本需求,比如说像 Redis 是自建,解决 Redis 自建部署运维难的问题,开箱即用。如果业务要扩展,也支持在线灵活升降,可以在主备和集群中进行灵活的变通。另外也可以完全兼容社区版本。

在安全方面,提供了 SSl 安全访问连接和白名单服务,还有就是对于 Redis 的优化,比如在早期版本,短链接场性能不佳,主线线程判活容易误切,有时不提供实时热点侦测服务。针对这些,在云上的顺序版都进行了改进,企业版主要是为了解决用户痛点。而且从访问延迟、持久化需求、整体成本这三个核心维度来考察,我们基于多种产品特性分别开发了企业版的性能增强版、持久内存版和容量存储版,来满足不同场景下的业务需求。

2.企业版 Tair 的特性

主要介绍企业版 Tair 的两个特性:全球分布式缓存和 PITR 。

(1)全球分布式缓存

首先,看一下全球分布式缓存。随着业务的发展,在业务分布较广时,如果还采用快递的访问的时,延迟会较高,会影响用户体验。阿里云借此推出了 Redis 全球多活分布式缓存功能,可以帮助业务来解决这种快递预防保卫延迟带来的问题。分布式缓存功能的有如下几点优势:可以直接创建或制定需要同步的实例,不需要通过业务,自身就可以实现;可以让业务更专注去上乘的逻辑开发,而且提供的跨越复制能力,快速的实现异地脱货、异地灾备的功能;可以应用于跨地域数据同步场景,像多媒体、游戏、电商等等各个行业进行全球化业务部署。

具体的实施方案如下: Redis 的全球分布式缓存,通过建立数据通道将多个实例组成一个逻辑的分布式实例来进行操作,从而保持同步。可以支持异地多个站点,同时对外提供服务业务场景。

我们以导航这个案例来看,有三个数据中心:北京、上海和广州,用户从北京开车去往广州,导航要实时推送当前的地理位置,这时候会遇到 DNS 漂移问题,是一个边界效应,通常会影响 5% 到 7% 的用户。在导航中跨越边界时,会出现大量的交叉访问不同数据区的场景,业务逻辑较复杂且可靠性不高,用户体验差。如果通过使用全球分布式缓存,就可以很方便的解决这个问题。在北京、广州和上海建立三地六向同步,同时发送数据,使用户获得更加流畅的体验。

具体应该如何使用呢?首先需要创建一个逻辑,这个逻辑要包含具体的使命,可以通过新购开通或者是转化开通。

如果是新购开通,首先要进入控制台左侧导航栏,点击全球多活,点击新购公布式实例,这时会根据需求创建一个企业版的集群架构的实例。如果是转化开通,点击转化开通,选择一个合适的企业版的集群架构实例进行转换。在分布式实例创建完成之后,是只包含一个子实例时,需要为该分布式添加多个分布式子实例,才能建立通道,完成整个全球多活分布式实例的创建,满足子实例之间的实时数据同步的需求。具体操作:首先要进入全球多活页面,找到目标分布式实例,点击加号图标,这时可以看到在下方有添加分布式实例的操作,点击后即可创建。

另外,还可以对原始全球分布式缓存实例进行监控。会有一些指标,像

status ,表示同步状态,“1”为正常,“0”为异常; ops 表示每秒从

源实例同步的 binlog 条数;像 current binlog sync delay time 表

示同步延迟,单位为秒。

(2)数据闪回 PITR

云数据库 Redis 具有性能卓越、架构灵活、安全性强、可能性高的特点。越来越多的应用开始把云数据库 Redis 作为持久化存储使用,因此可靠且持久化就更为重要。所以原本社区版只提供恢复的功能,不能满足需求。

企业版 Tair 优化了持久化的机制,并进行规整,实现方便快捷的恢复,提升运维的便捷性。具体就是,PITR 按时间点恢复,它是 Backup/Restore 终极形态,支持秒级的数据恢复防止删库跑路,可以在 Clone 和 Switching 中随时切换。

具体可以应用在高级数据安全、游戏回档以及版本降级等场景中使用。

图片8.png

如何使用数据闪回功能?首先需要开通数据,它的前提条件是企业版,也就是系统增强版,同时还需要 AOF 落盘处于开启状态。

具体操作:在数据闪回页签点击马上闪回,然后会自动跳转到克隆实例页面,在创建克隆实例时,选择要恢复的时间点即可。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
28天前
|
存储 运维 安全
2024-3-18隐语学习笔记:数据可信流通,从运维信任到技术信任
数据要素可信流通,重构技术信任体系。信任四要素:身份可确认,利益可依赖,能力有预期,行为有后果。外循环中四要素遭到破坏,导致信任降级甚至崩塌:责任主体不清,能力参差不齐,利益诉求不一致,责任链路难追溯。数据可信流通 需要从运维信任走向技术信任。
|
2月前
|
缓存 监控 NoSQL
Redis - 在电商购物车场景下的实战分析
Redis - 在电商购物车场景下的实战分析
151 0
|
2月前
|
消息中间件 NoSQL Java
Redis List:打造高效消息队列的秘密武器【redis实战 一】
Redis List:打造高效消息队列的秘密武器【redis实战 一】
109 0
|
3月前
|
存储 NoSQL BI
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
50 0
|
2月前
|
消息中间件 NoSQL Java
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
173 1
|
20天前
|
NoSQL Redis
Netty实战:模拟Redis的客户端
Netty实战:模拟Redis的客户端
11 0
|
27天前
|
存储 NoSQL Redis
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
21 0
|
1月前
|
消息中间件 存储 缓存
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
49 0
|
2月前
|
存储 NoSQL 算法
学习 Redis 基础数据结构,不讲虚的。
职场中是这样使用 redis 的。
146 1
学习 Redis 基础数据结构,不讲虚的。