欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Influxdb 架构

Influxdb 架构

2025/2/8 16:12:41 来源:https://blog.csdn.net/mqiqe/article/details/144204896  浏览:    关键词:Influxdb 架构

InfluxDB是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,其架构特点可以归纳为以下几点:
在这里插入图片描述

一、核心组件

  1. 数据摄取组件:
    • 负责接收用户写入的数据,并将其分片到不同的摄取器中。
    • 摄取器会对数据进行验证、分区、重复数据删除等处理,然后将数据保存为Parquet文件。
    • 摄取器还会更新目录,以通知其他组件新数据的到达。
  2. 数据查询组件:
    • 负责处理用户的查询请求,从目录中获取所需的元数据,并从对象存储中读取数据。
    • 查询器会构建并执行查询计划,以获取最佳查询性能。
    • 查询器还支持缓存元数据和数据,以提高查询效率。
  3. 数据压缩组件:
    • 负责将摄取器生成的小文件压缩为更少、更大且不重叠的文件,以优化查询性能。
  4. 存储组件:
    • Catalog:用于存储集群的元数据。
    • Object Storage:用于存储实际数据,如Amazon AWS S3。

二、数据模型

  1. 时间(Time):数据生成时的时间戳。
  2. 表(Measurement):表示一组有关联的时序数据。
  3. 标签(Tag):用于创建索引的标签,如host、location等,可以提升查询性能。
  4. 指标(Field):一般存放具体的时序数据,如user、system等,不会对指标数据创建索引。
  5. 时序数据记录(Point):表示一条具体的时序数据记录,由时间线和时间戳唯一标识。
  6. 保留策略(Retention Policy):定义InfluxDB的数据保留时长和数据存储的副本数。
  7. 时间线(Series):表示表名、保留策略、标签集都相同的一组数据。

三、存储引擎

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

1、存储引擎概述

InfluxDB的存储引擎采用了专为时间序列数据设计的存储格式,具有高效的存储效率和查询性能。它结合了预写式日志(WAL)、缓存、时间结构合并树(TSM)和时间序列索引(TSI)等多个组件,共同实现数据的快速写入、持久化存储和高效查询。
在这里插入图片描述

2、存储引擎组件详解

  1. 预写式日志(WAL)
    • 功能:用于在数据写入磁盘之前提供临时存储,并在存储引擎重启时保留数据。
    • 工作原理:当数据写入InfluxDB时,它首先被写入到WAL中,以确保数据的持久性。在数据成功写入磁盘后,WAL中的相应记录会被删除。
  2. 缓存
    • 功能:提供数据的内存存储,加速数据写入和查询过程。
    • 工作原理:数据写入InfluxDB时,除了被写入WAL外,还会被写入到内存缓存中。缓存中的数据可以立即可查询,并定期写入到磁盘的TSM文件中。
  3. 时间结构合并树(TSM)
    • 功能:是InfluxDB的核心存储结构,用于高效地存储和压缩时间序列数据。
    • 工作原理:TSM文件以列格式存储压缩后的系列数据。为了提高效率,存储引擎只存储系列值之间的差异,并使用列向存储方式,使得引擎可以按系列键读取数据并省略不必要的数据。随着TSM文件的累积,存储引擎会将它们合并并压缩成更高级别的TSM文件,以优化读取性能。
  4. 时间序列索引(TSI)
    • 功能:为时间序列数据提供高效的索引机制,加速数据查询过程。
    • 工作原理:TSI存储按测量、标签和字段分组的系列键,使得数据库能够快速地回答哪些测量、标签、字段存在的问题。通过优化索引结构,TSI提高了查询性能,特别是在处理大规模时间序列数据时表现优异。

3、存储引擎工作流程

  1. 数据写入
    • 数据通过HTTP POST请求发送到InfluxDB的/api/v2/write端点或/write 1.x兼容端点。
    • 数据被压缩并写入到WAL中以确保立即持久性。
    • 数据同时被写入到内存缓存中,并立即可查询。
  2. 数据持久化
    • 内存缓存中的数据定期写入到磁盘的TSM文件中。
    • 随着TSM文件的累积,存储引擎将它们合并并压缩成更高级别的TSM文件。
  3. 数据查询
    • 查询请求通过InfluxQL或Flux查询语言发起。
    • 存储引擎查询合并缓存数据和来自TSM文件的数据。
    • 查询结果根据请求进行优化和聚合后返回给用户。

4、存储引擎优化

  1. 数据压缩
    • InfluxDB采用多种数据压缩技术,包括时间戳压缩、字段值压缩和字符串去重存储等,以减少存储占用并提升查询性能。
  2. 索引优化
    • TSI索引机制通过优化索引结构,提高了查询性能,特别是在处理大规模时间序列数据时表现优异。
  3. 批量写入
    • 为了提高效率,大多数应用都以批次发送数据点。批处理中的点可以来自任意数量的系列、测量和标签集。

四、其他特性

  1. 简单高效的HTTP API:提供写入和查询接口。
  2. 类似SQL的查询语言:针对时序数据量身订造,可以轻松查询聚合数据。
  3. 数据保留策略:能够有效地使旧数据自动失效。

综上所述,InfluxDB的架构具有高度的可扩展性和高性能,能够处理大规模的时序数据并提供实时分析功能。其数据模型简单直观,查询语言灵活强大,非常适合用于DevOps监控、应用指标和IoT传感器等领域。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com