文档文档

处理引擎参考

处理引擎是一个嵌入式 Python 虚拟机,运行在 InfluxDB 3 Core 数据库服务器内部。它响应触发器和数据库事件执行 Python 代码,无需外部应用程序服务器或中间件。

工作原理

架构

处理引擎直接在 InfluxDB 3 Core 服务器进程内运行 Python 代码。这种设计提供了高性能和对数据库资源的直接访问。

  • 嵌入式执行:代码与数据库服务器在同一进程空间中运行
  • 直接数据访问:零拷贝数据访问
  • 事件驱动:响应数据库写入、计划事件和 HTTP 请求
  • 缓存集成:访问系统缓存,包括最后值和唯一值

处理引擎在同一个 Python 进程中运行所有插件。一个插件所做的更改可能会影响其他插件。

事件处理流程

当数据库中发生特定事件时,处理引擎会通过一致的序列来处理它们。

  1. 特定于事件类型的触发器会激活其插件。事件类型包括:
    • 写入特定表或所有表的 Data writes
    • 计划事件(基于时间或 cron 表达式)
    • 发送到已配置端点的 HTTP 请求
  2. 引擎会加载触发器配置中指定的关联插件
  3. 插件接收特定于触发器类型的上下文数据。
    • 写入触发器:写入的数据和表信息
    • 计划触发器:计划的调用时间
    • HTTP 触发器:包含方法、头部和主体的请求对象
  4. 插件处理接收到的数据,可以查询数据库,调用外部工具,并在数据库中写入和缓存数据。
  5. 执行完成,引擎返回等待状态。

关键组件

触发器系统

触发器根据特定条件将数据库事件连接到 Python 代码执行。

  • Data write triggers:在 WAL flush 事件、数据写入对象存储时,针对特定表或数据库中的所有表执行。
  • Scheduled triggers:按间隔或根据 cron 表达式运行。
  • HTTP triggers:响应到自定义端点的 HTTP 请求。

插件注册表

注册表管理处理引擎可用的所有 Python 代码。

  • 按文件名和位置索引插件。
  • 跟踪哪些插件被哪些触发器使用。
  • 管理插件版本和依赖关系。

内存管理

处理引擎实现了专门的内存处理,以确保稳定性和性能。

  • Execution isolation:每个插件在其自己的上下文中运行。
  • Cache system:在执行之间维护状态。
  • Resource limits:控制内存使用和执行时间。

性能特征

处理引擎专为高性能运行而设计,具有最小的开销。

  • Low latency:在亚毫秒级时间内激活触发器。
  • Efficient access:直接访问数据库,无需网络开销。
  • Controlled resources:通过配置限制内存和 CPU 使用。
  • Execution policies:提供同步或异步处理选项。

可靠性特性

处理引擎包含多项功能,以确保一致可靠的执行。

  • Error handling:配置失败场景的行为(记录、重试或禁用)。
  • Execution tracking:跟踪插件性能和资源使用情况。
  • State persistence:在服务器重启后持久化缓存状态。

扩展能力

通过多个内置机制扩展和定制处理引擎。

  • Package management:安装自定义 Python 依赖项。
  • Plugin distribution:通过 Git 存储库分发插件。
  • Shared API:提供一致的数据库操作接口。

有关设置和使用处理引擎的分步指南,请参阅开始使用插件文档。


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2