Redis的运维实战 ——仲肥

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 内容简要:一、Redis社区二、阿里云Redis三、企业版Tair

内容简要:

一、Redis社区

二、阿里云Redis

三、企业版Tair

 

 

一、Redis社区

(一)Redis社区发展历程

image.png

Redis2009年诞生,从第一个版本至今已经经历了12年,目前也是全球最受欢迎的KV数据库,在各个领域都有大规模的应用。社区基本上每12年就会有一个版本推出,大版本为X.0格式,如3.04.05.06.0,小版本如3.2。每一个大版本都会有一些重要的特性,而小版本一般都会有一些局部特性的增强。

2.8版本开始,Redis就有很多功能完备的特性,已经实现基本的数据集以及一系列使用命令,如简单的字符串String List的数据结构,还有字典型的Hash,集合型的Set以及有序集合Sorted Set,十分贴合软件开发的实际需求。

同时,支持主备复制和持久化,对服务的可用性和数据的可靠性都有一定的保证,而且支持像事务MultiExec这种批量操作。还有内置的Lua虚拟机,可以在Redis里面执行Lua脚本,以及像阻塞操作,比如BlockingBrpop,还有事件通知等高级特性,此时的Redis已初步具备在生产环境中使用的能力。

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

2016年推出3.2版本,主要是对Lua复制等方面进行优化。

2017年推出4.0版本,这个版本有很多重量级的特性。如Lazy Free,可以对Big Key进行秒删的,避免业务清理Big Key时造成Latency时延的突增,让运行更平滑更稳定,业务也就更稳定。

PSYNC2是对原有的PSYNC协议的增强,在各个主从复制的场景下面做了相当多的优化,大大减少了在实际场景中进行全量复制的情况,有效节省了CPU、磁盘还有网络带宽等资源。

Modules可以让用户自定义数据结构和命令,相比于之前的Lua脚本,Modules更为灵活,可以让Redis在各种定制的业务中发挥更大的作用。

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

2020年发布6.0版本,是Redis发展到现在最具有企业特性的版本。其中就包含大家期盼已久的IO多线程,在性能上进行非常大的优化,通过将网络收发做成多线程化,提升了Redis的处理能力,拓展极限的性能。

另外像ACL开始支持用户的概念,可以对不同用户进行命令级别的权限管理。TLS提供网络传输上的安全加密,使得Redis得到更好的安全保障。Client side cache为用户提供了更强的能力来构建本地缓存。

2020年另外一个大事件就是Redis之父Antirez宣布退出,不再参与Redis的开发和社区的运营,去追求更广阔的星辰大海。同时Antirez建议一直以来参与Redis社区维护跟建设的核心贡献者,留下来一起组建Core Team团队,负责今后Redis的运营。

就这样, Redis Core team团队正式成立,开始接管Redis社区的维护和运营。2021年推出了6.2版本,这也是Core Team成立之后发布的第一个版本,广泛采纳许多用户的需求和建议。如对Redis命令进行了丰富的扩展,也做了很多性能优化和简化运维方面的工作,这个版本目前也已经Release,欢迎大家去使用。

 

(二)Redis社区现状

目前社区Core team一共有5名成员,3名来自于Redis Labs1名来自亚马逊云服务(AWS),1人来自阿里云,这5名成员共同组成了Core team,维护社区的建设。

目前,Core team每两周会举行一次线上会议,会议内容如PR要不要合并,然后有没有一些好的建议能从用户那边吸收过来的,有没有一些用户的需求可以得到实现,大家提出来的这些Issue要如何解决,同时也会讨论制定未来的发展方向,如7.0版本的Roadmap现在就正在讨论中。

比如要对主从复制、持久化与资源管理等做优化。由于现在管理Redis内存的话,数据区跟管理区是没有区分的,因此7.0版本在这方面也会做出优化。

image.png

