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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 作为双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
相关文章
|
17天前
|
存储 算法 Java
Java内存管理深度剖析与优化策略####
本文深入探讨了Java虚拟机(JVM)的内存管理机制,重点分析了堆内存的分配策略、垃圾回收算法以及如何通过调优提升应用性能。通过案例驱动的方式,揭示了常见内存泄漏的根源与解决策略,旨在为开发者提供实用的内存管理技巧,确保应用程序既高效又稳定地运行。 ####
|
18天前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
108 62
|
14天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
59 31
|
11天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
41 7
|
11天前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
40 5
|
12天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
37 1
|
13天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
13天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
15天前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
27天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####