天猫和淘宝每天交易实物和虚拟商品达到1亿元。考虑到成功交易的整个链接,将涉及会员信息验证、商品库信息查询、订单创建、库存扣除、优惠扣除、订单支付、物流信息更新、确认支付等。
链路中的每个链接都涉及到数据库中记录的创建和状态的更新。一个成功的交易可能对应于后台信息系统中数百个数据库的操作,支持交易系统的整个数据库集群每天将承担数百亿的事务读写。这不仅给数据库系统带来了巨大的性能挑战,而且每天增加的大量数据也给存储成本带来了巨大的压力。
交易订单作为最关键的信息之一,需要随时提供用户查询,必须永久记录在数据库中,因为它可能涉及到交易纠纷的处理。淘宝成立近17年来,所有与订单相关的数据库总记录都达到了万亿,磁盘空间已经超过PB级。
在如此大的数据集中,满足用户随时查询的低延迟需求,实现极低的存储成本是一个很大的技术挑战。
用户的历史订单记录数据量巨大,不能丢失
自2003年淘宝成立以来,近17年来,随着流量的不断上升,交易订单数据库的架构也经历了多次演变。
在第一阶段,由于流量小,使用了一套Oracle所有的订单信息都存储在数据中,新订单创建和历史订单查询都在同一个数据库中进行。
第二阶段,由于历史订单量的数据量越来越大,单套库不能同时满足性能和容量的问题,因此交易订单库被拆分并单独建立Oracle历史图书馆将三个月前的订单转移到历史图书馆。同时,由于数据量大,查询性能不能满足需求,历史订单不提供查询功能。用户只能在三个月内查询订单信息。
第三阶段,为了解决扩展性和存储成本问题,交易历史库整体迁移到HBase该方案很好地解决了当时存储成本和业务查询需求的两个要求。总体方案是通过买卖双方结合索引表,通过买卖双方完成查询订单的详细信息ID在索引表的帮助下,需要先查询订单号。
但这个计划留下了一个问题:订单没有严格按照90天迁移,有很多类型的订单没有迁移到历史图书馆,导致购买订单列表排名混乱,购买订单列表不严格按照时间从近到远,如果用户根据订单列表页面,会发现他们最近的订单突然丢失(实际上没有丢失,只是混乱,然后翻转)。
第四阶段以历史库为基础X-Engine引擎的PolarDB-X在满足存储成本的同事中,集群提供与在线库相同的索引能力,解决乱序问题。
回顾淘宝交易库的演变历史,自拆分独立交易历史库以来,业务团队和数据库团队一直在处理几个核心挑战:
2018年,由于数据库存储导致订单排名混乱,越来越多的投诉给用户带来了巨大的麻烦,业务决定解决这个问题。从前面的分析总结来看,理想的交易历史库计划需要同时满足三个条件: 低成本,低延迟,特点丰富。和在线库一样使用InnoDB引擎则满足不了存储成本的要求,而使用HBase一致性二级索引等要求不能满足。
2018年,阿里自主研究X-Engine发动机逐渐落地于集团内部,根据阿里巴巴交易业务的流水特性设计了原有的冷热分离架构,X-Engine发动机中的冷数据记录紧凑地排列在数据页面上,默认压缩所有数据块。该架构考虑了性能和成本,并很快在许多内部业务中实施,例如:X-Engine如何支撑钉数据激增?
在调查交易历史库的计划时,一个想法是合并在线库和历史库,依它X-Engine冷热分离能力, 实现90天内交易订单的高性能访问和90天前交易订单记录的低成本存储。同时,一套统一的交易订单库可以提供二级索引等功能,解决用户订单无法按时间排序的问题,业务代码将非常简单。
然而,交易订单系统已经线图书馆/历史图书馆分离架构下迭代了十年。许多业务系统的代码与这种分离架构兼容。考虑到业务代码转换和迁移的风险,我们在早期阶段继承了以前的在线和历史分离架构。只是原始的HBase集群被替换PolarDB-X集群(基于X-Engine引擎版本):
该架构上线后,与使用相比,交易历史库的存储成本HBase它没有上升。同时,由于历史图书馆和在线图书馆的能力相同,可以创建完全相同的索引。历史订单恢复了对订单按时间排序功能的支持,保证了读取延迟。
考虑到历史代码架构在淘宝交易历史库方案中的连续性,采用了InnoDB发动机在线库和X-Engine历史库分离方案。在这个架构中,X-Engine事实上,历史库还承担了90天前记录的在线图书馆迁移的写入和读写流量。
事实上,考虑到淘宝交易订单记录流量的访问特征(最近的记录将被大量访问,随着时间的推移,记录访问频率急剧下降),X-Engine引擎内部的冷热分离机制就能很好的处理这种流水型业务,所以单一X-Engine数据库集群完全解决了需求。
对于有大量流水记录存储需求的新业务或现有业务,业务层面没有冷热分离,我们建议直接使用一套X-Engine在降低存储成本的同时,发动机,DB基于层的访问代码会更简单。X-Engine引擎的PolarDB-X分布式数据库可以同时解决scale out问题和成本。
目前X-Engine阿里云已经推出了引擎, 经阿里内部业务验证,欢迎有成本和性能需求的用户购买和使用。点击详细信息「阅读原文」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至827202335@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.eztwang.com/n/wdyy/5571.html