InfluxDB 3 Core 和 Enterprise 架构亮点

导航至

简介

关注我们的时序数据创新者和开源社区成员将会知道,我们最近发布了两款新产品:InfluxDB 3 CoreInfluxDB Enterprise。InfluxDB 3 Core 是一款高性能的近期数据引擎,针对实时监控、数据收集和流分析用例进行了优化。InfluxDB 3 Enterprise 在 Core 的基础上构建,集成了历史分析和数据压缩,从而能够对更长的时间范围进行高效查询。它还增加了企业级功能,如高可用性、可扩展性和增强的安全性。

目前这两款产品都处于 alpha 测试阶段,但收到的反响非常积极,我们收到了来自社区的宝贵反馈,指导着我们前进的道路。为了回应大家的热情和对更深入了解的要求,这篇博客将探讨 InfluxDB3 Core 和 Enterprise 的架构和操作能力。让我们深入了解一下!

单节点/单进程

InfluxDB 3 Core 和 InfluxDB 3 Enterprise 具有直接的单节点和单进程架构。您可以将它们作为单个可执行文件运行,也可以在 Docker (Docker) 容器中部署它们。这种简化的设计使您可以在不到一分钟的时间内下载、安装和启动一个完全可操作的数据库和基于 Python (Python) 的处理引擎。

FDAP 堆栈

接下来,重要的是要强调 InfluxDB 3 Core 和 Enterprise 是构建在 FDAP 堆栈之上的,该堆栈旨在优化数据存储、处理和互操作性。FDAP 代表 Flight (Flight)、DataFusion (DataFusion)、Arrow (Arrow) 和 Parquet (Parquet)——这四项关键技术为 InfluxDB 3 产品线提供支持。

利用 FDAP 堆栈,InfluxDB 3 增强了与外部工具和库的互操作性、SQL 兼容性和闪电般的数据传输速度。

我建议查看我的同事 Andrew Lamb 的博客,以更深入地了解这个主题。

无盘架构

Core 和 Enterprise 提供灵活的存储选项,包括内存、磁盘和对象存储。当使用对象存储时,系统在无盘架构中运行,其中对象存储充当唯一的持久层,优先考虑简单性和存储效率。

以下是数据在到达对象存储之前在系统中移动的方式

  • 写入操作缓存在内存中,并每秒刷新到预写日志 (WAL) 文件。
  • 刷新的数据移动到 Arrow 格式的可查询缓冲区中,从而实现快速的内存分析。
  • 每十分钟,WAL 快照都会转换为 Parquet 文件,从而确保高效的数据存储、快速检索以及与外部分析工具的互操作性。

为了优化写入性能

  • 可以使用并行写入来最大限度地减少一秒延迟的影响。
  • 单线程客户端每秒仅限于一个写入请求,从而保持一致的摄取速率。

处理引擎/插件系统

架构的另一个关键组件是内置的处理引擎,它为 InfluxDB 3 Core 和 Enterprise 带来了新的可扩展性和控制水平。查看这篇博客,了解如何利用处理引擎。对于熟悉 1.x 的 Kapacitor (Kapacitor) 或 2.x 的 Flux Tasks (Flux 任务) 的用户来说,处理引擎是一个更强大且完全集成的引擎,用于在数据到达时、按需或按计划对数据执行操作——具有多种触发器类型。处理引擎使您能够通过强大的插件转换和规范化数据、组合多个来源、触发警报和通知、降采样、复制数据等等。想象一下在传入数据上运行 Python 脚本,而无需单独的服务器。现在,想象一下无缝地执行此操作,数据库内外的网络传输为零。这就是处理引擎,我们认为您会喜欢它的!

企业架构增强功能

InfluxDB 3 Core 和 InfluxDB 3 Enterprise 可以安装在小至 Raspberry Pi (Raspberry Pi) 的边缘设备上,使其成为嵌入式系统和基于传感器的工作负载的理想选择。同时,它们可以垂直扩展以处理非常大的工作负载。但是,如果您需要水平扩展或确保高可用性而不依赖于单个节点,该怎么办?这就是 InfluxDB 3 Enterprise 可以带您走得更远的地方。

