“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine

2023-12-25 18:28

本文主要是介绍“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小 T 导读:

为了有效处理每日亿级的数据量,早在 2021 年,韵达就选择用 TDengine 替代了 MySQL,并在三台服务器上成功部署和上线了 TDengine 2.0 集群。如今,随着 TDengine 3.0 版本的逐渐成熟,韵达决定将现有的 2.0 版本升级到 3.0 版本,并基于本文为大家分享其在升级过程中所进行的优化措施以及升级后的性能表现。

作为一家头部物流公司,韵达每日的订单扫描量破亿级别,该类数据为典型的时序数据,这也是我们公司数据量最大的一块业务。系统需要汇总统计全国网点的扫描数据(韵达的所有订单数据),并实时反馈给用户。此外,这些数据也会给到网点、分拨中心的内部员工使用,用于个人工作量、站点扫描量等统计工作。在“双十一、二”期间,面对快递业务量的暴涨,TDengine 帮助我们很好地完成了既定规划,保障了“双十一、二”任务的顺利完成。

本文用于分享我司在 TDengine 上使用的历程和心得。

从 2.0 到 3.0

在早些年业务尚未扩张时,我们采用的是 MySQL 分区+索引方式进行扫描枪数据的处理,但随着企业的发展、业务量的增加,面对每日亿级的数据量,MySQL 显然已经无法满足当下的数据处理需求。

在这种背景下,我们决定进行时序数据库(Time Series Database)选型。经过严格的选项测试,我们最终选择了 TDengine 作为核心数据库处理该部分数据。在 2021 年,我们在三台 16C 64G 的服务器上部署上线了 TDengine 2.0 版本集群。(“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量 - TDengine | 涛思数据)

该集群每天要承载日常 6 亿行数据的写入和一定量的查询,“双十一、二”等特殊业务期间,写入/查询量还要上涨 50% 左右,数据需要保留 2 个月。

我们的架构是 Spring Boot + MyBatis + MySQL + TDengine,TDengine 负责处理时序数据,MySQL 则负责非时序数据的存储及应用,如下:

“双十一、双十二” 业务高峰如何扛住?韵达选择 TDengine - TDengine Database 时序数据库

使用 2.0 的这两年数据库是很稳定的,但考虑到后期业务需求会用到 3.0 的新特性,所以我们自打 TDengine 3.0 发布之后,就一直在着手准备数据库的迁移工作。

数据迁移经验分享

数据库迁移是一项很重大的工作,在此期间,我们仔细梳理了 2.0 版本使用期间的一些使用情况,尝试做出针对性的优化。

在 2.0 时期,我们是根据“一个扫描枪一张表”的模型建表,把设备的地点和站点类型设置为标签。来到 3.0 时期后,我们和官方团队反复调试,选择了“一个站点一张表”的建模方式。这样一来,表数量从百万级直接缩减到了万级。

做这个改动的核心原因有两个:

  1. 我们有很多临时的虚拟扫描枪,由于只是临时使用,所以没有几条数据,但却单独占据了一个表。
  2. 虽然扫描枪写入频率较低,但是整个站点有很多扫描枪,这样的建模方式使得低频写入转化为了高频写入,降低了存储中碎片数据的比例。

2.x 超级表结构:

“双十一、双十二” 业务高峰如何扛住?韵达选择 TDengine - TDengine Database 时序数据库

优化过后,3.x 超级表的结构:

“双十一、双十二” 业务高峰如何扛住?韵达选择 TDengine - TDengine Database 时序数据库

除此之外,3.0 由于底层有很多的重构,因此和 2.0 相比出现了很多的参数改动,可以参考:配置参数 | TDengine 文档 | 涛思数据,数据库 | TDengine 文档 | 涛思数据。优化思路可以参考这篇文章中的内容:万字解读|怎样激活 TDengine 最高性价比? - TDengine | 涛思数据。

尤其是 3.0 关于数据入库频率、数据乱序、更新、建表等处理逻辑的变化,均需要投入一定量的学习测试时间。尤其是在数据量极大的情况下,每一次测试环境的搭建都需要较大的时间人力成本。我们在 TDengine 官方团队的协助下,断断续续大概用了 2 个月的时间才完成这个阶段。

优化效果显著

最终优化过后,我们的查询速度得到了进一步提升。尤其是下面这类查询优化效果十分明显,该查询的逻辑是:从 6 亿行的当天数据中,通过标签、普通列做出多次筛选,最终返回分页后的十条结果。其中,最为耗时的便是从标签过滤之后的 1.5 亿条数据的普通列筛选。

在 2.6 版本中,这个过程需要大约 10 秒的时间,升级到 3.x 之后,只需要 2-3 秒左右便会返回结果:

select waybill_barcode,location,scanning_person,equipment_code,scan_category,remark,weight_info weight,scan_time,volume,lower_location,lrfs from base.scan_data WHERE ts >= #{beginTime} and ts <= #{endTime} and site_type=#{siteType} and equipment_code = #{equipmentCode} limit 0,10;

“双十一、双十二” 业务高峰如何扛住?韵达选择 TDengine - TDengine Database 时序数据库

至此,我们从 TDengine 2.0 迁移到 3.0 版本的工作就圆满完成了。

写在最后

对于我们这种集快递、物流、电子商务配送和仓储服务为一体的快递企业,扫描枪设备产生的数据是相当庞大的,而 TDengine 可以轻松高效地处理和存储这些时序数据,它所具备的快速写入和查询的能力,使得我们的系统可以轻松应对高负载和大规模数据的需求。

落实到业务使用方面,通过实时了解包裹状态、配送进度等信息,我们能够更加方便地做出实时决策,物流运营的效率和效果也获得了大幅提高。

文章最后,祝 TDengine 越来越好,早日成为时序数据库领域的 NO.1。


了解更多 TDengine Database的具体细节,可在GitHub上查看相关源代码。

这篇关于“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536485

相关文章

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

什么是 TDengine?

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。 1.高性能         充分利用时序大数据的特点,TDengine 设计了新颖的存

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一