Redis发展到现在,从最初的2万行代码,到现在6.2版本已经有12万行代码。从代码量上可以看出,Redis的功能越来越复杂,同时也意味着提供的功能越来越丰富。

 

 

二、阿里云Redis

(一)阿里云Redis产品系列

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

image.png

标准版采用主从模式搭建,主节点提供日常的访问需求,备节点是一个热备,提供HA高可用。Master一旦发生宕机或者其它异常,会在30秒内自动切换到备节点,保证业务平稳运行,并且兼容社区的协议。

集群版是多个Redis节点的组合,在容量和性能上都有大幅提升,满足用户对容量与高性能的需求,同时支持直连和代理两种访问模式。

直连模式与社区Cluster协议完全一致,这同时需要业务使用支持Cluster协议的Smart Client接入访问。代理模式额外开发了Proxy组件,通过Proxy组件访问业务的话,就可以只通过一个统一的地址访问Redis集群。客户端的请求会通过代理服务器转发到不同的分片,不需要Smart Client就可以访问整个Redis的集群,降低了应用开发的难度和业务代码的复杂度。

读写分离板是由主备节点和只读节点以及Proxy代理一起组成的系统。代理节点会自动把读写请求路由分发到Master节点和只读节点,用来支撑这种写少读多的业务场景。

 

(二)阿里云Redis运维体系

image.png

阿里云建立了一套Redis的运维体系,涵盖日常运维管理各方面的需求,例如实例运行状况实时和历史的监控,配置告警,修改参数等,以及在接入层提供各种类型的连接访问。

数据安全方面开发了账号体系,在网络安全方面开发了SSL提供网络安全传输加密,以及定期的备份恢复功能。如果发生误操作的话,也可以及时恢复数据,并且支持实时的热点分析以及离线的数据分析,让用户对业务的运行状态有更直观的了解。

同时我们还提供了审计日志,当业务需要纠察时可以进行溯源,这些功能都可以通过控制台来接入使用。

 

(三)性能监控

1.标准版

image.png

性能监控是非常基础且有用的一环,也是用户经常使用的功能。

Redis提供了非常丰富的监控项,从实例的基础运行状态,如CPU、内存、QPS和网络带宽,以及各种类型Key的数量,如过期key是否被删除,Key的总量等。还有像实例运行的最大延迟,平均延迟,支持自定义监控项,对各种数据结构进行监控。

 

2.集群版

image.png

集群版支持对集群架构下面各种指标的查看,如Proxy节点的运行指标,独立数据节点运行指标等,同时也可以查看节点聚合的运行状态。

3.监控频率

image.png

用户对于监控频率有需求的话,可以设置监控的频率,默认为60/次。如果说需要细粒度监控,可以在控制台上进行修改。目前支持最细粒度为是5/次采集。

 

(四)连接管理

image.png

在连接管理方面,我们同时支持内网的VPC网络访问和公网访问,公网访问一般是做练习或者调试。

在集群版的话,我们提供直连访问和Proxy普通访问的方式,都可以在控制台连接管理进行开通。

 

(五)账号管理

1.创建账号

登录控制台 -> 点击实例ID -> 账号管理 -> 创建账号

image.png

关于账号管理,在实际的业务场景中,有时一个实例可能会有多个业务线使用,不同的业务线用法不一样。

为了避免相互干扰,需要做好权限控制。目前云Redis支持设置账号管理体系,支持读写账号和只读账号,帮助用户更加灵活地管理实例,最大限度避免误操作,提升数据的安全性。

image.png

首先进入实例的管理页面,然后点击账号管理,进入后在右上角点击创建账号,就可以看到新建一个读写或者只读的账号。

2.权限修改

image.png

另外,用户可以对已有的账号进行修改。比如说可以把一个只读的账号改为读写账号。如果账号不再使用,也可以进行删除,非常方便地满足日常运维的管理需求。

 

(六)审计日志

1.开通服务

image.png

