简介:作为双11大促承载流量洪峰的利器,Tair支撑了电商交易核心体验场景。不仅在数十亿QPS的峰值下保持着亚毫秒级别的顺滑延迟,同时在电商交易核心体验场景上也做出了技术创新。

作者 | 漠冰

来源 | 阿里技术公众号

作为双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, 降低大内存节点的功耗,并在断电时保护数据。

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

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

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

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

1 TairCPC

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

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

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

2 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 将持续以内存/持久内存 为核心存储,重点建设云原生、混合存储介质上的数据智能分布、在线存储和实时计算处理一体化等核心能力,加强云原生内存数据库的产品能力,在同一套系统中提供多种工作负载,帮助客户的众多场景真正在线化。

原文链接

本文为阿里云原创内容,未经允许不得转载。

为余势负天工背,云原生内存数据库Tair助力用户体验优化的更多相关文章

  1. HiEngine:可媲美本地的云原生内存数据库引擎

    摘要:HiEngine与华为GaussDB (for MySQL)集成,将内存数据库引擎的优势带到云端,并与基于磁盘的引擎共存.HiEngine的性能比传统的以存储为中心的解决方案高出7.5倍. 本文 ...

  2. 直播报名|资深云原生架构师分享服务网格在腾讯 IT 业务的落地实践

    云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革. 腾讯云主办首个云原生百科知识直播节目--<云原生正发声&g ...

  3. 分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

    摘要:北京时间2023年2月9日,Kurator 正式发布 v0.2.0 版本. 本文分享自华为云社区<分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台>,作 ...

  4. 【云享专刊】开源遇上华为云,OCP架构变身“云原生框架”

    摘要:华为云DTSE团队出品云原生改造指南,助力轻松实践OCP上云. 本文分享自华为云社区<[云享专刊]开源遇上华为云,OCP架构变身"云原生框架">,作者:华为云社区 ...

  5. PWA-让前端网页媲美原生APP的用户体验

    一.背景 从2018年到现在,作为号称下一代web应用模型的PWA,逐渐成为了一个各大前端厂商争先恐后进行涉足,布局的一个新的技术, 其主要的对标物Native app,作为现在最主流的mobile端 ...

  6. 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施

    作者 | 黄玉奇(徙远)  阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词 1219 即可下载本文 PPT 及实操演示视频. 导读:伴随 5G.IoT 的发展,边缘 ...

  7. 直击KubeCon 2018 |云原生正在改变你的衣食住行

    云计算从不被看好到成长为势不可挡的技术潮流,仅仅用了十年的时间.如今“云原生”又被企业以及开发者奉为圭臬,并被认为是云计算的未来. 阿里云容器技术负责人易立认为云计算有三个阶段:云搬迁.云就绪和云原生 ...

  8. 云原生生态周报 Vol. 6 | KubeCon EU 特刊

    5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...

  9. Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

    作者简介 张海立(驭势科技云平台研发总监):开源爱好者,云原生社区上海站 PMC 成员,KubeSphere Ambassador:日常云原生领域工作涉及 Kubernetes.DevOps.可观察性 ...

  10. 腾讯云联合中国信通院&作业帮等首发《降本之源-云原生成本管理白皮书》

    在11月4日举办的2021腾讯数字生态大会云原生专场上,腾讯云联合中国信通院.作业帮等率先在国内重磅发布了<降本之源-云原生成本管理白皮书>(简称白皮书),基于腾讯云在业内最大规模的 Ku ...

随机推荐

  1. display标签简介

    下面是网友总结的display标签的优缺点: 1. 分页 如果想对代码分页,只需在display:table标签中添加一项pagesize="每页显示行数" 2. 对列排序 dis ...

  2. AOSP源码编译—交换空间扩容

    编译AOSP源码的时候会出现提示如下: 意思是需要16G左右的内存(实际上编译会超过16G),而我们之前安装Ubuntu的时候只分配了8G,编 译一定会失败!此时需要添加虚拟内存(swap交换空间) ...

  3. [TM4] TM4C123G Keil5 新建工程指南

    [TM4] TM4C123G Keil5 新建工程指南 keil新建工程,选择TM4C123GH6PM芯片,然后在CMSIS勾选CORE,DEVICE勾选Startup(如图),来到新工程界面 在So ...

  4. 《.NET内存管理宝典》 售后服务系列文(2) - WinDbg命令.cmdtree

    此文是<.NET内存管理宝典   提高代码质量.性能和可扩展性>(英文名<Pro .NET Memory Management: For Better Code, Performan ...

  5. KingbaseES Json 系列十:Json数组构造函数

    KingbaseES Json 系列十--Json数组构造函数(ARRAY_TO_JSON,JSONB_BUILD_ARRAY,JSON_ARRAY,JSON_BUILD_ARRAY) JSON 数据 ...

  6. #树形dp,二分#UVA1407 Caves 洛谷 3698 [CQOI2017]小Q的棋盘

    题目 给定一棵树,现在需要找到一条由节点1出发长度为\(x\)的路径, 问最多经过的节点数,重复经过只计算一次(不一定是简单路径) UVA的那道题多组数据多组询问,边权还不一定是1,\(n\leq 5 ...

  7. vue3中的样式为什么加上scoped不生效

    <style>标签添加scoped属性时,Vue会自动为该组件内的所有元素添加一个独特的数据属性,例如data-v-f3f3eg9.同时,它也会修改你的CSS选择器,使得它们只匹配带有这个 ...

  8. 关于pwn题的栈平衡中ret的作用

    以nssctf里的where_is_my_shell为例 题目提供了一个system函数,和一个buf数组.数组的栈空间如图所示,这里不讨论怎么解题,只说明payload里的ret的作用. 假设没有r ...

  9. Android与STM32通信中巧妙解决中文乱码问题

    前言 网上一大堆都是要多种格式相互转换,并且要很大的字库文件,对于小应用工程,小容量的STM32芯片,额外多出这些开销会感到蛮不舒服的,而且绝大部分的乱码问题时发生在STM32这边,所以本文是从And ...

  10. HarmonyOS实现表单页面的输入,必填校验和提交

    一. 样例介绍 本篇Codelab基于input组件.label组件和dialog组件,实现表单页面的输入.必填校验和提交: 1.  为input组件设置不同类型(如:text,email,date等 ...