tokio_sky: 使用Rust+Tokio实现并发和多阶段数据摄取和数据处理


TokioSky 是一个流处理框架,用于构建并发和多阶段数据摄取和流处理,
通过 Rust+Tokio 构建并发和多阶段数据摄取和数据处理管道。,TokioSky 让开发者可以高效地使用数据,有效地使用来自不同来源(称为生产者)的数据,例如 Apache Kafka、Apache Pulsar 等。
灵感来自Elixir Broadway 

特征
TokioSky 承担了定义并发 GenStage 拓扑的负担,并提供了一个简单的配置 API,该 API 自动定义并发生产者、并发处理,从而实现了时间和成本高效的数据摄取和处理。它的特点:

  • 生产者- 数据管道的来源
  • 处理器- 进程消息也可以通过dispatcher
  • BatchProcessor处理组消息,用于上一阶段,没有下一阶段
  • Dispatcher - 三种模式的调度消息(RoundRobin, BroadCast, Partition)
  • 可定制- 可以使用内置的Producer, Processor,BatchProcessor 像Apache Kafka , Apache Pulsar或编写您的自定义Producer, Processor,BatchProcessor
  • 批处理- TokioSky 提供内置批处理,允许您按大小和/或时间对消息进行分组。这在 Amazon SQS 等系统中很重要,在这些系统中,批处理是消费消息的最有效方式,无论是在时间还是成本方面。 很好的例子 想象处理器必须检查数据库连接才能为每个插入操作插入一条记录,这非常低效,特别是如果我们正在处理大量插入。幸运的是,有了 TokioSky,我们可以使用这种技术,将操作分组为批次,也称为分区。查看示例
  • 动态批处理- TokioSky 允许开发人员根据自定义标准批处理消息。例如,如果您的管道需要根据 user_id、电子邮件地址等构建批次,请参阅示例
  • 排序和分区 - TokioSky 允许开发人员在工作人员之间对消息进行分区,保证同一分区内的消息按顺序处理。例如,如果您想保证与给定 user_id 相关的所有事件按顺序处理而不是同时处理,您可以使用带有 Partitionmode 选项的 Dispatcher。请参阅示例
  • 数据收集器- 当Producer您的应用程序的源是 Web 服务器并且需要从客户端请求中吸收数据时,可以使用“收集器”作为Producer异步吸收数据,然后馈送到管道参见示例
  • 优雅关闭- 首先终止生产者,等到所有处理器工作完成,然后关闭
  • 拓扑- 创建和同步组件

详细点击标题

这个项目属于通常被称为流处理框架的一类软件。此类别的其他成员是 Confluent 和 Samza。当您遇到以下三个基本问题之一时,您通常会使用此类别:1)您有一个事件流,并且您希望将其转换为某种聚合数据集(例如频率表),2)您想要装饰流带有附加数据。或 3) 你想协调多个流。一旦你开始沿着这条路走下去,你往往会增加此类操作的管道,并且框架可能开始变得有意义,特别是从可观察性的角度来看。