审计日志是对实际的运行操作记录提供的一站式管理服务,由阿里巴巴集团经历了大量大数据场景之后锤炼而成,业务无需额外的开发,就可以在云端完成运行日志的采集、消费投递以及查询分析,是提升运维与运营效率非常有用的工具。

审计日志服务可以帮助用户时刻掌握产品的运行状况和安全。

Ø  具体操作步骤如下:

1)登录控制台

2)点击实例ID进入实例管理页面

3)点击日志管理->审计日志

4)选择审计日志设置

5)开通服务

开通审计日志之后,系统会记录写操作,也就是对数据进行修改后的操作就都会被记录下来。审计的操作会有额外的性能消耗,大概有5%15%的性能损失。

 

2.查询日志

image.png

审计日志开通之后,如果用户需要查看数据库运行的历史记录,包括写请求的记录,可以在审计日志查询进行操作,寻找Release的资源突增的这些原因。

例如查找哪些数据被修改、删除的记录,云数据库Redis版的审计日志就可以提供这些线索,通过不同的过滤条件筛选日志,精确的定位目标记录,可以选择划定时间,然后根据关键字,如IP,执行过哪些命令,有哪些账号访问等关键字来对审计日志进行过滤,定位到之前的操作记录。

 

 

三、企业版Tair

阿里云数据库Redis企业版叫做阿里云Tair,是基于阿里集团内部使用的Tair产品研发的云上托管键值对缓存服务。

2009年,阿里云Tair就开始承载着阿里巴巴集团的缓存业务,历经天猫双11、优酷春晚、菜鸟、高德等各种业务场景的磨练,是一款真正的企业级缓存产品。如今,基于Tair演进的Redis企业版也是阿里巴巴集团调用量最大的服务之一,在多年的阿里巴巴双11全球狂欢节上也经受住了考验。

 

(一)社区版Redis与企业版Tair

image.png

目前,阿里云提供社区版Redis和企业版Tair两款产品,分别解决不同的业务场景。

社区版主要是根据开源版本的迭代解决用户基本需求,例如解决Redis自建部署运维的问题,开箱即用。如果业务要扩展,也可支持在线灵活的升降配,同时可以从主备到集群灵活编配。

Redis自建时,排查比较困难的话,也可以提供细粒度的监控支持,以及像审计这种溯源的操作。此外,它完全兼容社区版的,在安全方面提供像SSL安全访问连接和白名单服务。

还有一些对Redis的一些优化,比如在社区版本身早期版本的话,短链接场景是性能不佳,还有一些复杂的操作会导致实例陷入循环,此时容易误判造成误切换。还有像Redis本身不提供实时的热点查询服务,针对以上问题,我们在云上的社区版都进行了很多改进。

企业版主要是为了解决用户的痛点,提升访问性能,扩展应用场景,而且从访问延迟、持久化需求、整体成本这三个核心的维度考量,分别开发了企业版性能增强版,持久内存版和容量存储版,来满足不同场景下的业务需求。今天我们主要介绍的是跨域复制多活和PITR按时间点恢复这两个特性。

 

(二)全球分布式缓存

1.功能简介

随着业务的发展,在业务分布比较广的时候,如果还采用跨地域访问,此时延迟就会比较高,影响用户体验。阿里云推出Redis全球多活分布式缓存功能,可以帮助业务解决这种跨地域访问带来的延迟问题。

image.png

Ø  分布式缓存的功能有如下三点优势:

1)多中心;

2)数据库多IDC同步,就近读;

3)高业务扩展性

例如可以直接创建或指定需要同步的子实例,不需要通过业务自身的设计就可以实现。可以让业务更专注与上层的逻辑开发,而且提供了跨越复制的能力,快速地实现异地多活、异地灾备。

可以应用于跨地域数据同步场景,像多媒体、游戏、电商等等各个行业,进行全球化的业务部署。

