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引擎已经上线阿里云 , 经过阿里内部业务验证 , 欢迎有成本和性能需求的用户购买使用 。
秒懂生活扩展阅读
- 手把手教你找到靠谱的货源 淘宝供销平台在哪里找
- 淘宝店铺取名技巧分享 店铺名字怎么取比较好
- 淘宝跟拼多多那个容易赚钱 新手适合做淘宝还是拼多多?
- 淘宝未来还能做吗?淘宝还能做多久?
- 淘宝运营怎么赚钱?有前景吗?
- 教你5分钟如何认证身份信息 淘宝认证操作流程
- 免费教你分辨真假店铺的方法 淘宝网正品商城首页
- 苹果教育优惠详细使用步骤 苹果官网教育优惠购买流程
- 淘宝直通车推广技巧分享 淘宝直通车软件哪个好用
- 教你识别原单的方法 淘宝原单是什么意思