作者: 叶秋,李海峰,周美华 —— 跨越新科技 vms 车管技术团队

小 T 导读:跨越速运集团有限公司创建于 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 的核心概念。

1. TDengine 架构

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

2. 超级表

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

3. 高压缩特点

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

四.引入 TDengine 之后的架构

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

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

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

五. 优化效果

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

1. 压缩率

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

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

2. 日增量

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

3. 各项指标的整体对比

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

下图是数据增量的对比。

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

六.问题和建议

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

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

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

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

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

最后,在尝试和落地 TDengine 的过程中,我们也得到了涛思数据多位同事的大力支持,在此一并表示感谢。


✨想了解更多TDengine的具体细节,欢迎大家在GitHub上查看相关源代码。✨

GitHub - taosdata/TDengine: An open-source big data platform designed and optimized for the Internet of Things (IoT).An open-source big data platform designed and optimized for the Internet of Things (IoT). - GitHub - taosdata/TDengine: An open-source big data platform designed and optimized for the Internet of Things (IoT).https://github.com/taosdata/TDengine

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

  1. 服务器500_BTA齐聚新基建——2030年百度智能云服务器数量超500万台

    6月19日,百度官宣将加大新基建领域投资,预计到2030年,百度智能云服务器台数超过500万台.至此,BTA三家老牌云服务商均发布了新基建计划,不论是腾讯的5年5000亿还是阿里的3年2000亿或者是 ...

  2. 性能测试服务器数量与线上数量不同,性能需求分析

    一. 性能测试需求分析 需求收集之后,我们已经从性能需求文档中提取出了业务性能测试指标,主要包括PV到TPS的转换以及响应时间要求,接下来我们需要进行进一步的需求分析过程. 1了解系统架构.明确压力流 ...

  3. 服务器每秒钟执行命令数量是什么_如何合理的评估上线服务器数量

    一.性能指标 我们知道服务器,有 CPU.内存.IO.网络等一系列指标,除了这些系统级的,还有些针对各个语言自己的性能参数,而一个服务器的吞度量与请求对CPU的消耗.外部接口.IO等等紧密关联的 ,面 ...

  4. HMC支持管理服务器数量及适合POWER6服务器的HMC型号

    HMC支持管理服务器数量及适合POWER6服务器的HMC型号 什么是HMC,HMC支持管理服务器数量,那些服务器必须通过HMC管理,以及适合POWER6服务器的HMC型号 IBM硬件管理控制台(Har ...

  5. 【华为OD统一考试B卷 | 200分】服务器广播、需要广播的服务器数量( C++ Java JavaScript )

    华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷). 你收到的链接上面会标注A卷还是 ...

  6. 网吧无盘60台服务器配置,网吧40台无盘服务器的配置

    网吧40台无盘服务器的配置 内容精选 换一换 弹性云服务器(Elastic Cloud Server)是一种可随时自动获取.计算能力可弹性伸缩的云服务器,可帮助您打造可靠.安全.灵活.高效的应用环境, ...

  7. 人均维护服务器数量,华为一体机助力金华技术学院构建最佳云平台

    "金华职业技术学院的云计算平台已经实际应用于数字校园的系统中.我们之所以选择华为,一是因为华为具备优秀的解决方案能力:二是,华为是一个可长期合作.值得信赖的合作伙伴." ----金 ...

  8. 档案用虚拟化服务器还是物理机,利用虚拟化将一台NAS满足不同部门

    [IT168 资讯]企业环境中如果存在多个域,在不同域中就必须建设不同的NAS系统,所以容易造成管理复杂和资源分散,但通过NAS虚拟化技术可解决这样的问题,能将一台NAS系统仿真成多台虚拟设备,每一台 ...

  9. 鸿蒙之下分城如果建设,率土之滨:分城数量不再限制,戍城、金虎台、拜将台让战斗更激烈...

    一直以来,率土之滨都是国内SLG三国策略游戏的标杆,在业内有着非常不错的口碑.但自从宝物系统上线之后,口碑是直线下降,甚至已经成为了割韭菜的新代表.不过为了挽回玩家的流失,率土之滨将会在金印紫绶赛季中 ...

最新文章

  1. ASP.NET中的事务处理和异常处理
  2. oss2模块和aliyun oss连接
  3. Xen 启动客户虚拟机的过程分析
  4. java 中断 继续_中断,继续并在Java循环中标记
  5. “汇新杯”新兴科技+互联网创新大赛青年创客专项赛即将截止报名
  6. IPv6推进将非常漫长
  7. android使用apache http包链接servlet
  8. grpc,protoc, protoc-gen-go,rust
  9. SDL 播放pcm数据
  10. python类不接受任何参数_python中提示class不接受参数,为什么?
  11. spring boot初步
  12. java kv对象_java入门之——对象转型
  13. matlab min函数_数学建模与MATLAB非线性规划
  14. C++11模板友元语法
  15. 用python写冒泡排序_用Python写冒泡排序代码
  16. The full stack trace of the root cause is available in the server logs.
  17. 计算机中库的创建方法,win7系统下库的创建方法
  18. 2021 ICPC Jinan C Optimal Strategy
  19. Windows驱动的Checked (chk)和Free(fre)区别
  20. 能不能推荐几个专门与外国人交友的app?这3款软件很有趣!

热门文章

  1. 将一句英文中的每个单词首字母大写,其余字母小写
  2. 第46篇 WebRTC及点阵笔及PHP研究(九)
  3. 企业ERP财务管理系统开发设计方案
  4. UI设计师如何提升审美?
  5. H5页面生成word文件及发送邮件
  6. PHP密码加盐Hash
  7. 【论文翻译 | IEEE TKDE】ie-HGCN - Interpretable and Efficient Heterogeneous Graph Convolutional Network
  8. pythontk中text设滚动条_Tkinter中的滚动条在文本widg中
  9. 都2023年了,你还不知道程序员可以做哪些副业?
  10. java微信小程序文学小说在线阅读销售网站 uniapp 小程序