Zipper

zipper 负责连接由 source 产生的连续数据流和流函数 (stream functions),这些流函数对数据流进行操作。 要为 zipper 定义工作流配置 (workflow configuration),只需要创建一个 .yaml 文件 (参见下面的示例)。

YoMo 使用 QUIC 传输协议, 大大提高了数据传输的速度, 并支持通过 y3 codec 对不同数据类型的流进行编码/解码。

zipper

配置并运行 zipper

workflow.yaml

您可以在 .yaml 文件中为 zipper 定义工作流配置。 例如,这是一个简单的实时噪声监测系统的工作流:

# zipper/workflow.yaml
name: Service
host: localhost
port: 9000
functions:
  - name: Noise
  - name: MockDB
  • name: zipper 的名称。
  • hostport: 定义zipper 将监听的 host:port
  • functions: 流函数列表。在这个例子中,Noise 函数将监控噪音水平的变化,并在达到某个阈值时打印出警告信息。MockDB 将处理完的数据保存到数据库中。

要了解有关 yaml 的更多信息,可以阅读 Learn X in Y minutes, where X=yaml

运行 示例程序

1. 安装 YoMo CLI

请参考 说明

2. 运行 zipper

yomo serve -c ./zipper/workflow.yaml

Using config file: ./zipper/workflow.yaml
2021/11/11 16:09:54 [yomo:zipper] [AddWorkflow] 0, Noise
ℹ️   Running YoMo-Zipper...
2021/11/11 16:09:54 [yomo:zipper] Listening SIGTERM/SIGINT...
2021/11/11 16:09:54 [core:server](name:Service) Listening on: 127.0.0.1:9000, QUIC: [v1 draft-29]

3. 运行 stream-fn

go run ./sfn/main.go

2021/11/11 16:11:05 [core:client] use credential: [None]
2021/11/11 16:11:05 [core:client] ❤️  [Noise] is connected to YoMo-Zipper localhost:9000

4. 运行yomo-source

go run ./source/main.go

2021/11/11 16:12:01 [core:client] use credential: [None]
2021/11/11 16:12:01 [core:client] ❤️  [yomo-source] is connected to YoMo-Zipper localhost:9000
2021/11/11 16:12:01 [source] ✅ Emit {192.13399 1636618321242 localhost} to YoMo-Zipper
2021/11/11 16:12:01 [source] ✅ Emit {132.86566 1636618321547 localhost} to YoMo-Zipper
2021/11/11 16:12:01 [source] ✅ Emit {199.17604 1636618321851 localhost} to YoMo-Zipper

5. 结果

stream-function

stream-function 的终端将打印实时噪声分贝值,并在数值达到阈值时显示警告。

2021/11/11 16:12:01 >> [sfn] got tag=0x33, data={ 0x1.80449ap+07  0x17d0e0dbd5a 0x6c 0x6f 0x63 0x61 0x6c 0x68 0x6f 0x73 0x74}
2021/11/11 16:12:01 >> [sfn] got tag=0x33, data={ 0x1.09bb38p+07  0x17d0e0dbe8b 0x6c 0x6f 0x63 0x61 0x6c 0x68 0x6f 0x73 0x74}
2021/11/11 16:12:01 >> [sfn] got tag=0x33, data={ 0x1.8e5a22p+07  0x17d0e0dbfbb 0x6c 0x6f 0x63 0x61 0x6c 0x68 0x6f 0x73 0x74}
在 GitHub 上编辑本页面 更新时间: Mon, Aug 1, 2022