物联网IoT平台

物联网IoT平台是什么?物联网(Internet of Things,简称IoT)平台是通过互联网将各种物理设备、传感器、软件和网络连接起来的网络系统。它实现了设备之间的通信和数据交换,通过智能化和自动化的方式,提供了智能化管理和控制的能力。物联网的应用范围广泛,涵盖智能家居、智能城市、工业物联网等领域。通过数据的收集、传输和分析,物联网能够实现更高效、智能和便捷的生活和工作方式。
物联网IoT - TDengine Database 时序数据库

物联网IoT平台的定义

物联网IoT平台是什么?物联网(Internet of Things,简称IoT)是指通过互联网将各种物理设备、传感器、软件和网络连接起来,实现彼此之间的通信和数据交换的网络系统。物联网IoT平台的核心理念是将物理世界与数字世界相连接,通过智能化和自动化的方式,实现设备之间的互操作性和智能化管理。[1]

物联网IoT平台的基本原理是通过传感器、标签、RFID等技术将物理设备与互联网连接起来,使其能够实时收集、传输和分析数据。这些数据可以包括设备的状态、位置、温度、湿度等各种信息。通过云计算和大数据分析,这些数据可以被处理和利用,以实现更高效、智能和自动化的应用。

物联网IoT平台的应用范围广泛,涵盖了各个行业和领域。例如,智能家居可以通过物联网技术将家庭中的各种设备和系统连接起来,实现智能化控制和管理;智能城市可以通过物联网技术实现交通、能源、环境等各个方面的智能化管理;工业物联网则可以实现工厂设备的远程监控和管理,提高生产效率和质量。

物联网IoT平台的发展带来了许多机遇和挑战。一方面,物联网IoT平台可以带来更高效、智能和便捷的生活和工作方式,改善人们的生活品质和提高生产效率。另一方面,物联网也面临着数据安全、隐私保护、设备兼容性等方面的挑战,需要制定合适的政策和标准来解决这些问题。

总的来说,物联网IoT平台是一个连接和互联各种物理设备和系统的网络系统,通过收集、传输和分析数据,实现智能化和自动化的应用。它具有广泛的应用前景,将对社会、经济和生活带来深远的影响。

物联网IoT平台发展历程

早期发展(1990年代-2000年代初):物联网IoT平台的概念最早于1999年被提出,但在这一阶段,技术和基础设施仍然相对薄弱。主要是一些技术先驱和研究机构开始探索和研究物联网的概念和技术。

技术推动(2000年代中期-2010年代初):这一阶段,物联网IoT平台的发展受益于无线通信技术的进步,特别是无线传感器网络和RFID技术的发展。这些技术的成熟使得物联网的应用开始扩大,包括智能家居、智能城市、智能交通等领域。

大规模应用(2010年代中期至今):随着移动互联网技术的普及和云计算技术的成熟,物联网IoT平台的发展进入了一个新的阶段。越来越多的物理设备和传感器被连接到互联网上,数据的收集和分析能力大大增强。物联网的应用场景也更加多样化,包括智能健康、智能农业、智能工业等领域。

未来发展(未来):物联网的发展仍在不断演进和创新。随着5G技术的普及和边缘计算技术的发展,物联网IoT平台将更加强大和智能化。预计物联网将与人工智能、大数据、区块链等技术相结合,进一步推动物联网的发展,并为社会、经济和生活带来更广泛的影响。

2021年7月13日,中国互联网协会发布了《中国互联网发展报告(2021)》,物联网市场规模达1.7万亿元,人工智能市场规模达3031亿元[2]

2021年9月,工信部等八部门印发《物联网新型基础设施建设三年行动计划(2021-2023年)》,明确到2023年底,在国内主要城市初步建成物联网新型基础设施,社会现代化治理、产业数字化转型和民生消费升级的基础更加稳固。[3]

物联网IoT平台数据的特征

物联网IoT平台领域各种类型的设备和传感器都会产生海量的时序数据,这些数据将占世界数据总量的 90% 以上。

时序数据的特点[4]

  1. 时间戳:每个数据点都带有时间戳,这个时间戳对于数据的计算和分析十分重要。
  2. 结构化:与来自网络爬虫、微博、微信的海量数据不同,联网设备或监控系统生成的数据都是结构化的。这些数据都具有预定义的数据类型或固定长度,比如智能电表采集的电流、电压就可以用 4 字节的标准的浮点数来表示。
  3. 流式:数据源以近似恒定速率生成数据,如音频或视频流。这些数据流彼此独立。
  4. 流量平稳可预测:与电商平台或社交媒体网站的数据不同,时序数据的流量在一段时间内是稳定的,并且可以根据数据源的数量和采样周期来进行计算和预测。
  5. 不变性:时序数据一般都是 append-only,类似于日志数据,一般不容许而且也没有修改的必要。很少有场景,需要对采集的原始数据进行修改。

