为余势负天工背,云原生内存数据库Tair助力用户体验优化

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 作为双11大促承载流量洪峰的利器,Tair支撑了电商交易核心体验场景。不仅在数十亿QPS的峰值下保持着亚毫秒级别的顺滑延迟,同时在电商交易核心体验场景上也做出了技术创新。


前言


2021年双十一,是天猫的第十三次双十一,也是 Tair 的第十三次双十一。每个参与备战的 Tair 同学各有不同,有的同学是第一次,感受到了技术大团建的独特氛围;有的同学稍多点,集齐了七件战袍来召唤神龙。今年是我经历过的最紧张的一次:备战过程跌宕起伏,今年上线的新产品压测过程不太顺利;同时也是经历过的最暖的一次:在业务伙伴们鼎力支持下,团队兄弟们并肩作战,最终做到了“顺滑如丝安稳如磐”。


背景


Tair 从2009年4月诞生开始,经历了多次迭代,为丰富的业务场景支持了不同的引擎。其中 MDB / LDB 是发展时间最长的子产品,也依然是今天双十一的绝对主力,顺滑地承担了双十一流量洪峰,压测阶段也表现良好。这背后是成熟的内核能力对场景的全面覆盖,以及不断迭代的产品能力对维护效率的提升。当然,拥有 10K+ 实例的数据库产品是离不开系统 Owner 们精进的专业能力、对产品运行的关注、对需求的快速响应。


除了产品自身的稳定,Tair MDB / LDB  还是 Tair产品线其它所有产品发展的基石,比如Tair MDB With PMem,作为Tair 在持久内存上的第一个里程碑,后面迭代出了2020年云栖大会发布的 Tair 持久内存型;在今年双十一中,基于持久内存架构的 TairSQL,扩宽了内存数据库Tair支持的计算场景。Tair 持久内存型在今年双十一的不同场景中发挥了重要作用,下面的章节详细介绍。



Tair 持久内存型


Tair 持久内存型是在阿里云官网公开售卖的提供大容量、兼容 Redis 的内存数据库产品,同时也为阿里巴巴集团内核心应用提供服务。单实例成本对比 Redis 社区版最高可降低30%,且数据持久化不依赖传统磁盘,保证每个操作持久化的同时提供近乎 Redis 社区版的吞吐和延时,极大提升业务数据可靠性。


Tair 持久内存型所用的存储介质英特尔® 傲腾™ 持久内存(Optane PMem)是兼具出色的内存与存储性能的解决方案,将高性价比的大容量内存与对数据持久性的支持巧妙地结合在一起,可以将更多数据保存在更靠近CPU的地方,加速大内存计算,加快数据库重启时间并减少I/O, 降低大内存节点的功耗,并在断电时保护数据。

*了解英特尔® 傲腾™ 持久内存(Optane PMem),请访问:https://www.intel.com/content/www/cn/zh/architecture-and-technology/optane-dc-persistent-memory.html


英特尔®傲腾™持久内存弥补了传统SSD和DRAM之间的空白,以创新的技术提供独特的操作模式,满足针对各种工作负载的需求,特别是从云到数据库,再到内存分析,虚拟化基础设施等数据密集型和计算密集型工作负载,助力从更大的数据集中获取更深入的洞察。

2020年云栖大会发布之后,通过服务越来越多云上和集团内的用户场景,Tair 持久内存型收集的用户反馈对支持的场景范围、访问性能、性价比等方面都提出了更高的要求。基于这些需求,Tair 持久内存型攻关了核心优化技术,让数据在 DRAM 、持久内存之间动态自适应移动,确保用户索引占用空间、数据区占用空间维持在固定比例范围内,满足了不同用户场景下的数据存储需求。


同时,Tair 持久内存型与 Aliyun Linux 操作系统内核技术深度结合,兼容了主备复制、实时备份等场景对于数据快照的需求,并大幅度降低了超大内存占用空间下实时快照的延时影响。除了覆盖更多支持场景和进行高频场景的性能优化,在提供更高性价比方面,Tair 持久内存型精简了自主研发的持久内存存储结构的元数据占用空间,并针对 List、Hash 等用户高频使用的数据结构进行精细化的透明压缩,在维持数据持久化性能稳定下,实现1-2倍的数据压缩率,大幅降低了数据持久化版本的硬件成本。


Tair 持久内存型除了在 Redis 通用场景上深耕细作持续优化,也拓展对于成本,数据一致性,低延时和容量的综合要求很高的诸如了在广告领域和特征存储场景上也大放异彩。同时2021年双十一中,在两个不同的用户场景做出了创新,帮助应用在系统稳定性、性价比、体验等方面得到了显著提升。首先介绍在风控场景中起到了重要作用的 TairCPC数据模型。


TairCPC


在2020年双十一中首次登场的 TairCPC,今年被吸纳进入Tair持久内存型产品,在双十一的风控场景起到了重要作用。


TairCPC 提供的聚合算子 Sketches 化能力,以 Module 的形式下沉到存储引擎内部,可以利用很小的空间对采样数据做高性能的计算,用户增量写入后直接返回实时计算结果。使用 TairCPC 的风控业务,作为集团交易链路核心模块,直接影响线上整个交易的安全性,该产品最核心的实时计算链路进行实时风控的场景使用了 TairCPC。


今年双十一这个场景在 Tair 持久内存型的助力下,节省了约1/3的存储空间,加上持久内存的成本优势,让用户成本大大降低。针对 TairCPC,Tair 持久内存型进行了大量的性能优化,使得众多场景下性能与内存相当,在慢查的性能上提升了一个数量级,有效的提升了系统稳定性。在几乎不影响性能的情况下,实现了数据的完全持久化(RPO=0)。


