#actor-model #streaming #kafka #redpanda #confluent

rstreams

具有actor模型风格的异步流处理工具包

1个不稳定版本

0.1.0 2024年4月25日

#285 in 并发

自定义许可证

2MB
1.5K SLoC

Rstreams

一个轻量级的、Rust原生、类似Kstreams的流处理库。

设计

该库旨在将流处理能力带到futures-core中异步迭代器Stream trait。我们提供了一系列流处理功能,如窗口、连接、表格等。我们还旨在提供一些Sinks和Sources,以便更容易地构建。

分类学

在这里,我们将介绍该库中找到的不同抽象。

Stream

流是一个异步迭代器。它是任何实现了Stream trait的结构。您可以通过映射、过滤、连接、拆分等方式在流上建立逻辑。当记录通过流时,它们将发生变异和过滤。这些流是懒加载的,需要执行器才能实际工作。如果没有执行器,如actor,流只是一个什么也不做的定义。

Table

表是一种流数据结构,它为每个传入的关键字保留最新状态。该结构可以像map/dictionary一样引用,并且还允许传入的消息通过流流向其他地方使用。

Actor

actor是一个执行流的tokio任务。它接受输入流并返回输出流。actor执行流上定义的工作。

当您想要构建复杂的流处理管道时,这些非常有用。一个用例是将处理分解成多个步骤,这样您就可以对部分结果进行处理。

Sink

Sinks接受流并将数据输出到其他地方。通常这些是rstreams程序中数据流的终止点。

源代码

Source从其他地方获取数据,并以流的形式返回这些数据。通常这些是rstreams程序中的流程开始处。

当前支持的功能

无状态操作符

tokio-stream/StreamExtfutures/StreamExt traits支持的任何内容,以及扩展这些traits的任何内容...

  • filter
  • map
  • fold
  • trottle
  • chunk
  • timeout
  • skip
  • cycle
  • split
  • 等等...

有状态操作符

  • 滑动窗口
  • 滚动窗口
  • 跳转窗口
  • 内连接

待定特性

  • 持久性
  • 左连接
  • R表

构建中

$ make

依赖项

~6–38MB
~545K SLoC