时序数据通常用于比较当前数据与历史数据、检测异常、生成实时警报以及预测未来趋势。时序数据解决方案一般考虑以下问题:

  • 时序数据量通常很大,因此在执行存储、索引、查询、分析等操作时变得更加困难。
  • 时序数据需要实时计算和分析,以便于实时检测异常并告警。 延迟可能会导致故障和业务影响。
  • 通常需要关联来自不同传感器和其他源的数据,这使情况变得更复杂。
  • 不管是原始数据查询、还是聚合数据查询,时序数据的查询一般都会带上查询时间范围,一方面是根据时间范围计算聚合时间窗口,另一方面是为了更高效的检索数据,提高查询效率,避免大量无效数据的扫描。
  • 数据在一段时间内的变化趋势比单个数据点重要得多。例如,考虑到网络不可靠性或传感器读数异常,我们可能会在一段时间内的某个平均值超过阈值时设置警报,而不是在单个数据点上这样做。

TDengine 这类时序数据库,是基于时序数据的特点以及应用的特点进行优化和设计的,专为解决上述问题而生。这类专业的数据库使时序数据的处理变得更加高效,性能也比通用数据库更好。

物联网IoT平台的处理流程

数据采集

数据采集是物联网应用的基础层,一般是由各种传感器,识读器,读写器,摄像头,终端,GPS等智能模块和设备构成。而采集就是通过这些模块和设备来识别,读取和采集来完成信息获取,例如温度、湿度、压力、位置等信息。其中所运用的技术主要包括RFID技术、传感控制技术、短距离无线通信技术等。

数据传输

传输层是物联网IoT平台设备实现连接的通道,承担连接终端设备、边缘、云端的职责,负责将感知层识别和采集的信息进一步传递,其中涉及到多种网络通信技术,通信技术可分为无线传输技术和有线传输技术,而根据实际应用发展情况,无线传输是主要发展趋势,因此物联网传输层主要关注点在无线传输技术。

数据存储

数据存储是将采集到的数据保存在云端或本地服务器中,以备后续的数据分析和应用。存储可以采用关系型数据库、分布式数据库、对象存储等不同的技术方案。

数据处理

当数据传输至服务器端或云计算平台后,接下来服务器或云计算平台就会对数据进行收集、记录、分析、处理、提取、再处理,存储、管理等,然后再将得出的结论数据,反馈给各个终端应用设备的过程。

数据分析

在数据处理后,对数据进行分析和挖掘,探索数据中的模式、关联和趋势。这可以通过统计分析、机器学习、深度学习等技术实现,从而提取有价值的信息和洞察。

数据应用

等到服务器或云计算平台得出数据结论后,就会将结论数据下传至各个终端应用设备,而终端应用设备则根据这些数据,来自动执行相应的指令和操作。最终以更快的速度,来智能和自动解决人们的需求,或实现其目的。

专为物联网IoT平台处理而生的时序数据库

随着物联网IoT平台和云的出现,时序数据的量开始以前所未有的方式呈指数级增长:1. 连接设备和物联网的兴起,仪表、汽车、电梯、甚至自行车等设备都在源源不断地生成数据;2. IT 基础设施在高速增长,物理服务器、虚拟机、容器、微服务等等都会生成海量时序数据。庞大的时序数据集是关系数据库和 NoSQL 数据库面临的主要挑战,大体分为以下几个方面:

  1. 时序数据积累得非常快,每秒产生数百万条数据,通用数据库并不是为处理这种规模的数据而设计的。关系数据库在非常大的数据集上表现很差,NoSQL 数据库虽然解决了扩展能力,但是其通用的数据组织方式并不完全适用于对时序数据存储和查询需求,用户必须根据实际应用场景,进行特殊设计甚至大量数据冗余存储才能较好的利用资源处理请求。
  2. 随着数据量的增加,访问速度越来越慢。同时,大多数通用数据库为了提升查询性能,针对大量数据建立索引,由此消耗大量的系统资源。对于海量的时序数据,通用数据库无法高速加载并满足实时处理需求。
  3. 设备和应用在 7*24 小时不间断地生成数据——有时一天的数据量就超过 1 TB。关系数据库和 NoSQL 数据库没有针对时序数据的特点来压缩这些数据,因此,存储成本会变得很高。

