作者:吴明敏,深度(平潭)科技
深度(平潭)科技有限公司是一家IT综合服务提供商,致力于以工业物联网、大数据、云计算、移动互联为基础进行行业软件研发、解决方案集成及运行维护服务。公司精准把握信息化发展趋势,重点布局工业物联网、智能制造、智慧水务、智慧物流、智慧楼宇,借助新兴技术进行融合创新,构架智能化、智慧化的信息服务支撑平台,推进中国新型工业化进程。
由邯钢牵头的“十三五”水专项“钢铁行业水污染全过程控制技术系统集成与综合应用示范”课题中,我们承担了“提高水循环利用的分质/分级供水技术、水系统优化和水网络智慧管理”的研究任务,创新开发了具有自主知识产权的“钢铁联合企业全过程节水减排专家管理系统智慧平台”。
该项目的初衷是让其能够在全国范围内适用。但是,由于在此过程中会有海量数据产生,数据的实时写入成为一大难题。同时,多种分析算法、预警报警条件、报警处理流程、运行日报、综合统计分析报表可云端动态配置、实时的动态分析计算和历史大量数据回测在线计算也是新的技术挑战。
在此背景下,如果想要满足大数据采集计算需求,如何引入高效的分布式实时处理系统,如何设计平台的计算框架,以及如何选择适宜的时序数据库(Time-Series Database)是我们必须要解决的问题。
在2018年开始实施这个项目时,可供我们选型的产品并不多,基本上是工业现场的实时数据库和通用的业务型数据库。但是工业实时库扩展能力和数据安全达不到我们的要求,配置上需要配合驱动,这就要求我们要了解一些工业现场协议,成本相对较高;如果使用如MySQL一般的通用数据库,随着监控点增加,按照时间对表进行水平划分容易出现数据热点问题,而按照监测点hash取模进行划分时,扩展又会变得比较困难。
后来,我们也尝试了Kafka+Strom+HDFS这个组合,并且已经完成开发,但是随着业务的不断发展,在每天要处理将近一亿条数据的情况下:实时和历史数据的读取、开发优化、数据一致性、部署运维的成本都变得越来越高。
如何才能以低成本达成高性能?选型迫在眉睫
针对以上业务场景和痛点,我们决定更换数据方案、进行产品选型,并优先对比了物联网云平台和时序数据库。
选型数据量参考如下:
物联网云平台的优点是为能够数据开发者提供一站式服务,有效降低开发门槛、缩短开发周期,其缺点也非常显著,虽然说在接入以后零代码更加方便了配置,但前期设备厂商还需要针对平台接口进行适配就不是很友好了,平台的费用加上实时流式计算按次收费的方式,成本瞬间提升。此外,在我们的业务中,由于业主要求生产数据不离厂,离线部署成本高、运维难且现场设备多样协议繁多,还需要定制接口。
其次就是时序数据库,由于市面上产品种类众多,我们就从自身的需求出发,对两款市面流行的时序数据库进行了相关调研,分别是InfluxDB和TDengine。前者虽然市场占有率相对较高,但非常可惜其社区版集群功能并未开源,不能完全满足我们的业务需求。而TDengine尽管相对比较“年轻”,却能够保障在提供高性能的同时也极大降低安装、部署和维护的成本,此外它还具备如下特点:
- 安装简单
- 集群功能开源
- 从时序数据的特点出发,设计了创新的超级表概念
- 具有丰富的函数,还有支持窗口查询和连续查询等诸多优势
经过认真测试和对比后,最终我们决定将TDengine Database接入到水处理专业化运维系统中进行后期改造,而TDengine也没有辜负我们的期望,帮助我们达成了降本增效的目标。
TDengine中间性试验信息如下表所示:
面对海量数据,TDengine能力如何?
下面我们一起来看一下TDengine Database在业务实践中的具体表现。
首先我们根据业务类型,创建了5张超级表,数据量比较大的两张表结构如下:
这两张表的数据量达到了25亿以上,加上其余超级表后总数据行数大概在26亿左右。
对超级表hgengine查询所有设备的最新状态值,TDengine的耗时是0.23s。这里不得不提一下,由于我们是2.0.7的旧版本,距今已经1年之久,很多函数都没有缓存之类的优化,所以性能和新版差距很大。但是由于项目稳定运行很久了,所以就一直都没有升级到最新版本体验,十分遗憾。
接下来我们看一下存储,TDengine在以上数据量之下(26亿行),占用的磁盘空间其实只有2.8G,而实际上入库的原数据大小应为(26亿行,每行包含时间戳列8字节以及float和double混搭大概4.2字节,总共317亿字节)30G左右,TDengine的列式存储压缩率可以达到惊人的10%。
但更重要的是,由于TDengine的超级表特性,我们还从结构上省下了26亿行的标签数据,想象一下如果hgengine表的每一行数据都还要带上这几个数据(type,sendorid,opcid,合计436字节),那这个表的原本数据量直接就会达到TB级别,就算压缩率再好也要占用百G级别的存储。
所以,TDengine从根源下手,把设备的静态数据抽取出来做为子表的一条标签放在了内存中。从根本上就解决了这一物联网大数据场景下的典型问题。最终,磁盘只用了2.8G。我们准备的1.8T磁盘,目前只用了千分之一。
正是在TDengine的强大助力下,我们平台的整体运作也越来越顺滑,取得了以下成效:
① 物联全过程
基于物联网,打通数据边界,打破工具壁垒,将整个钢铁园区全过程水系统信息汇入平台,集成统一管理,实现全流程一体化管控。
② 生产全监控
实时追踪水足迹,以水流监控图的形式对水系统的运行工况进行监控,显示历史和实时的运行参数,从而判定各指标是否符合生产工艺要求并进行即时分析及预警报警,实现水资源的智慧化和可视化管理。
③ 系统全平衡
分析水质水量平衡,以图表的形式即时显示全厂、区域、用水单元三级水平衡现状,从而有效实现水的调度,实现水的高效分质分级回用。
④ 管控全平台
根据用户需求自动生成报表与图表,融合多因子水质水量平衡优化算法,并内置专家管理模型以及相应知识库。采用逐步趋近法渐次调节,实现了水系统的智能化运行分析和优化管理。
从高效、快捷、精准的特点出发,平台以全厂、区域、水系统三级管理,涵盖了钢铁生产中各个工序的用排水系统以及水处理、综合污水处理系统,实现了钢铁园区全生命周期水系统运行、能源管理、环保管理、数据统计分析,以及厂区内水平衡调控的智能化、数据化、可视化。在达成这个成就的过程中,TDengine提供了不小的助力。
写在最后
在本项目中,TDengine Database可以说是为我们量身定做的一般,将其强大的性能表现体现得淋漓尽致,监控数据上报后的实时展示、计算分析、历史回溯都非常快。更优秀的是其学习和运维成本却并不高,为我们整个项目的完美运作提供了强大助力。未来,希望TDengine能够开发出更多更好的优质特性,也希望我们能够和TDengine展开更多更深层次的合作。