#流处理 #异步流 # #kafka #异步 #套接字 #数据流

bin+lib sea-streamer-socket

🌊 SeaStreamer 无后端依赖的 Socket API

5 个版本 (3 个破坏性更新)

0.5.0 2024年4月24日
0.3.0 2023年7月11日
0.2.1 2023年5月7日
0.2.0 2023年3月25日
0.1.0 2023年3月2日

#897并发

Download history 1096/week @ 2024-04-20 635/week @ 2024-04-27 953/week @ 2024-05-04 861/week @ 2024-05-11 911/week @ 2024-05-18 702/week @ 2024-05-25 655/week @ 2024-06-01 664/week @ 2024-06-08 711/week @ 2024-06-15 581/week @ 2024-06-22 610/week @ 2024-06-29 621/week @ 2024-07-06 728/week @ 2024-07-13 611/week @ 2024-07-20 454/week @ 2024-07-27 408/week @ 2024-08-03

每月2,260 次下载
3 个 Crates 中使用 (通过 sea-streamer)

MIT/Apache

225KB
5K SLoC

sea-streamer-socket: 无后端依赖的 Socket API

类似于 SeaORM 允许您为不同的数据库构建应用程序,SeaStreamer 允许您为不同的流服务器构建流处理器。

虽然 sea-streamer-types Crates 提供了基于特质的优雅抽象,但这个 Crates 提供了具体的类型 API,这样您的程序就可以在运行时从用户选择的任何 SeaStreamer 后端进行流处理。

这使得您能够做一些很酷的事情,例如在本地生成数据并将其流式传输到 Redis / Kafka。或者相反,从服务器获取数据并在本地处理。所有这些都无需重新编译流处理器。

如果您始终只使用一个后端,可以直接依赖 sea-streamer-redis / sea-streamer-kafka

提供了一些小型的 CLI 程序进行演示。让我们首先设置它们

# The `clock` program generate messages in the form of `{ "tick": N }`
alias clock='cargo run --package sea-streamer-stdio  --features=executables --bin clock'
# The `relay` program redirect messages from `input` to `output`
alias relay='cargo run --package sea-streamer-socket --features=executables,backend-kafka,backend-redis --bin relay'

以下是将数据从 Stdio 流向 Redis / Kafka 的方法。我们使用 clock 生成消息,然后将它管道到 relay,然后将其流式传输到 Redis / Kafka

# Stdio -> Redis
clock -- --stream clock --interval 1s | \
relay -- --input stdio:///clock --output redis://127.0.0.1:6379/clock
# Stdio -> Kafka
clock -- --stream clock --interval 1s | \
relay -- --input stdio:///clock --output kafka://127.0.0.1:9092/clock

以下是 Redis ↔️ Kafka 之间的流式传输方法

# Redis -> Kafka
relay -- --input redis://127.0.0.1:6379/clock --output kafka://127.0.0.1:9092/clock
# Kafka -> Redis
relay -- --input kafka://127.0.0.1:9092/clock --output redis://127.0.0.1:6379/clock

以下是 重放 Kafka / Redis 中的流的方法

relay -- --input redis://127.0.0.1:6379/clock --output stdio:///clock --offset start
relay -- --input kafka://127.0.0.1:9092/clock --output stdio:///clock --offset start

依赖项

~3–21MB
~264K SLoC