数据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产品类型。它是一个缓存数据库。通过新硬件AEP和Tair的结合,实现超大内存存储,使它的存储空间量翻了十倍甚至上百倍。
目前,在公有云上所有人都可以通过企业版的形态,享受到和阿里巴巴完全一致的缓存类服务。
四、是什么支持了双11当晚购物历史订单随时查看?
王一鹏:是什么支持了双11当晚购物历史订单随时查看?
朱成:淘宝已经有18年的历史积攒了海量的订单,在海量订单上精准检索,智能联想难上加难。以前,在高峰期会对这个功能进行降级。用户只能查询三个月以内的订单。查询的过程中可能会遇到找不准,找不到等体验问题。
朱成:现在用户还可以随时随地查看自己的历史订单,在历史订单里进行检索,提升了查询满意度,准确度和用户体验。
徐培德:用户的订单检索,依赖的数据库的模糊匹配功能。通过单纯的数据库结构,很难提供这种体验。在用户体验的角度,希望给用户更强的搜索体验。所以,阿里选择了一种新的数据库产品,ADB在线分析的数据库。它支持全文检索,相关性排序等功能。
陈锦赋:对于团队来说ADB是一个全新挑战。整个内核团队花了整整一年的时间满足这个业务诉求。团队投入了非常多的能力,去解决这个问题。
业务的真实数据存在RDS内部,而ADB是一个数据仓库。团队实现了在线数据能够,实时到达数据仓库,完成秒级实时传输。
海量存储是数据仓库的强项,ADB作为在线数据仓库,将千亿级订单存在ADB上,并且支持实时分析、实时检索。
原来的存储类型,是以“列存”作为核心标准。今天有“行存”要求,“行存”业务需求,以及“列存”的存储模式。所以团队研发了新的存储类型,“行列混存”的能力。“行列混存”基于内存场景,以列存方式,实现检索。以行存结果,返回给业务。
订单搜索维度能够提供高效的查询场景。ADB3.0基于新的存储类型,实现毫秒级查询升,覆盖全字段。在这个基础上,ADB研发了最新的索引技术,支持全列的索引查询能力。
在这个技术下,实现了一个搜索框内的输入,它的匹配条件,能够落在每一列上。在订单搜索满意度上,和去年相比,整体的客诉量下降了86%左右。
今天,阿里仍在持续建设库仓一体,希望在线数据有实时搜索、实时实时分析的能力。面向消费者,提供一体化的服务能力。
数据实时化之后需要发掘更多的商业价值,数据库产品也往实时数据分析的方向发展,这也是云原生数据仓库ADB3.0的价值。希望能够实现数据的在线化、实时化,挖掘其背后的商业价值。