ArkFlow v0.3.0 现已发布!

405 阅读8分钟

我们很高兴宣布 ArkFlow 的重大更新!ArkFlow 是一个基于 Rust 的高性能流处理引擎,致力于提供强大且易于使用的数据流处理能力。最新版本带来了许多令人兴奋的新功能以及旨在帮助您更高效地处理复杂数据流的重大改进。

在这篇博客文章中,我们将深入探讨这些新功能,从更广泛的数据源连接和通过自定义扩展实现更强大的处理能力,到标志性的分布式计算实验支持,以及持续的性能和可用性优化。

新升级:深入探讨增强的核心功能

ArkFlow 的核心组件[输入、处理、输出和缓冲]都得到了显著的增强和扩展。让我们来探索一下。

更广泛的输入连接:访问更多样化的数据流

为了使 ArkFlow 能够连接到更广泛的数据生态系统,我们引入了几个新的输入组件,并加强了现有组件的功能:

  • Websocket 输入(新):ArkFlow 现在可以直接订阅来自 WebSocket 连接的消息。这对于需要处理来自 Web 应用程序或其他实时前端推送数据场景的情况是一个重要的补充。
  • Nats 输入(新):添加了对 Nats 消息系统的支持,允许订阅来自 Nats 主题的消息。Nats 在现代云原生和微服务架构中因其高性能和简单性而受欢迎。集成 Nats 使 ArkFlow 能够更好地融入这些环境。其配置也得到了进一步优化。
  • Redis 输入(新):ArkFlow 现在也可以订阅来自 Redis 通道或列表的消息。作为广泛使用的缓存和消息代理,这个新的输入组件允许用户轻松利用现有的 Redis 数据流。其配置也已重构,以改进可用性。

更强大和高效的处理能力

数据的价值在于其流动和转换。新版本也带来了数据处理方面的重大改进:

  • JSON 处理器优化:JSON 处理性能已得到提升,特别是 json_to_arrow 转换逻辑。JSON 是一种普遍的数据格式,优化其处理,尤其是转换为列式存储格式 Arrow,可以显著提升下游 SQL 处理或其他分析任务的性能。
  • SQL 处理器增强和自定义 UDF 支持:SQL 处理器的配置和文档已进行重构。更令人兴奋的是,SQL 处理器现在支持自定义用户定义函数(UDF)。这项强大的功能允许用户注册自己的函数,极大地扩展了 SQL 的处理能力,以满足特定的业务逻辑和复杂的数据转换需求。为确保稳定性和易用性,UDF 注册机制也得到了改进,例如不允许注入同名的函数,并对注册函数进行了重构。
  • Protobuf 处理器添加了字段过滤功能:Protobuf 处理器现在支持字段过滤。Protobuf 对于结构化数据非常高效,字段过滤允许用户仅选择必要的数据,从而减少处理开销和数据量。
  • VRL(向量重映射语言)处理器介绍:ArkFlow 现在已内置支持 VRL 处理。VRL 是一种专门为转换可观察性数据(如日志和指标)而设计的语言,但其用途可以扩展到一般数据操作。

SON 到 Arrow 的转换优化,SQL 处理器的显著增强(尤其是 UDF 支持),以及 Protobuf 处理器的改进表明,ArkFlow 正专注于涉及结构化和半结构化数据的使用案例,其中转换灵活性(SQL、VRL、UDF)和性能(Arrow、Protobuf 过滤)都至关重要。

更灵活的输出和错误处理

处理后的数据需要可靠地传递到其目的地,错误处理同样重要。

  • Nats 输出(新功能):ArkFlow 现在支持将处理后的数据和错误数据发布到 Nats 主题。这补充了 Nats 输入组件,允许用户构建完整的 Nats 到 Nats 数据管道或与其他 Nats 消费者集成。为常规输出和错误输出提供一致的 Nats 支持,反映了我们对新组件集成完整性的考虑。
  • 增强错误输出机制:ArkFlow 已全面增强其错误输出机制。这为在处理过程中遇到问题的数据提供了更强大和灵活的管理和路由选项,从而提高了数据管道的弹性并简化了调试过程。

