数据COOL谈第3期

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文整理自阿里巴巴大淘宝技术部双12队长朱成(锡泽),阿里巴巴业务平台双11队长徐培德(裴度),阿里巴巴数据库双11队长陈锦赋(智盛),InfoQ主编王一鹏,在数据COOL谈第3期的分享。

数据COOL谈第3


摘要:本文整理自阿里巴巴大淘宝技术部双12队长朱成(锡泽),阿里巴巴业务平台双11队长徐培德(裴度),阿里巴巴数据库双11队长陈锦赋(智盛),InfoQ主编王一鹏,在数据COOL谈第3期的分享。


本篇内容主要分为四个部分:

1.在特殊的高并发场景下,云数据库的技术发展需求是什么?

2.是什么支持了峰值超过50万笔/秒交易的达成?

3.是什么支持了券后到手价实时显示?

4.是什么支持了双11当晚购物历史订单随时查看?

 

一、在特殊的高并发场景下,云数据库的技术发展需求是什么?


王一鹏:请大家讨论一下,在双十一,双十二特殊的高并发,高稳定性场景下,云数据库的技术发展以及业务创新的需求。双十一、双十二已经成为真正的购物狂欢节。从消费者的反馈,产品在这些年会有什么改进呢?


徐培德:以前用户更强调的“买买买”,现在用户更喜欢“逛逛逛”。用户希望能够更加清晰地知道商品的到手价,券后价是多少?第二,用户希望在同一个订单里,支持多个地址,一键全部下单时,可以享受更多的优惠达到最高的性价比。


王一鹏:消费者在业务场景下的反馈,如果转化成技术要求大概有哪些?


徐培德:第一,数据库团队做了很多优化。保证说在0点抢购的场景下,保证扣货,在数据库层面不会出现抢购失败。


第二,提前把预期的优惠到手价,在技术层面,通过复杂的计算过程把数据能够加载到我们的应用里,呈现在消费者面前。


王一鹏:双十一的购物平台有很多浏览需求,购买需求,技术压力主要体现在哪呢?


徐培德:0点那一刻,消费者购物车会有一个下单的爆发期。随着第一波下单完成,很快进入到第二轮的商品浏览。对于消费者来说,通常要逛几个商品才会下单。所以浏览商品的流量远比下单流量高。


在浏览的过程中,数据库要保证消费者在浏览时,各种卡券的叠加计算。在这个过程当中,要核销一定的资产,保证浏览其他商品时核销的卡券已经更新。


陈锦赋:数据库作为底层产品最重要的三个指标就是成本、效率、稳定性。早期,阿里更关注数据库的稳定性。随着技术迭代和发展,数据库的效率也显得更加重要。目前,阿里更加注重控制成本,同时保证数据库的稳定性和效率。

云底座提供了非常好的稳定性和性能。云数据库为阿里提供了稳定性高、性能强以、成本低的数据库产品矩阵。

 

二、是什么支持了峰值超过50万笔/秒交易的达成?


王一鹏:是什么支持了峰值超过50万笔/秒交易的达成?


朱成:秒杀是一个非常典型的电商场景。在淘宝,每时每刻都在发生秒杀活动。除了没有抢到的人略微失望之外,整体的操作流程,用户体验是非常顺畅的。


朱成:秒杀会吸引很多的用户,当海量用户瞬间涌入,会给系统造成脉冲式的冲击。阿里通过不断地迭代、优化,秒杀活动可以立刻将结果,反馈给用户,无需等待,系统非常稳定。


徐培德:阿里的健康礼包相对来说价值较高,很多用户在一瞬间抢购礼包。对于系统的冲击是比较大的。这是一个非常极端的抢购场景。抢购的峰值流量很大,整套业务技术、数据库有很大的压力。与此同时,库又比较深,持续时间长。导致整个应用链路长时间保持高水位的均匀性。


王一鹏:数据库底层对秒杀活动有哪些支持?


陈锦赋:减库存的动作可以看成是一条不限速的高速公路。每个货车代表了一个用户请求。热点监控意味着在单位时间内通过的车流量更大。在技术层面,ROS线程池能力既满足了高水位吞吐,又满足每次请求、批量进行库存更新,“黑科技”提升数据库运转效率,让热点能力有了非常大的提升,跟整个社区相比,秒杀减库存能力提升一百倍。


