HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

服务器数量从 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:073370

评论

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

智能化生产应用搭建的实战案例

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 5 月 PK 榜

BATM面试Java岗:精选200+面试题及答案、6大重点规划和经验总结

Java你猿哥

Java MySQL JVM 多线程 java面试

开发中关于HTTPS不得不规避的2个大坑

北桥苏

https TCP/IP ssl

穿越数据智能“海峡”,企业更需要什么样的数智底座?

用友BIP

【5.05-5.12】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

2023 开源之夏来啦!报名 MegEngine 项目,赢取万元奖金!

MegEngineBot

深度学习 开源之夏 MegEngine 学生比赛 奖金

mac上哪款系统仪表板好用?实用软件推荐~

真大的脸盆

Mac Mac 软件 系统监测 仪表盘工具

Java Web实战 | JDBC案例:实现图书管理

TiAmo

JDBC DAO JavaBean

《 Istio 权威指南 》新著重磅发行!华为云云原生团队匠心力作

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

Java你猿哥

Java 数据库 微服务 Spring Boot java面试

硬核!阿里最新出品架构核心场景实战手册,解决99%的架构问题

Java你猿哥

详解集群级备份恢复:物理细粒度备份恢复

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

面试官:说说 WebSocket 和 Socket 及 Http 的区别?

Java你猿哥

Java TCP ssm HTTP webSock

Java 是如何毁掉你的编程思维的?

Java你猿哥

Java 程序员 ssm

【开发点滴】在vscode的python调试中,如何让调试程序以sudo方式运行?

无人之路

Python vscode ChatGPT

京东短网址高可用提升最佳实践 | 京东云技术团队

京东科技开发者

最佳实践 高可用设计 企业号 5 月 PK 榜 短网址

Django基本数据访问

测吧(北京)科技有限公司

测试

GreatSQL社区月报 | 2023.04

GreatSQL

greatsql社区

智慧园区移动应用发展面临瓶颈,如何解决?

没有用户名丶

Java 8 之后的新特性都是鸡肋吗?

Java你猿哥

Java ssm API Java 8 java 8 的新特性

中国20强(上市)游戏公司2022年财报分析:营收结构优化,市场竞争进入白热化

易观分析

公司 游戏

软件测试是青春饭吗?

测吧(北京)科技有限公司

测试

如何解决由于TLS版本不兼容导致的问题

JefferLiu

Java TLS

以数据思维和技能提升数据应用测试实践 | 京东云技术团队

京东科技开发者

测试 测试覆盖率 数据思维 应用安全测试 企业号 5 月 PK 榜

Alibaba技术专家倾心五年打造!Java工程师成神之路(基础篇)

做梦都在改BUG

Java

阿里云李钟:弹性计算控制系统团队的提效之路

云布道师

阿里云 弹性计算

一种KV存储的GC优化实践

vivo互联网技术

KV存储 GC设计

软件测试 | admin后台管理

测吧(北京)科技有限公司

测试

数据治理三大模式详解,治理新范式释放数据潜能

袋鼠云数栈

数据治理

夺冠秘诀?华为软件精英挑战赛两届冠军这样复盘比赛经验

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Django查询、删除、更新数据

测吧(北京)科技有限公司

测试

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