本文作者皓楠,阿里云数据库产品专家

Redis 是世界上最流行的 KV 缓存数据库,2009年诞生至今,已发展超过十个年头,伴随着互联网行业的发展,Redis 在过去十年取得了辉煌的成绩。

Redis 服务在中国有着非常庞大的用户群体和商业市场,根据 similarweb 的统计,redis.io 的流量访问中,超过 50% 来自于中国大陆,中国开发者对 Redis 的喜爱程度可见一斑。

2019年 阿里云 Redis 缓存服务取得了不小的成就,上线 5.0 版本,行业率先提供模块服务,按时间点恢复能力等。在致力于提供业内最优秀的缓存服务上,我们一直不遗余力。

1回顾2019

1.1

上线 Redis 5.0

2019年4月,阿里云全地域上线了最新稳定版 Redis 5.0,提供 Stream 数据类型,ZPOPMIN/MAX,增强 HyperLogLog 等最新功能。其中 Stream 是继 Redis 3.2 版本 GEO 功能以来时隔两年多全新的数据结构。Stream 类似于日志的数据结构,允许在单一 Key 上基于自动的有序时间序列存储多个字段,在消息队列,事件通知,统一日志架构等业务场景中有非常大的发挥空间。阿里云 Redis 目前支持 2.8,4.0,5.0 三个大版本,版本丰富度国内领先。全系列支持主从双副本,分片集群,自动读写分离架构,满足客户多样的业务需求。

1.2提供全新数据库自治服务(DAS)

性能诊断和性能调优是数据库使用中最棘手的问题。为了更好的帮助用户找出数据库性能隐患点、提升问题排查的效率。阿里云 Redis 缓存上线了全新自治服务工具 DAS 服务,支持 Redis 慢请求分析、实时性能查看、缓存分析、会话管理:

  • Redis 慢请求分析,慢请求一目了然
  • 实时性能

实时性能以5秒的采集粒度,实时的采集、分析和展示核心性能指标的趋势,帮助用户在大促、应用发布等场景下一眼确认数据库性能。

  • 缓存分析

缓存健康情况对于Redis的性能是至关重要的,通过 DAS 的缓存分析功能,您可以直接确认确认Key分布情况,减少因为Key倾斜引发的内存不足、性能下降等问题。

  • 会话管理

如果Redis的异常正在发生,我们第一时间需要确认正在执行的请求或者操作,该功能直接将正在执行的请求通过白屏化的方式直观的展示给客户,并且支持各个维度的统计和排序,同时也支持终止异常会话.

多个Redis实例批量管理的功能,是很多企业级客户需要的,除了上述功能外,我们也新增了自定义监控大盘的功能,支持企业级用户在管理多个实例的场景下,自定义跨实例的监控大盘,满足日常运维中多实例、多指标的关联、对比、查看需求。

1.3审计日志系统全面升级

Redis 社区版最被客户诟病的一点就是不支持审计,客户无法实现快速定位历史操作信息。发生性能问题,误操作时,没有排查依据。阿里云 Redis 服务,通过内核改造提供全操作日志(modify)及高危命令的审计功能,性能开销通常低于 5%,为客户提供 7×24 基本无业务无损的审计服务,近日又对审计功能进行了全面升级,提供关键字模糊查询,代理及数据节点审计,账号,DB,客户端 IP 多条件过滤等能力,方便客户在众多审计日志中快速定位。同时提供访问用户数,客户端数,审计日志书,平均 RT,平均 QPS 的聚合展示,以及  Top 用户,客户端及命令的聚合展示,系统运行状态一目了然。

审计日志提供,账号,客户端IP,DB,执行命令等信息展示,并支持控制台直接导出。

同时我们还支持定期推送审计日报,基于审计信息的邮件告警等功能,审计日志功能全面升级。

2展望2020

“今天的最好表现, 是明天的最低要求”, 疫情阻止不了阿里云 Redis 前进的脚步, 2020 还有哪些值得期待的功能? 

1. 推出 Redis 企业版(Tair)品牌系列

