乐趣区

关于tdengine:解决两大难题TDengine-助力亿咖通打造自动驾驶技术典范

小 T 导读:在平安解决方案 SuperCloud 中,亿咖通面临着磁盘占用量大、车辆最新状态实时查问难以实现两个外围问题。最终,他们抉择了让 TDengine 承当数据中台的重要角色,负责车辆实时数据的写入、存储以及实时查问。本文讲述了研发团队在后期应用 Apache HBase 时遇到的具体难点、为什么没有保持抉择 OpenTSDB,以及抉择 TDengine 的过程和功效。

企业简介

亿咖通科技是一家汽车智能化科技公司,在武汉、杭州、上海、苏州、马来西亚吉隆坡、英国伦敦等国内外多地设立有分支机构和研发核心,致力于继续打造行业当先的智能网联生态开放平台,全面为车企赋能,发明更智能、更平安的出行体验。

我的项目介绍

为实现高水准的主动驾驶能力,亿咖通科技(ECARX)打造了一整套平安解决方案 SuperCloud,该计划旨在利用人工智能技术以及摄像头、雷达、声纳等多种传感器技术来保障驾乘者的平安。主动驾驶的外围数据就是设施的影子数据和状态数据,对设施进行精准的数据管制和采集,再联合高精地图的数据,是实现主动驾驶的两个重要环节。值得一提的是,亿咖通也是目前国内为数不多的领有高精地图资质的企业。

在 SuperCloud 我的项目当中,TDengine 承当着数据中台的重要角色,负责车辆实时数据的写入、存储以及实时查问。

选型通过

在此之前,咱们应用的存储架构是 Kafka + Flink + HBase,但随着业务的倒退,逐步发现 HBase 的 Key-Value 存储模型并不适宜咱们的场景,究其原因,是因为落地到数据库的都是结构化的数据,Key-Value 存储模型会导致磁盘占用量特地大,并且性能上也无奈实现车辆最新状态的实时查问,这也是亟待解决的两个外围问题。

通过调研,咱们发现时序数据库才是正确的抉择方向,而且外围数据也合乎时序数据的种种特点,因而,咱们决定在 InfluxDB、TDengine 和 OpenTSDB 之间进行产品选型。

事实上,一开始咱们抉择的是 OpenTSDB,因为它基于 HBase,所以咱们很不便上手。但成也萧何败也萧何,也正因为要依赖 HBase,OpenTSDB 并没有解决 HBase 遗留的性能、压缩率等问题。而 InfluxDB 因为单机性能并不够卓越,而且集群性能没有开源,所以也没有被驳回。最终通过各种维度的比照后,咱们决然抉择了国产、开源、反对 SQL 的时序数据库 TDengine。

TDengine 十分合乎咱们当初的业务场景,尤其是超级表的概念,甚至能够说是为咱们量身定做的。咱们为每辆车都调配了一个子表,用以接管 IHU 设施产生的数据。(注:IHU 是亿咖通投入研发的第一代整车计算平台产品,于 2017 年第二季度投放市场应用,是一款采纳车载专用处理器、基于车身总线零碎和第三方应用服务打造而成的多媒体娱乐零碎,能实现包含地图导航、多媒体娱乐、车辆信息等一系列信息娱乐性能及车联网服务。)

优化后的新架构为:Kafka + Flink + TDengine。Flink 上游的数据可分为 2 类,一类是用 json 存储的结构化数据,还有一类是如图片、视频一类的非结构化数据。上游如果是结构化的 json 数据,则通过如下链路写入 TDengine:Kafka—>Flink—>TDengine,如果是非结构化的数据,则会间接存储到 S3 上,而后把这些视频图片的文件门路通过如下链路写入 TDengine:S3—->Kafka —-> Flink—>TDengine。

搭建与成果

咱们以单正本模式落地了一个三节点的集群,机器配置为 8C + 16G + 500G 机械硬盘,备份用其余形式实现。以后环境下有 3 张超级表、276571 张表。

超级表表构造如下:

因为咱们的 json 较大,所以抉择应用 protobuf 进行压缩后再写入 TDengine,这样只须要 1500 字节的长度就能够包容该类 json,取出进行反序列化后以供应用。

以后最大的一张超级表曾经存有 300 多亿条数据,每行 2362 字节。粗略估算,我的项目运行至今,总数据量大略有 68T 左右,但理论的磁盘占用量只有 1.4T,以前 20 天就能写满 15T 的磁盘,但当初根本曾经不再须要思考磁盘的问题了。资源使用率相比以前节俭了近百倍。

此外,困扰咱们许久的数据实时查问问题也无望失去解决,TDengine 的 last 函数能够实现毫秒级返回设施最新状态。因为咱们以后应用的版本还是比拟老旧的 2.0.18,这一版还没有针对 last 函数的缓存,TDengine 的工作人员示意后续会有针对这个函数专门的优化,等日后版本升级后再做体验。最罕用的查问车辆实时地位的 SQL 是这样的,全部都是毫秒级别返回后果:

写在最初

总体而言,TDengine 的独特设计帮忙咱们解决了传统架构磁盘存储占用过高,以及性能上不能反对车辆状态实时查问这两大痛点,在实现降本增效方面货真价实。不止如此,咱们后续要实现的设施统计需要也在利用 TDengine 之后失去了解决。在 TDengine 的官网社区中,所提出的问题也都能够失去反对人员的疾速反馈,事无巨细,这帮咱们极大升高了我的项目落地的难度。TDengine 的利用,不仅齐全解决了咱们以后业务上存在的痛点,也匹配上了后续业务倒退的需要。随着业务的疾速倒退,咱们心愿和涛思数据后续能够在更多维度上通力合作,独特打造主动驾驶的行业技术榜样。


想理解更多 TDengine 的具体细节,欢送大家在 GitHub 上查看相干源代码。

退出移动版