RDS线程池里,有一个优先级较高的线程池,一个优先级较低的线程池,线城池之间有相互隔离的功能。在用户抢购商品时,在优先线程之内,能够优先被服务,从而确保抢购稳定,快速的通过。


与此同时,线程池会识别性能有风险的请求,然后丢在慢线程池队列,做相应的服务。保障线上整体的高水位和稳定性。


徐培德:在阿里健康礼包的秒杀活动中,抢购持续了近一分钟。相当于数据库在饱和状态持续执行每个场景。平时的一个热点,往往发生在一个分片。在阿里健康礼包的秒杀活动中,128分片里同时出现两个商品,全部是热点,CPU运行已经在50%以上。


陈锦赋:阿里的线程池实现了隔离能力。热点是一个独立的线程池。如果在热点里,有多个商品,它就在多个线程,多个队列内。它们之间又相互隔离,确保持续稳定的的结果。


朱成:今年的大促,整体会更加关注用户体验。在计算量较大,稳定性风险较高的地方实施降级。通过基础链路的改造,数据库能力提升,实施降级。


徐培德:阿里数据库现在做了存储分离以及三节点写。在存储计算分离中,有一个数据库机头升降配的操作。在大促时,用一个高规格的存储机头,计算存储节点。在日常,数据库会有升降配的过程。核心数据库因为数据量的问题,做了水平切分。


一套核心的数据库有上百个分片支撑。只要数据库有响应,都能保证操作在主节点和从节点上是生效的。任何时刻,如果主节点当机或者切换到从节点,数据不会出现性能问题。


陈锦赋:三节点能力的核心是解决数据一致性的问题。在异步复制链路下,某场景出现数据不一致,主备数据不一致。当主库出现非预期内的行为,且无法恢复备库提供服务后,数据有损。


基于算法层面的一致性,结合到MySQL数据库,把算法和数据库结合。形成RDS三节点企业版能力。它能够实现,在任意场景下的数据强一致的核心诉求。当数据库出现异常后,它能保证数据没问题。


存算分离的核心本质,是数据库从有状态的应用或软件,变成无状态的情况。存储资源和计算资源它是一体的。计算规格升级,意味着数据重新拷贝、备份、恢复。


在面向交易,面向商品的大规模数据量下,拷贝的一次成本是非常高的。为了解决这个问题,阿里实现了不带数据迁移的升降配逻辑。


在本地盘的物理介质换成云盘介质时,为解决性能差异,阿里使用了神龙ESS用户态协议,公有云ESSD的存储类型,PolarDB文件系统。在三个用户态的情况下,减少内核层面,没有意义的开销。使数据库的很多操作能够直通硬件。

在提交订单的按钮背后,涉及到的数据库操作总和有五十多次。所有优化都在微秒级别。从用户的角度,阿里已经达到了合格线。在业务的角度,还会继续提供更高性能、更高稳定性、更低成本的数据库产品。


IDS数据库以及PolarDB数据库体系,都天然具备热点能力。用户今天可以直接买到,具备非常强悍的热点能力的数据库产品。


王一鹏:PolarDB有什么特性,适合类似秒杀的高并发的场景吗?


陈锦赋:PolarDB在云原生场景下,基于存储计算分离可以随意提升整体吞吐。它存储计算分离的特性,能够更好的支持更多商品、更多用户,更大的吞吐能力。

 

三、是什么支持了券后到手价实时显示?


王一鹏:是什么支持了券后到手价实时显示?


朱成:用户在浏览的过程中,希望查看到手价,券后价。它涉及到渠道货品,红包优惠规则,快递费用等问题。把计算放到浏览阶段要求系统必须解决计算复杂性的问题。


这背后牵涉到数据一致性问题,对数据库的计算力,数据库架构提出了非常苛刻的要求。


徐培德:券后价在大促时,作为一个攻坚项目,卷后价依赖两方面,算力和数据存储。在存储方面,经过调研之后,最终选择了一款TairSQL内存化的数据库产品。它可以用较低的硬件成本,提供较高的读写并发的能力。