这种对 Nats 输入、输出和错误输出的对称添加,以及整体错误处理能力的改进,展示了 ArkFlow 在集成新组件和强化核心功能方面的全面策略,确保用户能够构建更可靠和可维护的数据处理链路。

更细粒度的缓冲和窗口功能

流处理系统中的缓冲机制对于处理背压、临时存储消息以及执行时间窗口聚合至关重要。

内存缓冲:ArkFlow 继续提供强大的内存缓冲功能,这对于高吞吐量场景和基本窗口聚合操作至关重要。

新增窗口缓冲组件!为满足更复杂的时间序列分析和事件流处理需求,ArkFlow 引入了三个专门的窗口缓冲组件:

  • 会话窗口:用于基于非活动时间段对数据进行分组,适用于分析用户会话或相关事件链。
  • 滑动窗口:提供连续重叠的窗口,允许平滑分析最近的数据,常用于移动平均计算等场景。
  • 滚动窗口:将数据划分为固定大小、不重叠的时间段,适用于固定间隔的聚合报告。

这些新的窗口缓冲机制极大地增强了 ArkFlow 处理时间敏感数据的灵活性和能力,使用户能够更精确地定义和执行复杂的数据聚合和分析逻辑。它们补充了现有的内存缓冲,为用户提供了更丰富的工具集来应对各种流处理挑战。

实验性引入分布式计算功能

最近 ArkFlow 开发中最值得注意的功能演进无疑是实验性的分布式计算支持。这表明 ArkFlow 正在向能够处理更大数据量和更苛刻处理负载的系统演进,允许任务分布在多个节点或工作单元上。

底层优化:持续提升性能和易用性

除了引入重型新组件外,ArkFlow 团队还不断优化现有功能,以提供更好的性能和用户体验。

我们再次强调 JSON 到 Arrow 的转换优化,这是性能提升的一个具体例子。

为了提升最终产品的性能,构建过程也得到了优化,例如,启用了链接时优化(LTO),将代码生成单元设置为 1,并将优化级别设置为 3。

插件机制已经重构,为未来更轻松的开发和集成自定义扩展铺平了道路,进一步强化了 ArkFlow 对可扩展性的承诺。文档更新也是一个持续投入的领域。为了提高文档的清晰度和可用性,我们已经将文档版本分开。这些持续的文档更新表明我们认识到良好的文档对于产品采用和易用性至关重要,尤其是在不断增加新功能的情况下。

项目结构包括 arkflow-plugin-examples,表明我们致力于帮助用户扩展系统。模块化设计和可扩展性是 ArkFlow 的核心特性。提供示例是一种降低用户编写自定义插件门槛的实用方法,这可以大大增强平台的核心团队所提供之外的功能,并促进一个充满活力的生态系统。

体验它:立即开始或升级您的 ArkFlow 之旅

我们鼓励您立即尝试最新版本的 ArkFlow!

对于熟悉 Rust 生态系统和常见配置实践的开发者来说,使用标准的 Rust 工具链(cargo)和常见的 YAML 配置,使得 ArkFlow 相对容易上手。

致谢:社区的力量

感谢 @xiaoziv 带来的 VRL 处理器。

加入 ArkFlow 社区,共同塑造未来

我们相信流动的数据可以创造更大的价值,并致力于构建一个庞大的数据处理生态系统,以降低数据处理门槛。ArkFlow 的开发依赖于社区支持:

  • 在我们的 GitHub 项目上 Star!
  • 积极参与 GitHub 讨论区,那里有公告、问答等板块。项目通过 GitHub 讨论区积极培养社区,这对于开源项目的成长、反馈和贡献至关重要。
  • 如果您有兴趣,也欢迎成为贡献者。

Discord: discord.gg/CwKhzb8pux

ArkFlow 致力于持续改进,未来还有更多令人兴奋的功能即将推出。敬请期待!

官网:arkflow-rs.com

github:github.com/arkflow-rs/…