写点什么

服务器数量从 21 台降至 3 台,TDengine 在跨越速运集团的落地实践

  • 2022-01-05
  • 本文字数:2374 字

    阅读完需:约 8 分钟

服务器数量从21台降至3台,TDengine在跨越速运集团的落地实践

跨越速运集团有限公司创建于 2007 年。拥有“国家 AAAAA 级物流企业”、“国家级高新技术企业”、“中国物流行业 30 强优秀品牌”、“中国电商物流行业知名品牌”、“广东省诚信物流企业”等荣誉称号。在胡润研究院发布的《2018 Q3 胡润大中华区独角兽指数》《2019 一季度胡润大中华区独角兽指数》榜单中,跨越速运两次上榜,估值约 200 亿元,与菜鸟网络、京东物流、达达-京东到家等企业入选中国物流服务行业独角兽企业。作为一家物流企业,如何高效地记录和处理车辆的轨迹信息,对于整体的交付效率至关重要。

项目背景


数年前车辆轨迹定位存储引擎项目成立,跨越速运集团购置的数万台车辆经过车载定位设备上报信息到 GPS-AGENT 网关,服务解析报文下发到 Apache Kafka 消息中间件,再通过应用将历史位置定位信息写入 Apache HBase,最新车辆位置信息写入 Redis,以此提供给业务服务进行对车辆的实时监控与分析。


原来的业务架构如下图所示:



在原有系统的实际运行过程中,我们也遇到了很多痛点。比如说,因为数据保存在 HBase 中,当我们需要查询较大跨度的时间内的数据时,系统的性能会显著下降。


具体可以总结如下:



于是我们开始思考,该如何改进系统来解决这些痛点呢?

项目演化


在开始新的技术选型之前,我们重新对业务场景进行了梳理,可以用下面这张图来概括。



我们依次来看一下:


(1)数据不更新不删除:轨迹信息是按照车辆实际信息的时间戳上报,不存在更新和删除的需求。只需要按照某个时限来保存。


(2)无需传统数据库的事务处理:因为数据不需要更新,也就不需要像传统数据库那样用事务来保证更新安全。


(3)流量平稳,一段时间内车辆的数量和上报的频率都可以确定。


(4)数据的查询分析基于时间段和空间区域,这跟业务需求有关。


(5)除存储、查询操作外,还需要根据业务的实际需求进行各种统计和实时计算等操作。


(6)数据量巨大,一天采集的数据超过 5000 万条,并且会随业务规模的不断增长而增长。

技术选型


通过以上分析可以看到,车辆轨迹是典型的时间序列数据,所以用专门的时序数据库来处理会比较高效。在调研阶段,我们对比了几款比较有代表性的时序数据库产品。



综合对比后的结果如下:


  • InfluxDB 集群版本收费,硬件成本也相对较高;

  • CTSDB 腾讯云时序数据库,内存用量高,费用成本相对较高;

  • OpenTSDB 底层基座还是 HBase ,引入并不能使架构变得简单;

  • TDengine 集群功能开源,具有典型的分布式数据库特征,压缩比例也非常高。


通过对比,我们认为 TDengine 的很多优秀特性能够满足我们的业务场景。



于是我们基于 TDengine 进行了前期调研和演练。具体包括如下几个方面:



我们从多个方面对 TDengine 的功能和性能进行了全方位的测试,功能完全能够满足我们的需求,性能、压缩率给我们带来了很大的惊喜。


在完成基本的功能和性能测试之后,我们又结合业务进行了场景测试和演练,主要包含如下几方面的工作:


  • 数据在写入时候对集群扩缩容

  • cacheLast 的应用是否有效

  • 统计聚合分析 interval,interp 的一些业务场景应用

  • update 参数的覆盖场景

  • 常用业务的查询语句,同等查询范围的数据对比

深入理解 TDengine


在实际落地 TDengine 之前,我们也深入研究了这个系统的架构、设计等各方面特性。这里也简单分享一下 TDengine 的核心概念。

TDengine 架构


如果是第一次接触 TDengine,可以看一下如下这张图,其中的 dnode 就是实际存储数据的物理节点,dnode 框中的 V2、V7 等小框叫 vnode,也就是虚拟节点,m0、m1 就是元数据管理节点,存储一些集群信息与表信息,熟悉分布式中间件的朋友肯定能直观地感受到 TDengine 具有非常典型的分布式数据库特征。

超级表



TDengine 有个超级表的概念,例如在跨越速运集团业务场景下,所有的车辆变成一张张子表,所有的子表会继承一张叫超级表的父表,超级表定义子表的结构规范,不存储实际物理数据,我们可以通过只查超级表做数据的统计分析查询,而不用一个个子表去汇总。

高压缩特点


TDengine 采用了二阶段压缩策略,一阶段压缩会使用 delta-delta 编码、simple 8B 方法、zig-zag 编码、LZ4 等算法,二阶段压缩会采用 LZ4 算法。一阶段压缩会针对每个数据类型做特定的算法压缩,二阶段再做一次通用压缩,前提是在建库的时候将参数 comp 设置为 2 。

