从最早的互联网高速发展、到移动互联网的爆发式增长,再到今天的产业互联网、物联网的快速崛起,各种各样新应用、新系统产生了众多订单类型的需求,比如电商购物订单、银行流水、运营商话费账单、外卖订单、设备信息等,产生的数据种类和数据量越来越多;其中订单系统就是一个非常广泛、通用的系统。而随着数据规模的快速增长、大数据技术的发展、运营水平的不断提高,包括数据消费的能力要求越来越高,这对支撑订单系统的数据库设计、存储系统也提出了更多的要求。在新的需求下,传统的经典架构面临着诸多挑战,需要进一步思考架构优化,以更好支撑业务发展。
一、背景
1、场景
A公司主营业务为跨境电商出口和跨境仓储物流,其基本桥接了全部的海外第三方电商购物平台,包括亚马逊、eBay、速卖通等。
在业务运营过程中,A公司定期投放广告listing至各大购物平台,以更新产品的价格、物流费用、标题、评价、介绍,QA问答等等。每次更新均会生产日志记录相关变化,该数据需要长期保存并在后续进入DLA做运营分析;因此在目前A公司订单管理系统中,需要长期存储大量订单数据及日志数据。
2、早期解决方案及存在的问题
最早用户采用传统MySQL数据库作为订单系统中订单数据及日志数据的存储方案;该方案在早期数据规模不大时,因其灵活、开源的特点,且具备SQL查询、事务能力,是一个经典的入门方案选择;但随着业务的发展,订单量及相关日志数据的快速增长,这种集中式数据库架构在海量数据规模存储读写时,出现了严重的性能不足及容量扩展困难的问题;当前客户每月产生约6亿条日志数据,目前总数据记录条数在80亿条左右;在这种增长速度及数据量下,客户需要经常采用包括主从分离、提高数据库实例配置、分库分表的方式来缓解数据库读写压力,但这种做法无法从根源上解决问题,中间还是涉及到大量繁琐的数据迁移/上层业务应用逻辑修改的工作,带来非常大的运维工作量。传统的集中式关系型数据库很难承载如此海量的数据,需要一种具备能存储海量数据、高扩展能力、高性能、具备查询能力的新型数据库系统来支撑。
MySQL 单库、主从架构图:
二、基于MySQL+Tablestore分层存储的解决方案
1、什么是表格存储(Tablestore)
表格存储(Tablestore)是阿里云自研的面向海量结构化数据存储的Serverless分布式数据库,提供海量结构化数据存储以及快速的查询和分析服务。为时序监控轨迹、历史订单数据、日志信息、元数据等海量数据提供存储、访问、同步、检索、计算等能力。
2、组合方案架构及优势
如上图,实时订单系统中,订单数据存入MySQL,日志数据存入Tablestore。实时订单数据由于强事务性,写入关系型数据MySQL;日志数据的写入不要求强事务性,更多要求的是海量数据存储、扩展型、丰富查询特性,通过Tablestore可容纳海量的日志数据存储,单实例可支撑10PB的数据,单表可支持1PB级别的数据,万亿条记录;这种产品组合方案,既解决了订单数据要求的多表联合查询、事务特性,又解决了海量数据存储扩展、性能差的问题;此外,Tablestore支持消费通道,通过为数据表建立数据通道,您可以简单地实现对表中历史存量和新增数据的消费处理。如将Tablestore中表数据投递归档至OSS中做备份保存。由于该用户日志数据后期需要消费,被DLA访问查询,用以运营分析。
通道服务模式图:
OLAP查询架构:Tablestore中接入Data Lake Analytics(简称 DLA)服务的方式,为您提供一种快速的OLAP(On-Line Analytical Processing)解决方案,可通过DLA访问表格存储中的数据。
Tablestore优势能力总结:
存储能力无限扩展
Tablestore可以无限水平扩展,因此该架构方案的存储能力和容量都不是问题。表格存储通过数据分片和负载均衡技术,实现了存储无缝扩展。随着表数据量的不断增大,表格存储会进行数据分区的调整从而为该表配置更多的存储。表格存储可支持不少于10 PB数据存储量,单表可支持不少于1 PB数据存储量或1万亿条记录。
高并发及查询能力强
表格存储支持高并发读写能力;除了支持主键查询,表格存储还支持二级索引、多元索引。兼容MySQL的查询语法,同时提供基础的SQL DDL建表能力。对于已有数据表,通过执行CREATE TABLE一键自动建立映射关系后,您可以使用SQL方式访问表中数据。因为订单查询场景丰富,不同的查询场景需要不同类型的索引。Tablestore 提供多元化的索引来满足不同类型场景下的数据查询需求,其多元索引基于倒排索引和列式存储,可以应对大规模数据和复杂查询场景下的各项查询难题。
全托管
表格存储是一种全托管的结构化数据存储。使用表格存储您只需专注于业务研发,无需担心软硬件预置、配置、故障、集群扩展、安全等问题,在保证高服务可用性的同时,极大地减少了管理及运维成本。
计算生态
Tablestore 拥有丰富的计算生态,积极的拥抱开源,除了比较好的支持阿里云自研计算引擎如MaxCompute 和 DataLakeAnalytics的计算对接,也能支持 Flink 和 Spark 等主流计算引擎的计算需求,无需数据搬迁。
3、实现过程
本次用户通过DataX工具完成MySQL数据库中存量日志数据同步至OTS的工作;阿里云提供了便捷的迁移工具实现数据同步;如使用DataWorks/DataX、表格存储的通道服务等迁移工具,可以在不影响业务的情况下实现表格存储数据的全量迁移、增量迁移和实时同步。您不仅可以将数据库迁移同步到表格存储,也可以实现表格存储数据表中数据的跨实例或者跨账号的迁移同步。可参考以下链接根据不同场景进行不同工具选择:
a、通过迁移工具完成存量数据迁移至Tablestore。
b、数据验证,确保数据准确完整。
c、应用API改造调整,日志数据直接写入Tablestore。
4、Tablestore进一步应用设想
当前Tablestore可以很好地支持日志数据的存储和查询要求,下一步可将关系型数据库中历史订单数据迁移OTS,这种方案将实时数据和历史数据分层存储,减少关系型数据库存储和性能压力,通过Tablestore提供海量历史订单数据存储以及快速的查询和分析服务。同时,该用户近期也使用了Tablestore的宽行模型存储轨迹时序数据(此类数据原本也存储于关系型数据库中,由于数据条数较多,也面临查询性能差问题),完成Tablestore在该客户的进一步应用。