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/StreamExt和futures/StreamExt traits支持的任何内容,以及扩展这些traits的任何内容...
- filter
- map
- fold
- trottle
- chunk
- timeout
- skip
- cycle
- split
- 等等...
有状态操作符
- 滑动窗口
- 滚动窗口
- 跳转窗口
- 内连接
待定特性
- 持久性
- 左连接
- R表
构建中
$ make
依赖项
~6–38MB
~545K SLoC