基于Tablestore 实现大规模订单系统海量订单/日志数据分类存储的实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 前言:从最早的互联网高速发展、到移动互联网的爆发式增长,再到今天的产业互联网、物联网的快速崛起,各种各样新应用、新系统产生了众多订单类型的需求,比如电商购物订单、银行流水、运营商话费账单、外卖订单、设备信息等,产生的数据种类和数据量越来越多;其中订单系统就是一个非常广泛、通用的系统。而随着数据规模的快速增长、大数据技术的发展、运营水平的不断提高,包括数据消费的能力要求越来越高,这对支撑订单系统的数据库设计、存储系统也提出了更多的要求。在新的需求下,传统的经典架构面临着诸多挑战,需要进一步思考架构优化,以更好支撑业务发展;

一、背景

1、场景

A公司主营业务为跨境电商出口和跨境仓储物流,其基本桥接了全部的海外第三方电商购物平台,包括亚马逊、eBay、速卖通等;

在业务运营过程中,A公司定期投放广告listing至各大购物平台,以更新产品的价格、物流费用、标题、评价、介绍,QA问答等等。每次更新均会生产日志记录相关变化,该数据需要长期保存并在后续进入DLA做运营分析;因此在目前A公司订单管理系统中,需要长期存储大量订单数据及日志数据;

2、早期解决方案及存在的问题

最早用户采用传统MySQL数据库作为订单系统中订单数据及日志数据的存储方案;该方案在早期数据规模不大时,因其灵活、开源的特点,且具备SQL查询、事务能力,是一个经典的入门方案选择;但随着业务的发展,订单量及相关日志数据的快速增长,这种集中式数据库架构在海量数据规模存储读写时,出现了严重的性能不足及容量扩展困难的问题;当前客户每月产生约6亿条日志数据,目前总数据记录条数在80亿条左右;在这种增长速度及数据量下,客户需要经常采用包括主从分离、提高数据库实例配置、分库分表的方式来缓解数据库读写压力,但这种做法无法从根源上解决问题,中间还是涉及到大量繁琐的数据迁移/上层业务应用逻辑修改的工作,带来非常大的运维工作量。传统的集中式关系型数据库很难承载如此海量的数据,需要一种具备能存储海量数据、高扩展能力、高性能、具备查询能力的新型数据库系统来支撑。

MySQL 单库、主从架构图:

image.png

二、基于Tablestore分层存储的解决方案

1、什么是表格存储(Tablestore

表格存储(Tablestore)是阿里云自研的面向海量结构化数据存储的Serverless 分布式数据库,提供海量结构化数据存储以及快速的查询和分析服务。为时序监控轨迹、历史订单数据、日志信息、元数据等海量数据提供存储、访问、同步、检索、计算等能力。

image.png

2、组合方案架构、优势

image.png

 

如上图,实时订单系统中,订单数据存入MySQL,日志数据存入Tablestore。实时订单数据由于强事务性,写入关系型数据MySQL;日志数据的写入不要求强事务性,更多要求的是海量数据存储、扩展型、丰富查询特性,通过Tablestore可容纳海量的日志数据存储,单实例可支撑10PB的数据,单表可支持1PB级别的数据,万亿条记录;这种产品组合方案,既解决了订单数据要求的多表联合查询、事务特性,又解决了海量数据存储扩展、性能差的问题;此外,Tablestore支持消费通道,通过为数据表建立数据通道,您可以简单地实现对表中历史存量和新增数据的消费处理。如将Tablestore中表数据投递归档至OSS中做备份保存。由于该用户日志数据后期需要消费,被DLA访问查询,用以运营分析;

通道服务模式图:

图片 4.png

OLAP查询架构:Tablestore中接入Data Lake Analytics(简称 DLA)服务的方式,为您提供一种快速的OLAPOn-Line Analytical Processing)解决方案,可通过DLA访问表格存储中的数据。

图片 5.png

Tablestore优势能力总结:

l  存储能力无限扩展

Tablestore可以无限水平扩展,因此该架构方案的存储能力和容量都不是问题。表格存储通过数据分片和负载均衡技术,实现了存储无缝扩展。随着表数据量的不断增大,表格存储会进行数据分区的调整从而为该表配置更多的存储。表格存储可支持不少于10 PB数据存储量,单表可支持不少于1 PB数据存储量或1万亿条记录。

l  高并发及查询能力强

表格存储支持千万级并发读写能力;除了支持主键查询,表格存储还支持二级索引、多元索引。兼容MySQL的查询语法,同时提供基础的SQL DDL建表能力。对于已有数据表,通过执行CREATE TABLE一键自动建立映射关系后,您可以使用SQL方式访问表中数据。因为订单查询场景丰富,不同的查询场景需要不同类型的索引。Tablestore 提供多元化的索引来满足不同类型场景下的数据查询需求,其多元索引基于倒排索引和列式存储,可以应对大规模数据和复杂查询场景下的各项查询难题。

l  全托管

表格存储是一种全托管的结构化数据存储。使用表格存储您只需专注于业务研发,无需担心软硬件预置、配置、故障、集群扩展、安全等问题,在保证高服务可用性的同时,极大地减少了管理及运维成本。

l  计算生态

Tablestore 拥有丰富的计算生态,积极的拥抱开源,除了比较好的支持阿里云自研计算引擎如MaxCompute 和 DataLakeAnalytics的计算对接,也能支持 Flink 和 Spark 等主流计算引擎的计算需求,无需数据搬迁。

3、实现过程

本次用户通过DataX工具完成MySQL数据库中存量日志数据同步至OTS的工作;阿里云提供了便捷的迁移工具实现数据同步;如使用DataWorks/DataX、表格存储的通道服务等迁移工具,可以在不影响业务的情况下实现表格存储数据的全量迁移、增量迁移和实时同步。您不仅可以将数据库迁移同步到表格存储,也可以实现表格存储数据表中数据的跨实例或者跨账号的迁移同步。可参考以下链接根据不同场景进行不同工具选择。https://help.aliyun.com/document_detail/124392.html

4Tablestore进一步应用设想

当前Tablestore可以很好地支持日志数据的存储和查询要求,下一步可将关系型数据库中历史订单数据迁移OTS,这种方案将实时数据和历史数据分层存储,减少关系型数据库存储和性能压力,通过Tablestore提供海量历史订单数据存储以及快速的查询和分析服务。

 

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
44 1
|
3月前
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
65 1
|
28天前
|
Rust 前端开发 JavaScript
Tauri 开发实践 — Tauri 日志记录功能开发
本文介绍了如何为 Tauri 应用配置日志记录。Tauri 是一个利用 Web 技术构建桌面应用的框架。文章详细说明了如何在 Rust 和 JavaScript 代码中设置和集成日志记录,并控制日志输出。通过添加 `log` crate 和 Tauri 日志插件,可以轻松实现多平台日志记录,包括控制台输出、Webview 控制台和日志文件。文章还展示了如何调整日志级别以优化输出内容。配置完成后,日志记录功能将显著提升开发体验和程序稳定性。
60 1
Tauri 开发实践 — Tauri 日志记录功能开发
|
3月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
66 0
|
3天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
8 2
|
14天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
39 1
|
22天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
37 3
|
27天前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
32 4
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
43 2
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
52 0