Tair 是阿里云自研分布式键值存储(KVS)系统,几乎涵盖了淘宝、天猫、阿里妈妈、菜鸟、钉钉、优酷、高德等阿里巴巴所有核心业务。2019年底阿里云 Redis 企业版(Tair)系列全站发布。这里要先聊一聊社区版 Redis 的一些核心问题

  • 单线程 C10K 问题,即在大链接状态下抗冲击能力很差。大型和超大型应用动辄就有一万或者几万进程连接Redis,一个冲击响应或者一个慢查询就可能导致连接数雪崩。
  • 单分片处理能力有限。Redis单进程对于 O(1) 的操作大致有10~13w OPS的服务能力,虽然对比其他数据库,性能已经非常优秀,但是在互联网极端和突发场景下处理能力依然不足。
  • 数据结构模块(Module)。Redis提供的基础的Hash、List、Set等是通用的是对通用互联网环境的总结,而在互联网大型企业有着更多的模块需求。
  • 跨地域分布式缓存需求。随着互联网全球化进程的发展,实例多活成为了愈来越多客户的刚需。多活不但能够实现高性能的“就近访问”,还能作为跨地域复制(Geo Replica)的一个重要容灾手段,可以极大的提升客户的业务稳定性和架构灵活度。
  • 低成本缓存。针对大容量低访问但对RT(latency)不敏感的应用,纯内存显然代价过高。
针对上面的通点问题,阿里云 Redis 企业版(Tair)推出了两个系列,性能增强系列和混合存储系列。
  • 性能增强系列,业内最快的缓存系统

多 IO 线程改造,引入更多计算资源,减少 IO 事件等待提升处理能力。单节点 30-40w OPS 是社区版处理能力 3 倍以上,30-50k 链接下稳定运行,轻松应对高并发,突发流量等业务场景。同时性能增强系列还提供了多达 5 种自研 module,进一步拓展 Redis 缓存的应用场景。

  • 混合存储系列,低成本超大规模持久化KV存储解决方案

引入 SSD 磁盘作为缓存介质,提升缓存容量的同时大大降低了缓存成本,单分片最高支持 1T 存储,集群版最高可扩展至 9TB,同时整体成本下降 70%-90%。为客户带来真正的实惠。混合存储系列所有操作都在内存中完成,完全兼容 Redis 协议,对于客户来说可以 0 成本启动。目前支持 DTS 和 redis-shake直接导入数据。

2. Redis 专享主机形态,云上最灵活的大规模集群解决方案

随着云业务的发展,云服务被越来越多的企业所接受,但是云发展的过程中,如何解决规模化集群管理,客户级别资源隔离,定制化管控需求是当下云 PaaS 服务面临的一大挑战。阿里云 Redis 服务推出专享主机形态是商业上的一次创新和技术上的一次突破。这里有三个主要概念:

  • 主机组:逻辑主机群的概念,主机组间资源互相不可访问,可以按需申请多个。我们建议按照业务垂直拆分主机组,提供业务间资源隔离。
  • 主机:服务器主机,一台主机可以开通多个实例,我们支持灵活地添加,删除主机,也支持针对主机的管理,比如替换主机,重启主机,清空主机实例,迁移主机实例等,方便客户进行资源调配管理。
  • 缓存实例:一台主机上面可以开通多个 Redis 缓存实例,这个实例概念等同于 PaaS 服务的 Redis 实例。我们提供云上 Redis 缓存的全部能力,包括监控告警,日志管理,备份恢复,账号管理等基础能力。

专享主机形态,相当于将客户的 IDC 无缝搬迁到云上,提供大规模主机管理,调配能力,主机对用户更透明。同时开放主机管理能力,支持用户登陆采集信息,同时支持自定义脚本,代理安装,方便大客户定制管控开发。主机提供超卖比设置,可以将不同资源类型,业务高峰的业务错峰部署,提升资源利用率,实现超高性价比。同时 Redis 缓存实例无缝对接阿里云管控平台,可以轻松开通,删除实例并展开实例变配,监控告警,日志管理等基本运维管理工作,让客户享受云平台技术红利,降低运维成本,提高人效,让客户专注于核心业务。

3. 业内首先支持多种 module,使用更灵活,功能更强大

TairString

  • Redis String性能增强命令包含CAS和CAD,可以实现简洁高效的Redis分布式锁。使用说明及示例请参见CAS/CAD命令。
  • TairString数据结构及相关命令TairString是一种带版本号的string类型数据结构。原有的Redis String由key和value组成,而TairString不仅包含key和value,还携带了版本(version),可用于乐观锁等场景。除此之外,TairString在Redis String加减功能的基础上支持了边界设置,可以将INCRBY、INCRBYFLOAT的结果限制在一定的范围内,超出范围则提示错误,适用于限流器等场景。

