民工心事 发表于 2025-4-14 22:36:05

Influxdb 架构

InfluxDB是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,其架构特点可以归纳为以下几点:
https://i-blog.csdnimg.cn/direct/f9c1db8a9e484ff888039408c787f241.png
一、核心组件


[*]数据摄取组件:

[*]负责接收用户写入的数据,并将其分片到不同的摄取器中。
[*]摄取器会对数据进行验证、分区、重复数据删除等处理,然后将数据生存为Parquet文件。
[*]摄取器还会更新目次,以关照其他组件新数据的到达。

[*]数据查询组件:

[*]负责处理用户的查询请求,从目次中获取所需的元数据,并从对象存储中读取数据。
[*]查询器会构建并执行查询计划,以获取最佳查询性能。
[*]查询器还支持缓存元数据和数据,以进步查询效率。

[*]数据压缩组件:

[*]负责将摄取器天生的小文件压缩为更少、更大且不重叠的文件,以优化查询性能。

[*]存储组件:

[*]Catalog:用于存储集群的元数据。
[*]Object Storage:用于存储实际数据,如Amazon AWS S3。

二、数据模子


[*]时间(Time):数据天生时的时间戳。
[*]表(Measurement):表现一组有关联的时序数据。
[*]标签(Tag):用于创建索引的标签,如host、location等,可以提升查询性能。
[*]指标(Field):一般存放具体的时序数据,如user、system等,不会对指标数据创建索引。
[*]时序数据记载(Point):表现一条具体的时序数据记载,由时间线和时间戳唯一标识。
[*]保留策略(Retention Policy):界说InfluxDB的数据保留时长和数据存储的副本数。
[*]时间线(Series):表现表名、保留策略、标签集都相同的一组数据。
三、存储引擎

InfluxDB使用时序合并树(TSM)和时间序列索引(TSI)文件来有效地压缩和存储数据。
1、存储引擎概述

InfluxDB的存储引擎接纳了专为时间序列数据设计的存储格式,具有高效的存储效率和查询性能。它联合了预写式日志(WAL)、缓存、时间结构合并树(TSM)和时间序列索引(TSI)等多个组件,共同实现数据的快速写入、持久化存储和高效查询。
https://i-blog.csdnimg.cn/direct/7a0c8e0a5ca748b19aec13bc9176ff8a.png
2、存储引擎组件详解


[*]预写式日志(WAL)

[*]功能:用于在数据写入磁盘之条件供临时存储,并在存储引擎重启时保留数据。
[*]工作原理:当数据写入InfluxDB时,它首先被写入到WAL中,以确保数据的持久性。在数据成功写入磁盘后,WAL中的相应记载会被删除。

[*]缓存

[*]功能:提供数据的内存存储,加速数据写入和查询过程。
[*]工作原理:数据写入InfluxDB时,除了被写入WAL外,还会被写入到内存缓存中。缓存中的数据可以立即可查询,并定期写入到磁盘的TSM文件中。

[*]时间结构合并树(TSM)

[*]功能:是InfluxDB的核心存储结构,用于高效地存储和压缩时间序列数据。
[*]工作原理:TSM文件以列格式存储压缩后的系列数据。为了进步效率,存储引擎只存储系列值之间的差别,并使用列向存储方式,使得引擎可以按系列键读取数据并省略不须要的数据。随着TSM文件的累积,存储引擎会将它们合并并压缩成更高级别的TSM文件,以优化读取性能。

[*]时间序列索引(TSI)

[*]功能:为时间序列数据提供高效的索引机制,加速数据查询过程。
[*]工作原理:TSI存储按测量、标签和字段分组的系列键,使得数据库可以或许快速地回答哪些测量、标签、字段存在的问题。通过优化索引结构,TSI进步了查询性能,特殊是在处理大规模时间序列数据时表现优秀。

3、存储引擎工作流程


[*]数据写入

[*]数据通过HTTP POST请求发送到InfluxDB的/api/v2/write端点或/write 1.x兼容端点。
[*]数据被压缩并写入到WAL中以确保立即持久性。
[*]数据同时被写入到内存缓存中,并立即可查询。

[*]数据持久化

[*]内存缓存中的数据定期写入到磁盘的TSM文件中。
[*]随着TSM文件的累积,存储引擎将它们合并并压缩成更高级别的TSM文件。

[*]数据查询

[*]查询请求通过InfluxQL或Flux查询语言发起。
[*]存储引擎查询合并缓存数据和来自TSM文件的数据。
[*]查询效果根据请求进行优化和聚合后返回给用户。

4、存储引擎优化


[*]数据压缩

[*]InfluxDB接纳多种数据压缩技术,包括时间戳压缩、字段值压缩和字符串去重存储等,以镌汰存储占用并提升查询性能。

[*]索引优化

[*]TSI索引机制通过优化索引结构,进步了查询性能,特殊是在处理大规模时间序列数据时表现优秀。

[*]批量写入

[*]为了进步效率,大多数应用都以批次发送数据点。批处理中的点可以来自恣意数目的系列、测量和标签集。

四、其他特性


[*]简单高效的HTTP API:提供写入和查询接口。
[*]类似SQL的查询语言:针对时序数据量身订造,可以轻松查询聚合数据。
[*]数据保留策略:可以或许有效地使旧数据自动失效。
   综上所述,InfluxDB的架构具有高度的可扩展性和高性能,可以或许处理大规模的时序数据并提供实时分析功能。其数据模子简单直观,查询语言灵活强大,非常适合用于DevOps监控、应用指标和IoT传感器等范畴。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Influxdb 架构