淘宝万亿级海量交易订单存储在哪?
ann3311 2024-12-22 14:19 13 浏览 0 评论
01淘宝交易订单系统介绍
天猫和淘宝每天发生的实物和虚拟商品的交易达到亿级别。考虑到一次成功交易的整个链路,会涉及到会员信息验证,商品库信息查询,订单创建,库存扣减,优惠扣减,订单支付,物流信息更新,确认支付等。
链路中的每一环都涉及到数据库中记录的创建和状态的更新,一次成功的交易可能对应到后台信息系统上数百次数据库事务操作,支撑交易系统的整个数据库集群则会承担每日高达数百亿的事务读写。这除了给数据库系统带来巨大的性能挑战之外,每日递增的海量数据也带来巨大的存储成本压力。
交易订单作为其中最为关键的信息,由于可能涉及交易纠纷处理,需要随时提供用户查询,必须永久的记录在数据库中。淘宝成立至今近17年,所有与订单相关的数据库记录总量达到了万亿级别,其所占用的磁盘空间也早已超过PB级。
在一个这样大体量的数据集上,需要能够满足用户随时查询的低延时需求,同时需要达到极低的存储成本,在技术上是一个非常大的挑战。
用户的历史订单记录数据量巨大且不能丢失
02淘宝交易订单库的架构演进历史
淘宝从2003年成立至今近17年的时间,随着流量不断上涨,交易订单数据库的架构也经历过数次演进。
第一阶段,开始由于流量较小,使用了一套Oracle数据存储了所有的订单信息,新订单创建和历史订单查询都在同一套数据库进行。
第二阶段,由于历史订单量数据量越来越大,单一一套库已经不能满足同时满足性能和容量的问题,于是对交易订单库进行了拆分,单独建立了一个Oracle历史库,将三个月以前的订单迁移进历史库,同时由于数据量巨大,查询性能不能满足需求,因此当时的历史订单不提供查询功能。用户只能查询三个月之内的订单信息。
第三个阶段,为了解决扩展性和存储成本问题,交易历史库整体迁移到了HBase方案,这套方案在当时很好了解决了存储成本和业务查询需求这2个诉求。整体方案是使用主表结合索引表,查询订单详细信息通过主表完成,通过买家或者卖家ID查询订单,则需要借助索引表先得到订单号。
但这个方案遗留一个问题:订单并不是严格按照90天进行迁移的,有很多类型的订单并不迁移到历史库,导致已买到--订单列表的排序是乱序的,已买到的订单列表不是严格按照时间由近到远排序的,用户如果按照订单列表一页一页往下翻,会发现自己最近的订单”突然丢了”(实际上没有丢的,只是乱序了,再往后翻就有了)。
第四个阶段,历史库采用基于X-Engine引擎的PolarDB-X集群,在满足存储成本的同事,提供与在线库一样的索引能力,解决乱序问题。
03淘宝交易订单库的业务痛点
回顾淘宝交易库的演进历史,自拆分出独立的交易历史库之后,在持续十年时间里,业务团队和数据库团队一直在应对几个核心的挑战:
- 存储成本,每日写入量巨大且数据永不删除,必须要保证极低的成本。
- 节省存储成本的前提下,保证丰富的查询特性,例如按时间维度排序等。因此底层数据库需要支持二级索引,且二级索引需要保证一致性和性能。
- 保证较低的查询延时,不影响用户使用体验。虽然90天前的历史订单的查询量比90天内要少很多,但这依然是直接面对用户的,需要保证长尾延时在一定限度内。
在2018年,因为数据库存储的原因导致的订单排序错乱的问题,受到越来越多的投诉,给用户带来非常大的困扰,业务上决定根治这个问题。从前面的分析总结看,理想中的交易历史库方案需要同时满足三个条件: 低成本,低延时,特性丰富。使用和在线库一样的InnoDB引擎则满足不了存储成本的要求,而使用HBase则满足不了一致性二级索引等要求。
04基于X-Engine引擎的历史库方案
2018年,阿里自研的X-Engine引擎逐步在集团内部落地,其针对阿里巴巴交易业务的流水型特征设计了原生的冷热分离的架构,X-Engine引擎中的冷数据记录在数据页中紧凑排列并默认对所有数据块进行压缩,这套架构兼顾了性能和成本,很快在内部非常多的业务中落地,例如:X-Engine如何支撑钉钉数据量激增。
在考察交易历史库的方案时,一个思路是合并在线库和历史库,依赖X-Engine自身的冷热分离能力, 实现对90天内交易订单的高性能访问和90天以前交易订单记录的低成本存储。同时一套统一的交易订单库,可以提供诸如二级索引等功能,用户订单不能按时间排序的问题也随之解决,业务层的代码将非常简单。
但交易订单系统在在线库/历史库分离的架构下迭代了十年的时间,很多业务系统的代码对这套分离架构做了兼容,考虑到对业务代码改造以及迁移的风险,我们在初期继承了之前在线和历史分离的架构。只是将原有的HBase集群替换成了PolarDB-X集群(基于X-Engine引擎的版本):
- 在线库依然沿用之前的MySQL InnoDB集群,但是只保存90天的数据量,90天之前的订单会被删除,数据量少,可以保证较高的缓存命中率,确保读写延时。
- 通过数据同步将在线库中超过90天的订单迁移到历史库中,迁移之后该部分订单从在线库删除。
- 历史库切换为X-Engine,保存全量的交易订单数据,90之前的订单读写,直接操作历史库, 同时历史库承接在线库的所有迁移写入负载。
这套架构上线之后,交易历史库的存储成本相比较于使用HBase没有上升,同时由于历史库和在线库能力相同,可以创建完全一样的索引,历史订单恢复了对订单按时间排序功能的支持,同时其读取延时也得到了保证。
05数据库架构参考
在淘宝交易历史库的方案中,考虑到业务层面历史代码架构的延续性,采用了InnoDB引擎在线库和X-Engine历史库分离的方案。在这套架构中,X-Engine历史库其实同时承担了在线库迁移过来的写入以及90天以前记录的读写流量。
实际上,考虑到淘宝交易订单记录流水型的访问特征(最近写入的记录会被大量访问,随着时间推移,记录访问频次急剧衰减),X-Engine引擎内部的冷热分离机制就能很好的处理这种流水型业务,所以单一X-Engine数据库集群完全解决需求。
对于新开业务或者有大量流水型记录存储需求的现有业务且业务层面还未做冷热分离,我们建议直接使用一套X-Engine引擎,在存储成本降低的同时,DB层的访问代码会更简单。基于X-Engine引擎的PolarDB-X分布式数据库可以同时解决scale out问题和成本问题。
目前X-Engine引擎已经上线阿里云, 经过阿里内部业务验证,欢迎有成本和性能需求的用户购买使用。详情点击「阅读原文」
相关推荐
- 如何把已经造成的店铺违规影响降到最低?
-
很多卖家经常来说,我的店铺违规降权了,怎么删除啊?店铺违规降权是没办法消除的,我们能做的就是尽量把影响降到最低。如果是确实违规,那就想办法降低影响。如果是误判,那就积极进行申诉。貉塘月色论坛首先我们先...
- 淘宝用户名怎么改(怎么改淘宝用户名字)
-
淘宝用户名怎么改?以下为具体操作步骤:品牌型号:iphone13系统版本:ios16.6.1软件版本:淘宝10.27.40方法/步骤1/3分步阅读手机淘宝在我的淘宝页面点击右上角“设置”。...
- 电商成长路之淘宝新手开店基本功(新手淘宝开店入门基础教程)
-
随着近两年淘宝的飞速崛起,越来越多的人开起了淘宝店。问题来了,店是开起了,怎么天天等着,旺旺总是只有广告信息呢,顾客去哪儿了?相信大部分的新手朋友还是迫切希望改善的,今天利用闲暇时间一起交流一下,给大...
- 一文读懂!成人用品网店开店流程大起底,资质办理全攻略
-
现在网上购物越来越方便,成人用品也跟着火了起来!网上买东西隐私性强,不用尴尬,所以很多人都想在网上开家成人用品店。但到底怎么开?需要办啥手续?今天就手把手教你!...
- 淘宝主图优化神器!AI智能指令改图,电商卖家都在用!
-
传统修图流程繁琐、耗时且成本高昂,让许多中小卖家望而却步。“图生生”推出「AI修图-指令改图」功能,只需上传图片+简单指令,即可实现专业级图片优化!...
- 这是一节高标准的搜索扫盲课,有点长耐心看。
-
大家想必都知道淘宝的搜索类目逻辑主要有前台类目树和后台类目树组成,前台类目面向买家展现查找,后台类目便于商家发布商品信息存储管理,从技术的角度来看的话,前台类目就是在后台类目的基础上建立了一个虚拟类目...
- 怎么做网站seo优化-做网站优化还有效果吗
-
现在大家都很熟悉淘宝SEO优化了,大家也经常会对自己的淘宝店铺进行优化,但是你知道网站SEO该如何优化吗?下面小编就给大家介绍一下,希望对大家有所帮助。如何优化网上商店SEO1.首先,内容为王作为网...
- 网店要如何做好SEO优化,有哪些技巧?
-
网购在方便人们生活的同时也促进了就业,开设网店成为了许多创业者的首选。然而,随着大量人才涌入,网店之间的竞争也愈发激烈。所以,不少网店经营者开始对自家网店进行SEO优化,以此吸引顾客,增加销量。那么,...
- 淘宝店铺搜索流量始终起不来?做好这四点优化,快速打造出爆款!
-
流量碎片化越来越明显,但是搜索流量仍然是重中之重,很多商家都在抢这块流量,无奈又怎么都做不起来,是哪里出了问题呢?我们做产品不管是卖什么,都会存在竞争,如果你所做的类目都是搜索流量,但是你却没有,那店...
- 搜索效果差,试试这几个办法(搜索搜索的)
-
搜索质量差,找不到所需内容时,可以尝试以下几种方法:换搜索工具;优化关键词;使用搜索指令;多看一些结果。1、换搜索工具搜索效果差,那就换个搜索工具,看看其它搜索引擎的结果。...
- 网店出售0.5元“怒骂苏家三父子”,一周300多人来撒气
-
#苏明成出来挨打#、#苏大强又作妖#、#苏家三个男人都是自私自利#……自从电视剧《都挺好》热播以来,热搜天天都被剧中的苏家三父子“花式霸屏”,下面则是网友一水地怒骂。演员郭京飞继带头“打倒”自己的角色...
- 广东某公司抢注“安耐晒”商标 敲诈淘宝卖家
-
近日,有淘宝代购卖家发微博反映,自己家卖的日本资深堂“安耐晒”产品,被举报,申诉均失败,照成店铺商品被下架删除。微博发出后,引来其他卖家的关注,也都反映自己卖的“安耐晒”被投诉下架删除。事情真相原来是...
- 恶意给差评敲诈淘宝店主,这位“买家”三顾茅庐终被抓
-
网上购物时,网友都会查看商品评论区,有没有差评成为众多网友网络购物的重要购买标准,影响着商品销量。然而,电商卖家对商铺口碑、信誉的重视也使得一些不法分子有机可乘。最近,深圳警方破获了一起利用恶意差评敲...
- 新手操作闲鱼如何日入300-500元?第五课操作中有问题如何处理
-
大家好,我是兔毛,今天继续给大家分享闲鱼的课程,前面几课我已经教会了大家如何去操作闲鱼,接下来就是讲解一下操作中会遇到哪些问题,需要怎么去处理,还有解答一些朋友的题的问题。有很朋友私信问我,要多少钱?...
- 电商被举报“偷逃税”? 专家教你反敲诈
-
作者:侯珍珍...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 淘宝店铺优惠券怎么用 (36)
- 淘宝图片上传 (53)
- 购买天猫专卖店 (31)
- 淘宝搭配套餐怎么弄 (31)
- 淘宝试用什么意思 (39)
- 淘宝动态评分 (34)
- 淘宝保证金在哪里交 (32)
- 淘宝宝贝降权 (32)
- 淘宝恶意点击 (32)
- 淘宝查号 (31)
- 淘宝系统异常 (31)
- 天猫平台 (33)
- 淘宝信誉等级划分 (31)
- 天猫网店开店费用 (32)
- 淘宝假一赔三申请 (37)
- 淘宝会员打折 (35)
- 淘宝好评率 (32)
- 淘宝如何加入购物车 (33)
- 淘宝涨价 (35)
- 淘宝如何刷信誉 (32)
- 天猫直播入口 (34)
- 淘宝上架 (33)
- 淘宝帐号 (33)
- 淘宝不能发货 (33)
- 淘宝排名查询 (32)