InfluxDB 3 Enterprise 包含 Core 的所有功能,同时为商业部署提供无缝升级。与 Core 不同,它通过使用压缩过程来组织和编目 Parquet 文件数据,从而针对远程历史查询进行了优化。

高可用性

InfluxDB 3 Enterprise 专为各种工作负载的稳定性而构建,从在裸机或虚拟机到 Kubernetes (Kubernetes) 上运行。它提供高可用性、读取副本和专用压缩器,使其成为需要可靠性和可扩展性的企业级应用的理想选择。

Enterprise 通过其无盘架构,利用对象存储来实现高可用性。

  • 节点可以充当读取器和/或写入器,从而允许并发写入对象存储以进行水平摄取。
  • 节点写入专用区域,而下游读取器可以从多个节点和所有节点的压缩 Parquet 文件中拾取写入。

object storage

如果某个节点发生故障,另一个节点可以继续从故障节点的存储和压缩 Parquet 文件中读取,从而确保不间断地访问数据并保持系统可靠性。

读取副本

在 InfluxDB 3 Enterprise 架构中,读取副本支持几乎无限的读取副本,仅受对象存储请求容量的限制。

  • 少量节点处理写入,而无限的读取副本可扩展查询性能。
  • 读取副本充当处理引擎,从而在集群设置中提供灵活性。
  • 副本从所有指定的写入节点提取数据,压缩 Parquet 文件以进行高效查询。

在部署 InfluxDB 3 Enterprise 时,选择正确的集群设置取决于工作负载大小、可用性要求和性能目标。以下是三种推荐的配置。

最简单的高可用性:双节点设置

最简单的设置是双节点方法,其中两个节点都充当读取器和写入器,其中一个节点还运行压缩器。这种设计确保了容错——如果一个节点出现故障,系统将继续运行而不会立即停机。由于压缩器在读/写节点上运行,因此此设置非常适合优先考虑成本效率同时保持弹性的较小工作负载。

两个节点都利用相同的对象存储,从而实现长期存储,并为生产环境提供经济高效的高可用性解决方案。

三节点设置:用于扩展的专用压缩器

三节点设置是优化性能和可扩展性的推荐方法。两个节点处理读取和写入,而第三个节点专用于压缩,从而防止资源竞争并确保高效的数据处理。

这种配置允许压缩器独立扩展,从而根据实时工作负载需求分配资源。由于两个读写节点以全容量运行,因此查询和写入保持高性能,而压缩在隔离状态下运行,而不会影响其他节点。

此设置非常适合需要跨读取和写入保持一致性能的工作负载,从而确保可靠性,而与哪个节点持久化请求无关。它还有助于压缩资源的垂直扩展,以满足不断发展的数据需求。

五节点+ 集群:高吞吐量扩展

5 节点+ InfluxDB 3 Enterprise 集群通过添加专用写入节点来扩展三节点设置,从而提高摄取容量,并确保将数据高效持久化到对象存储。在下游,专用压缩器通过压缩文件来优化存储,而读取节点处理查询。

读取节点可以充当查询服务器或处理引擎,从而实现灵活、隔离的查询和处理工作负载。这种分离允许任意查询和处理设置,而不会相互干扰。

凭借用于高摄取吞吐量的多个写入节点、用于可扩展查询性能的多个读取节点以及用于隔离处理的专用压缩器,此设置非常适合需要水平扩展、查询隔离和高性能处理的大规模工作负载。

分享您的反馈

我们希望您喜欢更多地了解 Core 和 Enterprise 架构的一些亮点。请告诉我们您的想法!查看我们的 Core 入门指南Enterprise 入门指南,并在 Discord 的 #influxdb3_core 频道、Slack 的 #influxdb3_core 频道或我们的 社区论坛 上与我们的开发团队分享您的反馈。