处理引擎参考
处理引擎是一个嵌入式 Python 虚拟机,运行在 InfluxDB 3 Core 数据库服务器内部。它响应触发器和数据库事件执行 Python 代码,无需外部应用程序服务器或中间件。
工作原理
架构
处理引擎直接在 InfluxDB 3 Core 服务器进程内运行 Python 代码。这种设计提供了高性能和对数据库资源的直接访问。
- 嵌入式执行:代码与数据库服务器在同一进程空间中运行
- 直接数据访问:零拷贝数据访问
- 事件驱动:响应数据库写入、计划事件和 HTTP 请求
- 缓存集成:访问系统缓存,包括最后值和唯一值
处理引擎在同一个 Python 进程中运行所有插件。一个插件所做的更改可能会影响其他插件。
事件处理流程
当数据库中发生特定事件时,处理引擎会通过一致的序列来处理它们。
- 特定于事件类型的触发器会激活其插件。事件类型包括:
- 写入特定表或所有表的 Data writes
- 计划事件(基于时间或 cron 表达式)
- 发送到已配置端点的 HTTP 请求
- 引擎会加载触发器配置中指定的关联插件。
- 插件接收特定于触发器类型的上下文数据。
- 写入触发器:写入的数据和表信息
- 计划触发器:计划的调用时间
- HTTP 触发器:包含方法、头部和主体的请求对象
- 插件处理接收到的数据,可以查询数据库,调用外部工具,并在数据库中写入和缓存数据。
- 执行完成,引擎返回等待状态。
关键组件
触发器系统
触发器根据特定条件将数据库事件连接到 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 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。