引入 TDengine 之后的架构


在进行了充分的测试和验证之后,我们将 TDengine 引入到了我们的系统之中。新的系统架构如下图所示:


从架构图中可以看到,车载数据依然通过 GPS-AGENT 网关进行报文解析后发送到 Apache Kafka 中,再通过应用多开启一个 Kafka group 同时消费消息,以此达到两端数据的一致。


业务系统最新车辆位置信息不再通过 Redis 读取,这样就简化了架构。查询只读取 TDengine,HBase 在一定的时间后会下线。

优化效果


引入 TDengine 之后,从各项指标来看,数据非常亮眼。

压缩率


如图我们看到一个 5 万行的表,每行在 600 字节以上,压缩后的磁盘 size 是 1665KB,压缩率高达 1%。接下来我们看个百万行的子表。



它实际占用磁盘大小为 7839KB。我们的压缩效果比 TDengine 官方的各种测试还要好很多,这应该与我们业务数据重复度相对较高有一定关系。

日增量


我们现在的业务日写入量超过 5000 万,对 TDengine 来说日增的磁盘大小基本维持在单台 1.4G 左右。

各项指标的整体对比


下图是我们实际落地前后各项指标的对比。



下图是数据增量的对比。



从对比可以看出,TDengine 确实极大降低了我们的各项成本。

问题和建议


一个相对较新的系统,在使用过程中难免会遇到一些问题,我们也和 TDengine 的研发团队一起去定位、解决。


比如下面这个就是我们在使用 JDBC 过程中遇到的问题。我们也给官方提 PR 修复了。这就是开源的魅力吧,大家都可以参与进来。



有两个地方,我们也希望 TDengine 能进一步优化:


  1. 2.3.0.x 以下的监控功能还比较简单,我们期待后期的版本能提供更强更细致的监控。我们注意到新发布的版本引入了一个叫 TDinsight 的监控工具,我们也会尽快尝试一下。

  2. 目前的 interval 函数还不支持按业务列 group by 普通列,后续希望也能够得到支持。

2022-01-05 11:074011

评论

发布
暂无评论
发现更多内容

vivo 数据库备份恢复系统演化

vivo互联网技术

数据库备份和恢复

企业如何通过SD-WAN实现异地组网互联?

Geek一起出海

喜讯!九章云极DataCanvas公司顺利通过ITSS运维二级认证

九章云极DataCanvas

大模型训练中的断点继续训练问题

百度开发者中心

深度学习 大模型

MES系统中的电子看板:真正实现数字化车间可视化

万界星空科技

MES系统 mes 数据大屏 万界星空科技mes 电子看板

“专业敏捷教练课程” 2024年3月2-3日 · CSP-SM认证周末班【新年特惠】

ShineScrum

敏捷教练 CSP-SM Profession

如何使用Redisson实现分布式锁?

王磊

Java 面试题

HTTPS可能遇到的安全问题

德迅云安全杨德俊

安全 网站 中间人攻击 HTTPS协议

投放户外LED广告屏有什么好处?

Dylan

媒体 广告 网络 消费

PS人像磨皮美容插件Delicious Retouch Panel (DR5)高级版(Win/Mac)

Rose

SD-WAN:推动企业上云的全新路径

Ogcloud

网络 SD-WAN 组网

MT7915 and QCA9880: the duo in wireless connectivity

wallysSK

大模型训练显存优化策略

百度开发者中心

深度学习 大模型 LLM

TinyEngine 服务端正式开源啦!!!

OpenTiny社区

开源 前端 低代码

Enfocus PitStop Pro 2022 for Mac(pdf增强插件) v22.0.1378944中文

南屿

小企业是否应该采用SD-WAN组网?

Ogcloud

网络 SD-WAN 组网 组网网络

前端开发Vue3的逻辑复用

伤感汤姆布利柏

开源 Vue 前端 低代码

U盘病毒查杀工具:USBclean for Mac v3.8激活版

胖墩儿不胖y

Mac软件 清洁工具 USB清洁软件

Adobe Camera Raw(PS插件增强工具) Mac/win

Rose

九章云极DataCanvas公司两大标杆案例入选《2023大模型落地应用案例集》

九章云极DataCanvas

Sensei for Mac专业的硬盘清理优化工具

南屿

【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队

京东科技开发者

MySQL常用图形管理工具

小魏写代码

GLM助力通用预训练

百度开发者中心

人工智能 LLM

水杉3D建模:Metasequoia 4 Mac激活版 附永久注册码 支持intel/M1/M2

南屿

大模型训练在人脸表情识别中的应用

百度开发者中心

深度学习 大模型 LLM

提升软件质量的利器:Mock 测试教程

Apifox

前端 前端开发 Mock Mock 服务 Mock.js

ClkLog埋点系统客户案例-互联网运营经理谈埋点分析系统

ClkLog

服务器数量从21台降至3台,TDengine在跨越速运集团的落地实践_大数据_周美华_InfoQ精选文章