Beyond the Cache ——阿里云Tair云内存数据库场景解读

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 三大类型,从性能到性价比有不同的产品排布

作者:黄鹏程(马格)



一、Tair背景介绍


(一)什么是阿里云Tair云原生内存数据库


阿里云Tair云原生内存数据库线上名字为阿里云数据库Redis企业版(又称阿里云Tair),从2009年开始正式承载集团业务,是一款历经磨练的企业级产品。它完全兼容Redis的数据结构和通讯协议,包括API接口,并且在内部逐步打磨的过程中,基于Tair研发云上托管云内存数据库。


1.png


如上图所示,Tair产品分为三个类型,从性能到性价比有不同的产品排布,下面用1.0X表示开源的Redis的性能与价格,从性能和价格上与三个类型的Tair产品进行对比。


  1. Tair性能增强型
    性能约为开源Redis的两倍,支持多种常见数据结构,在天猫/淘宝/高德/优酷中大规模使用,并拥有任意时间点恢复/全球分布式/热点散列等特性。

  2. Tair持久内存型
    基于Intel傲腾持久内存做的数据库,后文会重点阐述其特点。

  3. Tair容量存储型
    直接对标社区Pika等开源存储型Redis产品。然后因为我们会用阿里云的高效的高效云盘,所以说整个的功能和性能都会比Pika强很多。


2.png


如上图所示,从内存存储方面,Tair三个类型的产品适应不同的场景。


  • Tair性能增强型

1)数据读写频繁,要求低延迟,支持大连接;

2)成本相对不敏感,以满足业务性能需求为主。


  • Tair持久内存型

1)数据读写较频繁,延迟要求可稍微放宽,存储数据量有一定较大容量要求;

2)成本控制较之热数据要求更高。


  • Tair容量存储型

1)数据读写密集程度低,延迟要求不高,整体存储容量要求高;

2)成本是最大考量因素。


(二)阿里云Tair面向业务的数据结构让业务创新更容易


在业务方面,阿里云Tair与基于传统Redis存在许多不一样的地方,阿里云Tair业务结构如下所示。


3.png


除此之外,阿里云Tair有以下优点:

1)高性能

性能增强型,流量上涨淡然处之,性能是开源Redis的2倍。

2)持久化

持久内存型,数据可靠,方便业务使用,不再担心数据丢失。(RPO=0)

3)低成本

多种存储介质,选择最优性价比,性价比高于ECS自建。

4)丰富数据模型

在社区Redis上提供了更多面向应用的数据结构,应用开发更简便。

5)企业级能力

全球多活,数据闪回,混合多云(热点散列)。


(三)阿里云Tair历史


4.pngimage.gif


上图为Tair的发展历史。从Tair1.0开始,团队就孵化出了云Redis社区版和云Memcache,这是线上社区托管的两个版本。


在Tair1.0的时候,就会整个孵化出来,2.0逐步上云,3.0会孵化出来一款叫GDB的产品,是一款线上的图数据库。


再往下是Tair(Redis企业版/Tair 3.0),集团和云上是同一个版本,有很多种形态来支持用户在各种业务场景下的需求。




二、Tair功能介绍


(一)做一个不丢数据的内存数据库—Tair持久内存型


我们希望做一个不丢数据的数据库,做法是通过新硬件和新软件来进行。


1.新硬件


5.jpg


  • 引入英特尔® 傲腾™ 数据中心级持久内存;
  • 与DRAM内存相近的性能表现,而且其大容量和非易失性的特性还可帮助系统获得更优的可用性;
  • 它相比于DRAM内存的成本和容量优势,也可帮助客户有效地降低总拥有成本。


6.png


上图为存储介质图,速度延迟从上到下逐步增大,相反,容量逐步减少,成本逐步降低。Storage Class Memory处于中间,性价比较高。


2.新软件


  • 模式选择

新软件的开发模式方案有两种,分别是内存模式(Memory Mode)应用程序直接访问模式(App Direct Mode)


7.png


在内存模式下,应用和OS将其视为易失性内存池,虽对应用透明,但掉电即失,因此不采用。


在应用程序直接访问模式下,持久内存和 DRAM充当独立内存资源,通过构建符合Redis协议和数据结构的软件利用两块存储资源构建兼容Redis、具备命令级持久化能力的内存数据库。


  • 全新的挑战


8.png


我们选择重新写兼容Redis的东西,而不是在Redis基础上进行更改,是因为新软件有着全新的挑战:


1)替代原有的内存分配器,同时要保证内存分配器元数据的持久化;

2)Redis数据结构与索引的持久化要保持一致性;

3)持久内存和易失内存如何协同工作,让整个数据库高性能工作,同时还具备强大的持久化能力。


3.产品化能力


上文结合软硬件的能力阐述了如何去构建持久化内存的形态,下面可以看一下所带来的成果。


9.png


  • 消除aofrewrite与fsync的无Fork设计,服务更顺滑,P95延时较之内存版Redis更低更稳定;
  • 读写性能吞吐为内存版Redis的90%以上。


10.png


  • 原生命令级持久化能力,操作写入即持久化;
  • 缓存主存合一成为可能,成本更低,架构更优雅。


4.应用场景


应用场景主要分为如下两种。


场景一:大数据量、高性能、成本的综合选型考虑

  • 机器学习平台、推荐系统等计算数据对性能和容量的要求很高;
  • 全内存又使得成本压力巨大;
  • 可采用Tair持久内存型以有效降低成本,并能够保持高性能运行;
  • 同时用户也无需为降本而综合使用其他数据存储,有效地平衡了系统复杂度与成本。


场景二:用作持久化数据存储

  • 游戏、直播、数据分析中大数据结果集对外提供查询服务等场景可以使用;
  • 可采用Tair持久内存型作为数据最终的存储;
  • 对比缓存+主存的两层架构,数据同样可靠;
  • 性价比更高,代码更简化,架构更优雅。


(二)做一个具备时光机能力的数据库--数据闪回


11.png


我们希望这个内存数据库具备有时光机能力。时光机能力表示可以将数据恢复到过去指定的任何时间点,也称为数据闪回,它有如下两大特点:


  • 七天内任意时间点的数据恢复

1)Backup/Restore的终极形态

2)支持按秒级的数据恢复(可支持到按条)

3)防止删库跑路场景

4)Clone & Switching:随时回切


  • 根据按照指定Key或者Key Glob Pattern进行原地数据部分恢复

1)灵活应对部分数据异常

2)其余未指定数据不变化

3)游戏数据回档实现


(三)做一个全球多地写入的数据库--全球多活


1.基本概念


我们希望数据库能够多地写入,把多地的内存数据库进行多活操作,用户可以在多地访问与写入,我们帮用户做数据按序同步。


12.png


2. 三地六向同步


13.png


  • 全区全服同时在线,解决漫游(roaming)和DNS漂移问题。
  • 数据本地访问(locally data access)的流畅性。
  • 单元化:独立部署,区域容灾,按需调度。
  • 数据的高可靠和性能提升。


3. 低时延SLA保障


14.png


  • 推送模式(Push),Latency= T1 (binlog落盘时延)+ T2 (Replicator发现时延) + T3 (Apply时延)

1)整体看,T1 + T2 稳定在10ms,最差100ms;T3基本上时延是网络RTT。

2)忙时下不敏感,replicator具备独立的资源,点到点同步通道带宽稳定。


  • 适合写入量大,对平均时延要求高的客户。
  • 目前全球分布式缓存只能做3地6向。
  • 适合跨域多活及单元化业务(阿里内部经验)。
  • Tair全球同步时延测试白皮书:

https://help.aliyun.com/document_detail/199010.html


4. Session场景


15.png


Session的容灾至关重要

  • 随着业务扩展,session访问压力几何级数增长。
  • 对抖动敏感,远距离访问体验差。
  • 单元化部署,全球化部署。
  • 除去容灾(跨域备份),还要能就近读写(跨域双活,多活)。


5. 游戏场景


16.png


架构特点:玩家可就近接入,本身逻辑就近计算数据读取,基本不存在数据一致性问题,灵活调整分布式节点。


可以灵活跨地域部署,数据通过Tair同步延迟根据网络速度决定通常在100ms以下。


场景:聊天室,弹幕信息同步;跨服对战;全球道具商城。


6.出行场景


17.png


Tair也在高德地图中深度使用,并解决了出行场景的一些问题。


使用前:导航时地理位置信息推送问题

  1. DNS漂移是一个边界效应,通常大概影响边界上5%-7%的用户。
  2. 在导航中跨越边界时,会大量出现交叉访问不同数据区的场景;业务逻辑复杂,可靠性低,用户体验差。


使用后:高德交通三地六向同步(Tair only)

  1. Redis-enterprise跨域多活提供百万OPS每秒的数据同步。
  2. 交通在三地都可高速写入/访问;极高性能的优势提供流畅的用户体验。
  3. 用户可以灵活的在SDK层控制读写,比例等。