上述问题主要是处理大数据集的效率问题,但通用数据库往往连时序数据应用的一些基本需求都无法支持:

  1. 数据生命周期管理:时序数据具有时效性,超过一定时长的数据通常不再具有价值,时序数据一旦老化,就需要对超过保存时长的数据进行批量删除处理,而不是针对单条数据的删除。
  2. Roll-up:用户定时聚合历史数据保存至新的数据表。原始数据和 rolled-up 的数据可能具有不同的生命周期和保留策略。
  3. 特殊的分析功能:除了一般数据库提供的功能外,数据库还要针对时序数据的处理进行扩展,提供累计求和、时间加权平均、移动平均、变化率等众多时序数据分析功能。
  4. 插值:时间序列分布会在一些时间线上,且序列会随着时间的增长往后发展。本质上是在一个固定的时间点记录数据,但如果要检查某个具体时间的设备采集的某个量,而传感器实际采集的时间不是这个时间点,这就要求数据库能够根据相邻的数据点和规则对数据进行插值。
  5. 连续查询:在时序应用的场景下,对于依照时间推进顺序写入的实时数据,用户有时会希望每隔一段固定时间,就能够按照一定的查询条件对该时间范围内的时序数据做一次计算(例如:对该时间范围内的数据求一次聚合计算),并将计算结果另行保存下来。因此,数据库需要提供连续查询(即一种简化的流计算能力),能够在时间窗口结束后对窗口内的数据进行计算。
  6. 窗口查询:时序数据常常需要根据采集时间对数据进行查询,本质上是在时间轴上划分出时间窗口,并对窗口内的数据进行聚合和查询计算。在实际生产应用中,业务场景要求的查询条件往往比这个更复杂,需要数据库能够按照不同规则、沿时间轴进行窗口划分,并对各个窗口内的时序数据分别进行聚合、选择计算等操作。

对于通用数据库,研发人员需要投入精力通过编写代码来实现这些功能。不同场景,不同数据量都需要不同的解决方案,极大增加了研发成本。因此,无论数据集的大小如何,使用专门构建的时序数据库都是最好的选择

物联网IoT平台时序数据处理面临的挑战及解决方案

物联网存在海量的设备、传感器,时序数据处理的传统方案有如下问题:

  1. 数据入库慢:单机写入吞吐量低,很难满足时序数据上千万级的写入压力;
  2. 存储成本大:在对时序数据进行压缩时性能不佳,需占用大量机器资源;
  3. 维护成本高:单机系统,需要在上层人工进行分库分表,维护成本高;使用 Pi 等组件则对点位数有限制,随着点位增多需要更多的开销;
  4. 非云原生:不支持分布式,对部署的平台有限制,没有好的扩展性、韧性、可观测性,部分产品比如 Pi 有一定的;
  5. 查询性能差:海量实时数据的聚合分析性能差。
  6. 数据孤岛:边云协同能力差。

TDengine 作为一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB),针对物联网的数据特点及读写需求做了特定的优化,广泛运用于物联网各类场景中,并且提供基于数据订阅的数据同步工具 taosx 来支撑异地多活、边云协同。

物联网IoT - TDengine Database 时序数据库

收益与价值

高性能:可以支持百万级别的并发写入、万级的并发读取,大量聚合查询时依然有高性能表现

高可用:可支持集群部署,可横向扩展,不存在单点故障,为生产环境稳定运行提供基础

低成本:数据库对硬件资源要求低,数据压缩率高,平均至少节省70%的硬件资源

高度一体化:具备消息队列、流式计算和缓存的功能,大幅简化架构

易上手:使用 SQL 进行数据库操作,简单易学,支持复杂查询,减少开发难度和运维压力

自带边云协同组件:轻松跨隔离同步数据

物联网IoT平台企业案例

至数摇光 x TDengine

目前改造工作已经全部完成,改造后有大约 80% 左右的指标模型放到了 TDengine 中,20% 左右的主数据或维表数据存放在 MySQL 数据库中。相较于改造前的 80% 指标模型存放在 MySQL 中,20% 指标数据存放在 OpenTSDB 数据库中,结果刚好进行了颠倒,服务器资源使用情况也有所下降。应用整体的页面影响速度显著提高,数据模型及数据指标上也可以更加地灵活多变。[5]

业务背景

至数物联网平台场景多、数据模型复杂,改造前数据库采用 OpenTSDB+MySQL 结合的方式实现,由于 OpenTSDB 无法满足复杂查询场景,因此 80% 的场景指标只能基于 MySQL 数据库来实现,这样带来的问题就是 MySQL 数据库的数据增长迅速,需要定时做冷热数据分离及数据库表维护动作。在对 TDengine 进行充分调研后,至数摇光决定从时序数据库 OpenTSDB 迁移到 TDengine,并基于 TDengine 的特性对系统进行彻底性的改造。

架构图

物联网IoT - TDengine Database 时序数据库
查看案例详情

华自科技 x TDengine

当前项目数据测点大概在 18 万左右,改造后数据存储周期由原来的 5 分钟减少到 1 秒钟,存储的数据维度更精细了,能为平台的智能诊断、智能分析服务提供更准确的数据支持,同时各业务场景下的计算查询性能也提升了不少,数据库服务器由原来的 6 台减少到目前的 3 个节点集群。[6]

