2020年9月20日,阿里云云数据库Redis正式上线Tair(又称阿里云Redis企业版)持久存储系列,该系列包含两种产品形态:持久内存型和容量存储型。该系列产品是Tair系列继性能增强型和混合存储型后又一力作,其兼容原生Redis的数据结构和接口,并具备更大容量规格、抖动更低且命令级数据持久化的能力。该自研产品打破了传统Redis中的数据只能在易失性存储上进行读写的刻板印象,针对客户不同业务阶段的数据存储要求与服务成本考量,全新实现了持久性更强、成本更低的KV数据库。
开源Redis的三大痛点
Redis 是目前全球最主流的Key-Value 数据库产品,作为高速缓存,在缓解系统大并发高压力的场景上已经被无数开发者和企业所认可,尤其在各种行业和场景都有着非常广泛的应用,可以说Redis是应对高并发、大流量、低延迟业务场景的不二选择。然而,随着客户业务的快速发展,Redis对业务的重要性持续上升的同时系统压力和数据量也不断地攀升,这时原生开源Redis便会出现如下的一些矛盾:
1.数据可靠性与在各场景种广泛使用Redis之间的矛盾。Redis有丰富的数据结构和操作,除了作为后端数据库的前置高速缓存外,还在诸多实际涉及到数据更改的业务场景上发挥着重要的作用,这是用户往往会关注数据持久化能力。在开源Redis中,用户可以使用AOF的Always对每条命令都进行fsync刷盘来保证数据可靠性,但是该配置会导致整体性能大幅度下降,因此生产环境往往采用另一个AOF策略,即Everysecond每秒持久化。即便如此,在一个高吞吐的场景下(例如10万TPS),一秒的数据丢失可能就意味着数万条数据记录的丢失,这是一些对数据可靠性要求很高的用户无法接受的,这个特点也在本质上直接制约了Redis在更多场景下的深入使用。
2.服务高性能与数据可靠性之间的矛盾。当开源Redis使用AOF得到秒级数据持久化能力的同时,该机制还需要进行定期的BGREWRITEAOF操作,通过fork一个进程在后台清理持续增长的AOF文件,在大容量实例下的fork问题会带来服务明显的抖动,在一些服务抖动敏感的场景,例如游戏对战,用户体验会大打折扣。另外,在大容量Redis启动时加载持久化文件会耗时很久,缓存无法做到快速恢复。可以说,开源版无法同时拥有服务全程高性能和数据持久化。
3.快速攀升的成本与业务不同阶段的服务访问热度之间的矛盾。开源Redis的数据读写均发生在内存,随着数据规模增大,内存资源占用会随之递增,而每台服务器可使用内存又是一个较小的有限值,因此服务器数量也随着被迫快速上升,整体服务成本会大幅度攀升。另一方面,随着业务的发展,当业务进入发展后期,数据量已经形成一定规模,而数据的访问频度则慢慢降下来,如果在保持现有应用架构和逻辑不变的情况下降低数据存储的成本便是首位考虑要素。而开源Redis只能使用较为昂贵的内存进行数据存取,没有平滑的替代方案,客户往往在这种情况下陷入两难。
综上所述,随着客户放在Redis中的数据越来越多且愈加重要,开源Redis本身可能在上述三个方面都无法满足客户更高的业务场景与服务成本要求。
Tair 完美解决上述三大痛点
基于上述的痛点,阿里云Redis团队在自研内存数据库系列Tair中推出了针对不同数据温度场景的持久内存型和容量存储型,二者作为持久存储系列的两种产品形态,其工作原理均是将数据放置在非易失性存储介质上,在数据库启动时无需进行数据加载,应用直接访问相关数据,在写入数据时也能保证命令级的数据可靠性,写入一条数据即持久化存入非易失性介质,同时也消除了fork带来的服务抖动,而对业务应用则保持Redis的通信协议和数据结构与API,用户像使用一个原生Redis一样轻松上手使用它们。在硬件上,利用Intel傲腾(AEP)与阿里云ESSD云盘等先进硬件,在实现命令级持久化的同时有效的为客户降低了整体服务拥有成本。
图1. 原生Redis与阿里云Tair的持久化机制对比
持久内存型是基于Intel 傲腾(AEP)持久内存技术,兼容绝大部分Redis数据结构和命令,并利用AEP的App Direct模式实现了高性能下的命令级持久化能力。在性能测试中其读写性能约为开源Redis的90%,而在定价上,由于新硬件带来的成本红利,该产品形态的定价是阿里云社区版Redis价格的70%左右,整体性价比更高,适用于要求高吞吐、低延迟同时对数据可靠性要求高的热数据存取场景。
容量存储型是基于阿里云ESSD云盘技术,兼容Redis 核心数据结构与命令,对标市面上基于RocksDB构建的大容量、兼容Redis的数据存储系统,提供了超大容量、平均性能有所妥协的温冷数据存取服务。在基准性能测试中其基础数据类型读性能中位数约为开源Redis的70%,写性能中位数约为开源内存版的55%,而服务拥有成本最低可降低至阿里云Redis社区版的15%左右,适用于高存储密度、低访问频率,对数据持久化要求高,且成本作为首要考虑因素的温冷数据存取场景。
图2.阿里云Tair持久内存型与容量存储型
阿里云产品负责人黄鹏程(花名马格)表示,随着Tair持久存储系列的两种产品形态的发布,Tair的产品系列已经覆盖了从高访问强度到高存储密度的全线企业级Redis服务。阿里云云数据库Redis会将Redis作为用户上云快速接入、体验原汁原味开源Redis的云上服务,同时重点打造集团自研KV存储Tair这款企业级云原生内存数据库,全面覆盖客户不同业务阶段对于Redis性能、功能与成本的更高要求。
图3.阿里云Tair产品矩阵
随着云计算的技术发展,云原生数据库已取代传统数据库成为市场主流。阿里云是国内最早推出云数据库的厂商之一,至今为止已经形成了完整的产品布局,拥有关系型数据库、NoSQL数据库、数据仓库、数据库生态工具和云数据库专属集群五大板块。其中NoSQL数据库中的阿里云 Redis 从 2015 年商用以来,一直是全球领先的云内存数据库产品,拥有Redis和Tair两个主要产品,其背后的研发团队拥有众多顶级Redis社区Committer,并在Redis全球核心团队(共五人)中拥有一名核心成员,在Redis技术发展中持续为社区做出贡献。
除此之外,我们还为用户提供了Redis云数据库专属集群:(https://www.aliyun.com/product/apsaradb/cddc)
这是阿里云专为大中型企业用户定制优化的解决方案,填补了市场空白,具有资源独享、自主可运维、多数据库混合部署等特点,让用户既享受到云数据库的灵活性,又满足了企业对数据库合规性、高性能和安全性要求,最大限度地保留了企业 IDC 运维管理模式,减少企业上云阻力,助力企业数字化转型。