(四)做一个有计算的内存数据库


1. TairCPC高精度计数


18.png


TairCPC是一种数据的压缩算法(sketches)的内存实现,可以利用很小的空间对采样数据做高性能的计算,适合在实时和流式计算场景下做高性能的风控和安全场景。


  • 主要特性

1)内存占用低

2)增量读写,IO最小化

3)毫秒级高性能去重

4)超高去重精度

5)误差率稳定收敛


  • 适用场景

1)想以较低的内存实现对海量数据的去重计算;

2)容忍一定的四舍五入的误差率;

3)适用于实时计算的滚窗和滑窗去重。


2. TairTS时序数据处理


19.png


TairTS是基于Redis Module开发的时序数据结构,提供低时延高并发的内存读写访问,以及快速的过滤聚合查询功能。将存储与计算集于一身,极大地简化用户处理时序数据的流程,结合Tair持久内存型单集群最大规模可达65T。


  • 主要特性

1)TairTS相对于TSDB类传统时序数据库,可提供更快的写入性能,并提供数10倍的查询性能。

2)针对小规模数据场景,TairTS可将批量查询与聚合计算集成到单条命令中,减少网络交互,实现毫秒级响应。

3)针对大规模数据场景,可利用索引命令,将大规模数据,分批查询与聚合,实现秒级响应。


  • 适用场景

1)监控数据的存储与计算

2)车联网、工业互联网实时IOT数据处理

3)APM秒级监控等



三、面向未来


20.png


最后谈一下未来面对的事情,关注云产品的人可能都知道存储计算分离,我们希望在这基础上能再进行一层分离。将内存也分离出来,做一个大的内存存储池。希望我们的再分离一层,就是把内存也分离出来,因为现在可能是一个大的存储池,为用户提供更加弹性的服务。

相关实践学习
基于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天前
|
监控 Cloud Native 大数据
即刻预约|阿里云数据库 SelectDB 版商业化发布会,5月21日14:00与您相约
2024年5月2日14:00,阿里云数据库 SelectDB 版商业化产品发布会将于线上重磅举行,即刻开启预约!👇 直播地址:https://developer.aliyun.com/special/selectdb?utm_content=g_1000393528
218 0
即刻预约|阿里云数据库 SelectDB 版商业化发布会,5月21日14:00与您相约
|
1天前
|
Cloud Native 关系型数据库 分布式数据库
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
阿里云斩获国际顶会ICDE 2024最佳论文,0.5秒实现数据库跨机实例迁移。
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
|
2天前
|
SQL 存储 调度
从 Volcano 火山模型到 Pipeline 执行模型,阿里云数据库 SelectDB 内核 Apache Doris 执行模型的迭代
一个合适的执行模型对于提高查询效率和系统性能至关重要。本文全面剖析 Apache Doris Pipeline 执行模型的设计与改造历程,并在 2.1 版本对并发执行模式与调度模式进一步优化,解决了执行并发受限、执行及调度开销大等问题。
从 Volcano 火山模型到 Pipeline 执行模型,阿里云数据库 SelectDB 内核 Apache Doris 执行模型的迭代
|
3天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB是阿里云自主研发的关系型云原生数据库
【5月更文挑战第14天】PolarDB是阿里云自主研发的关系型云原生数据库
38 3
|
3天前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
16 2
|
3天前
|
缓存 Linux
ARM平台内存和cache对xenomai实时性的影响
ARM平台内存和cache对xenomai实时性的影响
14 0
ARM平台内存和cache对xenomai实时性的影响
|
3天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
147 0
|
3天前
|
存储 NoSQL 数据库
为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
“购物车升级”是今年双十一期间提升用户体验的关键项目,展示了大淘宝技术团队致力于通过技术突破消费者和商家体验的天花板。低延迟是这些挑战中的核心,内存数据库Tair因其高吞吐、大连接数、热点请求处理、异常流量管理和复杂计算逻辑优化等特点,在低延迟场景下表现出色。Tair使用内存/SCM混合存储和各种索引来提供低延迟服务,并通过无锁并发、水平扩展分区等技术应对高并发。此外,Tair还通过热点策略、流控和执行流程优化等手段确保在大促时的稳定性和性能。Tair在双十一期间支持了购物车、销量统计、卖家优惠券召回和互动场景等多种业务,展现其低延迟和高并发的能力。
76928 10
|
3天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
81 0
|
3天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
149 6