Redis的全球分布式缓存具体的实施方案为通过建立数据通道,将多个子实例组成一个逻辑的分布式实例进行操作,所有子实例的读写都可以保持实时同步,轻松支持异地多个站点,同时对外提供服务的业务场景。

 

2.实际案例

image.png

以导航为例,比如有三个数据中心:北京、上海与广州,某用户现在从北京开车去往广州,导航要实时地推送地理位置,这个时候就会遇到DNS漂移的问题。

DNS漂移是一个边界效应,通常的大概影响5%~7%的用户。在导航中跨越边界的时候就会出现大量的交叉访问,导致用户获得不同的数据,此时用户体验很差。如果要在业务上解决这个问题的话会很复杂,可靠性也不高。如果通过我们提供的全球分布式缓存,建立三地六向的同步,在北京、广州和上海三地六向同时发送数据,让用户获得更加流畅的体验。

 

3.开通方式

开通方式分为两种:新购开通和转化开通。

image.png

Ø  新购开通操作步骤:

1)控制台左侧导航栏,点击全球多活;

2)右上角点击创建实例->新购分布式实例;

3)根据需求创建实例。

 

Ø  转化开通操作步骤:

1)控制台左侧导航栏,点击全球多活;

2)右上角点击实例创建->已有企业版实例转化;

3)选择适当实例转化。

 

在分布式实例创建完成之后只包含一个子实例,此时需要为该分布式实例添加多个子实例才能建立通道,完成整个全球多活分布式实例的创建,满足子实力之间实时数据同步的需求。

image.png

Ø  添加子实例操作步骤:

1)进入全球多活页面;

2)找到目标分布式实例,点击[+]图标;

3)点击子实例列表的添加分布式子实例;

4)创建和已有子实例规格一致且不同地域的子实例。

 

4.查询延迟

image.png

Ø  指标说明

1)status

同步状态,1为正常,0为异常。

2)ops

每秒从源实例同步的binlog条数。

3)current_binlog_sync_delay_time

同步延迟,单位为秒。

 

(三)数据闪回

1.功能介绍

image.png

云数据库Redis具有性能卓越、架构灵活、安全性强、可用性高等特点,越来越多的应用开始把云数据库Redis作为持久化存储使用,此时可靠的持久化存储就显得尤为重要。

原本社区版只提供的RDB不能满足需求,企业版Tair优化了持久化的机制,将AOF增量归档,实现方便快捷的秒级恢复,提升运维的便捷性。具体就是PITR按时间点的恢复,PITR按时间点恢复就是Backup/Restore的终极形态,支持秒级的数据恢复,防止删库跑路。

例如我们记录了从某一个时间点之后所有的操作数据,如果说需要恢复到某一个时间点的话,以进行克隆创建一个新实例,一直恢复到这个时间点即可。具体可以应用在高级的数据安全场景以及游戏回档,还有版本降级等等。

Ø  任意时间点的数据恢复:

1)Backup/Restore的终极形态;

2)支持按秒级的数据恢复;

3)防止删库跑路;

4)Clone & Switching随时回切。

 

Ø  场景:

1)高级数据安全;

2)游戏回档;

3)版本降级。

 

2.使用方式

image.png

image.png

Ø  前提条件:

1)实例为企业版(性能增强型);

2)AOF落盘处于开启状态。

 

Ø  操作步骤:

1)在数据闪回页签,点击马上闪回;

2)自动跳转至克隆实例页面;

3)在创建克隆实例时选择要恢复的时间点。

相关实践学习
基于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
相关文章
|
3月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
192 64
|
2月前
|
NoSQL 安全 测试技术
Redis游戏积分排行榜项目中通义灵码的应用实战
Redis游戏积分排行榜项目中通义灵码的应用实战
63 4
|
2月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
279 3
|
4月前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
2月前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
32 1
|
2月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
71 4
|
2月前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
41 1
|
3月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
109 5
|
3月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
3月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
171 2

相关产品

  • 云数据库 Tair(兼容 Redis)