当前位置: 首页 > article >正文

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传感器等领域。


http://www.kler.cn/a/421153.html

相关文章:

  • (一)Linux下安装NVIDIA驱动(操作记录)
  • 前端开发 之 15个页面加载特效上【附完整源码】
  • 二百七十八、ClickHouse——将本月第一天所在的那一周视为第一周,无论它是从周几开始的,查询某个日期是本月第几周
  • 【Nativeshell】flutter的pc跨平台框架学习记录<二> 窗口间通信
  • 【第 1 章 初识 C 语言】1.7 编程语言的分类:编译型语言与解释型语言
  • CSS变量用法及实践
  • 华为HarmonyOS 让应用快速拥有账号能力 -- 3 获取用户手机号
  • C++中protobuf Message与JSON的互相转换
  • Android V GtsPermissionTestCases
  • 观成科技:寄生虫(APT-C-68)APT组织加密通信分析
  • 低资源部署 KubeSphere 4.1.2:2 核 4G 极简云原生实战
  • 16asm - 寻址
  • 电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用
  • 面向人工智能安全的多维应对策略
  • OpenCV圆形标定板检测算法findCirclesGrid原理详解
  • 算法训练-搜索
  • C++备忘录模式
  • 汽车智能扭矩控制系统的未来发展趋势分析
  • 2024年认证杯SPSSPRO杯数学建模A题(第一阶段)保暖纤维的保暖能力全过程文档及程序
  • 显卡(Graphics Processing Unit,GPU)光线追踪详细介绍
  • HTML5+JavaScript实现连连看游戏
  • 2025年软考开考科目有哪些?中高级科目哪个容易拿证?
  • 基于“微店 Park”模式下 2+1 链动模式商城小程序的创新发展与应用研究
  • 24年某马最新大数据相关软件安装文档
  • 每日小知识
  • autogen-agentchat 0.4.0.dev8版本的安装