业务背景

华自科技旗下的物联网数据平台是电站及泵站智慧运维平台的核心组成。在数据存储上,此前其采用 MySQL 分库分表方案来存储历史数据,使用 Redis 来存储实时数据,在测点数较少或者集控需求不是很多的场景下,基本满足需求,但随着平台业务的发展,接入的站点越来越多,运维难、开发难、成本高等问题逐渐凸显。为了解决这些问题,华自科技决定重新进行技术选型,寻找替代方案,升级目前数据库存储方案。结合平台实际需要,其调研了 InfluxDB、庚顿、麦杰、TimescaleDB、TDengine 这几款数据库产品,最终选择了 TDengine。

改造迁移

由于 TDengine 采用了类 SQL 的语法,支持 MyBatis 等 ORM 框架,因此老业务在代码层面的改动非常少,改动最多的就是将原来的 MySQL 函数结合应用代码的一些计算逻辑直接用 TDengine 的函数替换掉。在通过业务系统观察和验证各项功能正常之后,就可以进行历史数据的迁移了。由于 TDengine 的表结构与原来的 MySQL 存储结构基本类似,因此物联网数据平台开发人员直接采用 DataX 的 TDengine 插件,历史数据就很轻松地迁移过来了。

查看案例详情

睿信物联网平台 x TDengine

TDengine 的安装部署非常简单,配合 Docker 容器,在几分钟内就能完成。迁移到 TDengine 之后,我们的运营监控工作也变简单了,只需要对 TDengine 的几个进程进行监控,占用的磁盘空间减少到了原来的 1/5,使用的主机也减少到原来的 1/5,极大节省了资源开销。遇到技术难题,不仅可以直接在官方渠道 https://github.com/taosdata/TDengine 提 issue,也可以在 TDengine 的技术社区提问,TDengine 的技术专家响应非常快。[7]

业务背景

睿信物联网平台此前采用 OpenTSDB 进行时序数据的存储,功能上基本满足现有需求,但是由于 OpenTSDB 架构复杂,体量过重,给开发测试、安装部署以及运维管理等工作带来了不小的麻烦。随着业务的发展,问题逐渐凸显,开始影响工作效率,具体可以归纳为安装难、调试难、运维难、成本高四大问题。从业务发展的角度出发,睿信开发人员决定重新进行技术选型,寻找 OpenTSDB 的替代方案,分别对 InfluxDB、TimescaleDB 和 TDengine 三款时序数据库进行调研。

架构图

物联网IoT - TDengine Database 时序数据库
查看案例详情

苍穹数码 x TDengine

我们以近 10 年全省的雨量站小时雨量数据为测试数据,从常用的应用场景对 TimescaleDB 和 TDengine 两款数据库进行对比分析,历史数据批量入库场景中 TimescaleDB 用时 24 小时,TDengine 用时仅仅 2 小时;入库后数据文件大小对比结果中 TimescaleDB 是 38GB,TDengine 是 698MB;常见查询场景比对中 TDengine 也均优于 TimescaleDB。从入库、压缩比及查询 3 个维度来看,TDengine 都是完胜。[8]

业务背景

在地灾专业监测物联网平台项目中,首先需要解决的就是海量时序数据的存储和计算问题,其有着体量大、时间长,写入、查询要求高等特点,传统关系型数据库已经无法满足实时写入与高性能查询要求。该项目在 2018 年创建之初采用的是大型企业级数据库 Oracle,目前已经无法满足实时写入与高性能查询要求,特别是当雨季来临,传感器数据采集频率提高到秒级、毫秒级别,数据入库就会阻塞,效率非常低下。苍穹数码选择接入 TDengine 以解决海量时序数据的存储和计算问题。

架构图

物联网IoT - TDengine Database 时序数据库
查看案例详情

通过上面几个实践我们也能看到,时序数据积累得非常快,每秒产生数百万条数据,通用数据库并不是为处理这种规模的数据而设计的——关系数据库在非常大的数据集上表现很差,NoSQL 数据库虽然解决了扩展能力,但是其通用的数据组织方式并不完全适用于对时序数据存储和查询需求,用户必须根据实际应用场景,进行特殊设计甚至大量数据冗余存储才能较好的利用资源处理请求。

而在时序数据库(Time Series Database)的选择上,企业也要擦亮双眼,进行充分的调研测试,选择性能最好资源使用率最高的产品,此前我们基于第三方性能基准测试平台 TSBS 测试发布的 IoT 场景下 TDengine 3.0 性能对比分析报告,大家也可做参考。如果你正面临数据处理难题,欢迎添加小T微信(tdengine)寻求帮助。