简介: 随着 IoT 技术的快速发展,物联网设备产生的数据呈爆炸式增长,数据的总量(Volume)、数据类型越来越多(Variety)、访问速度要求越来越快(Velocity)、对数据价值(Value)的挖掘越来越重视。物联网产生的数据通常都具备时间序列特征,时序数据库是当前针对物联网 IoT、工业互联网 IIoT、应用性能监控 APM 场景等垂直领域定制的数据库解决方案,本文主要分析物联网场景海量时序数据存储与处理的关键技术挑战及解决方案。
作者 | 林青
来源 | 阿里技术公众号
随着 IoT 技术的快速发展,物联网设备产生的数据呈爆炸式增长,数据的总量(Volume)、数据类型越来越多(Variety)、访问速度要求越来越快(Velocity)、对数据价值(Value)的挖掘越来越重视。物联网产生的数据通常都具备时间序列特征,时序数据库是当前针对物联网 IoT、工业互联网 IIoT、应用性能监控 APM 场景等垂直领域定制的数据库解决方案,本文主要分析物联网场景海量时序数据存储与处理的关键技术挑战及解决方案。
1 典型时序应用场景
随着 5G/IoT 技术的发展,数据呈爆炸式增长,其中物联网 (IoT) 与应用性能监控 (APM) 等是时序数据最典型的应用领域,覆盖物联网、车联网、智能家居、工业互联网、应用性能监控等常见的应用场景,海量的设备持续产生运行时指标数据,对数据的读写、存储管理都提出了很大的挑战。
2 时序数据的特征
在典型的物联网、APM 时序数据场景里,数据的产生、访问都有比较明显的规律,有很多共同的特征,相比当前互联网典型的应用特征有比较大的区别。
结合时序的特征,要满足大规模时序数据存储需求,至少面临如下的几个核心挑战:
为了应对海量时序数据的存储与处理的挑战,从2014年开始,陆续有针对时序数据存储设计的数据库诞生,并且时序数据库的增长趋势持续领先,时序数据库结合时序数据的特征,尝试解决时序数据存储在高写入吞吐、横向扩展、低成本存储、数据批量过期、高效检索、简单访问与时序数据计算等方面面临的挑战。
3 业界时序数据库发展
时序数据库经过近些年的发展,大致经历了几个阶段:
1 Lindorm 云原生多模数据库
为了迎接 5g/IoT 时代的数据存储挑战,阿里云推出云原生多模数据库 Lindorm ,致力于解决海量多类型低成本存储与处理问题,让海量数据存得起、看得见。
Lindorm 支持宽表、时序、搜索、文件等多种模型,满足多类型数据统一存储需求,广泛应用于物联网、车联网、广告、社交、应用监控、游戏、风控等场景。其中 Lindorm TSDB 时序引擎提供高效读写性能、低成本数据存储、时序数据聚合、插值、预测等计算能力,主要应用于物联网(IoT)、工业互联网(IIoT)、应用性能监控(APM)等场景。
2 Lindorm TSDB 核心设计理念
Lindorm TSDB 做为下一代时序数据库,在架构升级过程中,我们认为时序数据库的发展会有如下趋势:
基于以上判断,我们构建了云原生多模数据库 Lindorm,支持宽表、时序、搜索、文件等多种常用模型,解决物联网/互联网海量数据存储的常见需求,其中 Lindorm TSDB 采用计算存储分离的架构,充分利用云原生存储基础设施,定制时序存储引擎,相比业界的解决方案更具竞争力。
1 时序定制存储引擎
Lindorm 基于存储计算分离架构设计,以适应云计算时代资源解耦和弹性伸缩的诉求,其中云原生存储分布式存储 Lindorm Store 为统一的存储底座,向上构建各个垂直专用的多模引擎,包括宽表引擎、时序引擎、搜索引擎、文件引擎。LindormStore 是面向公共云基础存储设施(如云盘、DBFS、OSS) 设计、兼容 HDFS 协议的分布式存储系统,并同时支持运行在本地盘环境,以满足部分专有云、专属大客户的需求,向多模引擎和外部计算系统提供统一的、与环境无关的标准接口。
基于云原生分布式存储 LindomStore,Lindorm TSDB 采用针对写入优化的 LSM Tree 结构来存储时序数据,并结合时序数据的特征,在日志写入、内存组织结构、时序数据存储结构进行时序压缩,最大化内存利用效率、磁盘存储效率;同时在 Compaction 策略上也针对数据通常有序产生的特征进行优化。通过引擎自带的 WAL 日志,Lindorm TSDB 能非常方便的支持实时的数据订阅,以及在引擎内部对数据进行针对性的降采样、聚合等预处理操作。
Lindorm TSDB 针对时序数据的查询,支持丰富的处理算子,包括降采样、聚合、插值、过滤等。用户的查询请求经过 Parser 解析后,通常分为多个主要的处理阶段,以 Pipeline 的形式高效处理。
2 分布式弹性
Lindorm TSDB 具备横向扩展的能力,海量的时间线数据会被分散存储到多个 Shard 中,Shard 是集群中独立的数据管理单元,Shard 内部是一个自治管理的 LSM Tree 存储引擎(参考2.2),包含单独的 WAL、TPI、TSFile 等文件。
在水平方向,时间序列数据会根据 metric + tags 组成的时间线标识,采用 Hash 分片的策略,将数据分到多个节点;在垂直方向(时间轴维度),分到同一个节点的数据,可按照时间维度进行切分,这样每个 Shard 就负责一部分时间线在一定时间范围内的数据管理。
水平方向的分片能保证集群的负载均分到各个节点,后续还会结合业务特征,支持业务自定义的分片策略,优化读写效率;垂直方向(按时间范围)的分片,对于膨胀型时间线场景(比如云原生监控的场景,容器频繁上下线导致大量老时间线的消亡,新时间线的创建)非常有帮助,同时在集群扩容时,也可以借助时间分片策略来尽可能的减小对写入的影响。
3 TSQL 时序查询
Lindorm TSDB 提供 SQL 访问能力,Lindorm TSDB 的数据模型针对物联网场景高度优化定制,概念上尽量保留开发者对数据库的普遍理解,一个实例包含多个数据库,一个数据库包含多张表,表里存储多个设备的时序数据,每个设备包含一组用于描述设备的 Tag、设备包含多个 Field 指标,新的指标数据随时间持续不断的产生。除了支持常规的 SQL 基础能力,Lindorm TSDB 还定制了 sample by、latest 等算子,用于方便的表达时序降采样、时序聚合、最新点查询等常见的时序操作,简化使用的同时,增强了时序 SQL 的表达能力,让用户使用时序数据库更加简单、高效。
基于 TSQL 查询接口,Lindorm TSDB 还能针对时序数据进行一系列的拓展分析,包括时序数据预测、异常检测等,让应用能更好的发挥时序数据价值。
4 Serverless
Lindorm TSDB 通过时序定制的存储引擎、结合分布式扩展的能力,能很好的满足大规模时序场景的业务需求。但对于一些业务访问较小的应用场景起步成本相对较高,例如在平台级的应用监控、IoT 场景,平台需要管理大量用户的时序数据,而大部分用户的数据规模初期都相对较小,为了进一步降低用户的使用成本,适应从小到大任意规模的时序存储需求,更好的赋能上层的应用监控、物联网类 SaaS 平台服务,未来 Lindorm 将会沿着多租户 Serverless 服务模式持续演进,提升弹性能力。
5 边云同步
随着 IoT 技术的发展,边缘计算需求日益明显,在智能家居、工业工控、智慧园区、交通大脑等场景,考虑到网络带宽成本等原因,数据通常需要先就近本地存储,并周期性的同步到云端进行进一步分析处理。为了方便边缘侧的部署,Lindorm TSDB 支持边缘轻量级部署的版本,并支持数据全量、增量同步到云端,形成边云一体化的解决方案。
1 物联网设备数据存储
Lindorm TSDB 是物联网设备运行数据存储的最佳选择,无缝与阿里云 IoT 平台、DataHub、Flink 等进行连接,极大的简化物联网应用开发流程。例如通过 Lindorm TSDB,你可以收集并存储智能设备的运行指标,通过自带的聚合计算引擎或BI类工具进行智能分析,深入了解设备运行状态。
2 工业边缘时序存储
Lindorm TSDB 边缘版非常适合工业互联网场景,在边缘侧轻量化输出,与工业设备就近部署,同时支持将数据同步到 Lindorm 云端。例如通过 Lindorm TSDB,你可以实时采集工业生产线设备的运行指标,对产线的运行状况进行分析及可视化,从而优化产线运行效能。
3 应用监控数据存储
Lindorm TSDB 非常适合应用监控数据存储,无缝对接 Prometheus、Telegraf、ARMS 等监控生态,提供针对监控指标的高效读写与存储,同时提供聚合分析、插值计算等能力。例如通过 Lindorm TSDB,你可以收集应用程序的 CPU、内存、磁盘等指标的使用情况,并进行分析及可视化,实时监测应用运行情况。
从互联网&大数据时代的分布式,到云计算、5G/IoT时代的云原生多模,业务驱动是Lindorm不变的演进原则。面对资源按需弹性和数据多样化处理的新时代需求,Lindorm以统一存储、统一查询、多模引擎的架构进行全新升级,并借助云基础设施红利,重点发挥云原生弹性、多模融合处理、极致性价比、企业级稳定性的优势能力,全力承载好经济体内部和企业客户的海量数据存储处理需求。
Lindorm TSDB 时序引擎面向物联网、工业互联网、应用性能监控等领域的时序数据存储需求,全面拥抱云原生,并充分利用云原生基础设施,定制时序存储引擎,构建海量低成本的时序数据存储与处理能力,提供边云一体化的时序存储解决方案。未来 Lindorm 引擎将继续在弹性伸缩、低成本海量存储、多模融合、时序流计算等方向持续突破,构建万物互联的数据底座。
原文链接
本文为阿里云原创内容,未经允许不得转载。