TairHash

  • TairHash是一种hash类型的数据,不但和原有的Redis Hash一样支持丰富的数据接口和高处理性能,还突破了Redis Hash只能为key设置过期时间的限制,支持为field设置过期时间和版本,极大地提高了hash数据结构的灵活性,简化了很多场景下的业务开发工作。TairHash使用高效的Active Expire算法,可以在不对响应时间造成明显影响的前提下,更高效的完成对field的超时判断和删除。

TairBloom

  • TairBloom是一种可动态扩容的布隆过滤器,完全兼容RedisBloom模块的命令。TairBloom首先是一种概率性数据结构(space-efficient probabilistic data structure),主要使用较低的内存消耗来判断一个元素是否存在;其次,TairBloom具有动态扩容的能力,可在扩容的同时维持证误判率的稳定。

TairDoc

  • TairDoc是一种文档类型的数据结构,支持JSON标准,完全兼容ReJSON模块的命令。TairDoc数据以二进制树的方式存储,支持对JSON中子元素的快速访问。

TairGIS

  • TairGis是一种使用R-Tree做索引,支持地理信息系统GIS(Geographic Information System)相关接口的数据结构。Redis的原生GEO命令是使用GeoHash和Redis Sorted Set结构完成的,使用1D索引,主要用于点的查询,TairGIS使用2D索引,除了对点的查询,还支持线、面的查询,尤其适合用于判断相交或包含关系,功能更加强大。

4. 支持按时间点恢复

社区版 Redis 提供 RDB 和 AOF 两种持久化方式,但是缺少类似于 Binlog 的日志形式,AOF 没有记录时间和位点信息,导致无法按照时间点恢复数据。虽然 Redis 纯缓存的场景下,这种恢复模式可以满足大多数业务场景需求,但是在游戏等行业下,如果支持按照时间点恢复数据可以实现快速回档,极大提减少停机维护时间。阿里云 Redis 缓存服务,通过在 AOF 追加时间戳信息,可以实现按照时间点恢复数据,实现了从缓存到数据库的飞跃。这种日志改造在主从复制,跨地域备份等场景下也有非常好的应用,可以实现断点续传等能力。

5. 全球分布式缓存服务助理企业级客户全球化业务布局

随着企业级客户全球化业务的发展,全球分布式缓存服务的需求应运而出,跨地域数据双向,多向同步,全局就近访问,成熟的链路监控体系是这一类服务的标签,2020 年阿里云 Redis 服务将在企业版基础上推出全球分布式缓存服务形态,满足企业级客户业务出海,全球业务的诉求,方便客户跨地域业务的展开。

 结语

从 2009 年 Redis 服务面世以来,Redis 缓存已经经历了 10多个年头,缓存行业也经历了翻天覆地的变化。2019年底,Redis 6.0 RC 版面世,预计稳定版也会很快面向用户正式开放。用作者的话说,这个版本是迄今为止最大的更新,从 RC 版 Release Note 来看,最新版 Redis 在客户端缓存,多 IO 线程,集群代理,SSL 加密,模块 API 优化都有提及,可谓是赚足了眼球。不过回头看看阿里云 Redis 服务的发展历史,我们早在几年前就布局了 SSL 加密,多 IO 线程改造,集群代理,混合存储,模块等方方面面,某种意义上来说,阿里云 Redis 服务是走在了缓存时代的最前沿。我们在为用户提供最优秀,好用的缓存服务上一直不断努力前行。在可以预见的未来,缓存依然会是数据库产品阵营中的主流,且不可替代,这里我们也做个趋势预测

  • 缓存需要更贴近客户业务,缩短 RT,多级缓存或成为标准。
  • 产品架构会对客户更加透明,对客户无感,主从版与集群版的使用差异会越来越小,客户无需感知后端产品架构。
  • 弹性热伸缩或成为刚需,满足互联网场景下突发流量,瞬间峰值等极端业务场景。
  • 全球分布式缓存或成为大型国际化互联网行业的标准诉求,双向甚至多向复制成为行业基准能力。
  • 面向 IOT & 5G 的爆发,缓存更轻量化,解决边缘计算场景下的缓存需求。
Comments are closed.