TairSQL


2021双十一 Tair 在核心检验场景做出的技术创新,来源于一款内部代号为 TairSQL 的子系统。双11高峰期,用户下单自动领券,以及交易成功后资产的核销都会为数据库系统带来相应的写入流量,毫秒级别的写入延时必须维持在较低水平才能保证用户在商品搜索、详情展示等导购场景感受到到手价格的一致性变化。


价格一致性场景对于数据库产品的技术挑战简单来讲就是:读写负载高,延时要求苛刻。为了应对这个场景的技术挑战,下面的章节简单介绍下 TairSQL 使用的内核技术。



TairSQL内核技术


针对双十一的业务特征,TairSQL 做了持久内存数据存储改造、客户端连接开销降低、集群初始化加速、内存使用优化等和性价比、稳定性相关的工作,但是服务于高吞吐低延迟的场景,主要得益于持久内存存储、高效事务处理模型、轻量级用户接口访问等几个核心特性:


  • 持久内存数据存储,使用持久内存作为数据最终存储介质,降低了访问链路上的 IO 延迟,无需再进行传统数据库产品耗时的缓存、磁盘上的数据频繁淘汰交换,而且针对索引数据、用户区数据的访问频率进行了合理的数据分布,让高频的索引查询更新在 DRAM 中完成。


  • 事务处理模型,水平扩展的集群中,每个节点服务数十个分区,每个分区使用单独线程响应的事务处理模型避免了锁竞争的开销,提供了更为平滑的 P99 访问延时。


  • 轻量级用户接口,轻量级的用户接口访问技术降低了用户每次请求的SQL解析编译开销,结合事务处理模型让用户的读写请求都能够在数百us内处理完成并返回。


合格的内核技术只是满足了产品的 physiological needs,产品的 safety needs 需要提供相应的稳定性技术来满足。


TairSQL稳定性技术


稳定性技术涉及到产品的方方面面,不仅包括开发中针对稳定性的特性,还包括能够反映系统运行状态的周边组件。下面章节主要介绍监控、客户端、服务端流控三部分稳定性技术。

监控。众所周知,监控就是系统的眼睛,没有监控,也不太容易看到产品运行的细节问题。TairSQL 目前主要有两套监控,一套是用来监控集群可用性相关的指标,另外一套是 Grafana+Prometheus+TairSQL Exporter 的链路来提供秒级的 RT、QPS 数据展示。监控的完善程度直接决定是否能够发现系统上的一些细节性问题,比如 TairSQL 的秒级监控可以明确展示每个数据节点的 QPS,在热点访问没有触发流控就能被发现,从最终数据访问源数据库的视角热点无处遁形。

客户端。TairSQL 使用富客户端的方式,请求可以直接路由到需要访问到的节点上。客户端的资源消耗控制、和服务端的交互开销、建连断连在 10K+ 应用节点时对服务端的冲击、服务端拓扑变化时对客户端的及时反馈,这些都是客户端 SDK 上所做的实现考量和优化点。同时客户端和集团内生态 VipServer、鹰眼等产品进行了适配,屏蔽后端节点变化对应用的影响,支持影子表链路的访问和全链路访问的定位。

服务端流控。流控/背压是一个成熟的服务端产品必备的功能,TairSQL 目前线上的服务端流控统计部分根据工作队列占用的内存大小和长度两个纬度进行限制,根据极限压测时的状态作为默认值的参考,流控的触发阶段是相对宽松的,只有异常情况才会触发。恢复阶段是较为严格的,只有以较高的确信值认定节点已经恢复到正常情况之后,才会解除流控状态。


兄弟系统


云原生内存数据库 Tair 所做的创新离不开阿里云完善的基础设施的支持:


  • 数据库管控平台 DBaaS,快速实现阿里云数据库提供的安全审计、高可用、弹性伸缩、智能诊断等通用能力,以及 Tair 提供的数据闪回、全球分布等企业级能力。针对Tair持久内存型,DBaaS 结合阿里云容器服务 ACK,支持了持久内存资源和计算资源的亲和性调度以降低持久内存访问延迟,提供持久内存的 QoS 策略支持,保障服务的安全可控和产品的一致性体验。


  • 神龙裸金属服务器,提供的持久内存系列产品,为云原生内存数据库Tair提供了弹性服务的基础,针对突发流量进行针对性优化的网络技术让Tair应对高吞吐场景游刃有余,对内存等硬件风险的智能预测让 Tair 可以提前预见大促高峰期的风险级别进行规避。


  • Aliyun Linux,不仅对持久内存硬件进行了适配,还针对Tair独有的持久内存数据快照支持、实时快照延时降低等业务场景提供了针对性的优化。


总结


Tair 持久内存版在2021天猫全球购物节中的表现是云原生内存数据库 Tair在产品演进路线上的重要里程碑。Tair 将持续以内存/持久内存 为核心存储,重点建设云原生、混合存储介质上的数据智能分布、在线存储和实时计算处理一体化等核心能力,加强云原生内存数据库的产品能力,在同一套系统中提供多种工作负载,帮助客户的众多场景真正在线化。


相关实践学习
基于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
相关文章
|
15天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
28天前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
存储 缓存 安全
C语言中的内存管理与优化技巧
C语言中的内存管理与优化技巧
36 0
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】7、SQL 优化
【MySQL 数据库】7、SQL 优化
46 0
|
2月前
|
存储 监控 数据库
《优化数据库性能的六大技巧》
数据库作为后端开发中至关重要的一环,在实际应用中经常遇到性能瓶颈问题。本文将分享六大实用技巧,帮助开发者优化数据库性能,提升系统响应速度。
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
158 0
|
15天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
2天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。