保证在非常短的时间内,在异构的数据源之间进行数据同步,保证用户在用户体感上非常顺滑。


陈锦赋:数据库团队解决消费者的实际体感问题时,以业务场景作为整体输入。基于Tair,研发全新的TairSQL产品类型。它是一个缓存数据库。通过新硬件AEPTair的结合,实现超大内存存储,使它的存储空间量翻了十倍甚至上百倍。


目前,在公有云上所有人都可以通过企业版的形态,享受到和阿里巴巴完全一致的缓存类服务。

 

四、是什么支持了双11当晚购物历史订单随时查看?


王一鹏:是什么支持了双11当晚购物历史订单随时查看?


朱成:淘宝已经有18年的历史积攒了海量的订单,在海量订单上精准检索,智能联想难上加难。以前,在高峰期会对这个功能进行降级。用户只能查询三个月以内的订单。查询的过程中可能会遇到找不准,找不到等体验问题。


朱成:现在用户还可以随时随地查看自己的历史订单,在历史订单里进行检索,提升了查询满意度,准确度和用户体验。


徐培德:用户的订单检索,依赖的数据库的模糊匹配功能。通过单纯的数据库结构,很难提供这种体验。在用户体验的角度,希望给用户更强的搜索体验。所以,阿里选择了一种新的数据库产品,ADB在线分析的数据库。它支持全文检索,相关性排序等功能。


陈锦赋:对于团队来说ADB是一个全新挑战。整个内核团队花了整整一年的时间满足这个业务诉求。团队投入了非常多的能力,去解决这个问题。

业务的真实数据存在RDS内部,而ADB是一个数据仓库。团队实现了在线数据能够,实时到达数据仓库,完成秒级实时传输。


海量存储是数据仓库的强项,ADB作为在线数据仓库,将千亿级订单存在ADB上,并且支持实时分析、实时检索。


原来的存储类型,是以“列存”作为核心标准。今天有“行存”要求,“行存”业务需求,以及“列存”的存储模式。所以团队研发了新的存储类型,“行列混存”的能力。“行列混存”基于内存场景,以列存方式,实现检索。以行存结果,返回给业务。


订单搜索维度能够提供高效的查询场景。ADB3.0基于新的存储类型,实现毫秒级查询升,覆盖全字段。在这个基础上,ADB研发了最新的索引技术,支持全列的索引查询能力。


在这个技术下,实现了一个搜索框内的输入,它的匹配条件,能够落在每一列上。在订单搜索满意度上,和去年相比,整体的客诉量下降了86%左右。

今天,阿里仍在持续建设库仓一体,希望在线数据有实时搜索、实时实时分析的能力。面向消费者,提供一体化的服务能力。


数据实时化之后需要发掘更多的商业价值,数据库产品也往实时数据分析的方向发展,这也是云原生数据仓库ADB3.0的价值。希望能够实现数据的在线化、实时化,挖掘其背后的商业价值。

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
C# C++
Cool说丨717与674
717. 1比特与2比特字符 674. 最长连续递增序列
43 0
|
C# C++
Cool说丨819
819. 最常见的单词
57 0
|
自然语言处理 C# C++
Cool说丨970与720
970. 强整数 720. 词典中最长的单词
66 0
|
人工智能 BI C#
Cool说丨884与1207
[884. 两句话中的不常见单词](https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/) [1207. 独一无二的出现次数](https://leetcode-cn.com/problems/unique-number-of-occurrences/)
56 0
|
存储 C# C++
Cool说丨力扣8
[8. 字符串转换整数 (atoi)](https://leetcode-cn.com/problems/string-to-integer-atoi/)
60 0
|
C# C++
Cool说丨力扣665
665. 非递减数列
41 0
|
C# C++
Cool说丨力扣451
[451. 根据字符出现频率排序]
65 0
|
人工智能 BI C#
Cool说丨力扣697与888
697. 数组的度 888. 公平的糖果交换
53 0
|
C# C++ 索引
Cool说丨力扣849与747
849. 到最近的人的最大距离 747. 至少是其他数字两倍的最大数
55 0
|
人工智能 BI C#
Cool说丨力扣67与859
67. 二进制求和 859. 亲密字符串
56 0