Skip to content

dongxin-scada/yomo-cluing-shake

Repository files navigation

YoMo在CluingOS中的实践

前言

YoMo 是一个开源编程框架,为边缘计算领域的低时延流式数据处理而打造,它底层基于 HTTP 3.0 的核心通讯层 IETF QUIC 协议通讯,以 Functional Reactive Programming 为编程范式,方便开发者构建可靠、安全的时序型数据的实时计算应用,并针对5G和WiFi-6场景优化,释放实时计算价值。

Y3是一种YoMo Codec的Golang实现,它描述了一个快速和低CPU损耗的编解码器,专注于边缘计算和流处理。查看 explainer 获取更多信息,了解更多与YoMo组合的方式。

CluingOS 是一款以 Kubernetes 为内核的云原生超融合工业物联平台,它的架构可以非常方便地使第三方应用与云原生生态组件进行集成、整合和安装,支持云原生应用在多云与多集群的统一分发和运维管理。。

在这个案例里,我们结合了YoMo+Y3的低延时流式处理与CluingOS分布式部署的特性,展现出如何开发部署一套高效的工业数据收集应用系统,体验从边缘端收集传感器数据,低延时高效地跨越2000多公里地传输到云端进行数据流式处理的全过程,基于这个案例你可以照葫芦画瓢地开发出满足自已需求的应用场景。

架构

YoMo_CluingOS

关于本案例更详细的信息,请阅读此文章: YoMo在CluingOS中的实践 或者 Wiki

如何本地运行

先决条件

Install Go

注意:如果发现有下载安装不了的情况,需要配置一下自已http代理:

export http_proxy=http://{ProxyIP}:{ProxyPort};export https_proxy=http://{ProxyIP}:{ProxyPort};

1. Clone Repository

$ git clone https://github.com/yomorun/yomo-cluing-shake.git
$ go get ./...

2. 安装YoMo CLI

$ go install github.com/yomorun/cli/yomo@latest

执行下面的命令,确保yomo已经在环境变量中,有任何问题请参考 YoMo 的详细文档

$ yomo version
YoMo CLI version: v0.0.7

也可以直接下载可执行文件: yomo-v0.0.7-x86_64-linux.tgzyomo-v0.0.7-aarch64-linux.tgz

3. 运行shake-zipper

$ yomo serve -c ./zipper/workflow.yaml
# 如果是本地调试,可以运行 `make debug_zipper`

4. 运行shake-flow

$ go run ./flow/app.go
# 如果是本地调试,可以运行 `make debug_flow`

5. 运行shake-sink

$ go run ./sink/main.go
# 如果是本地调试,可以运行 `make debug_sink`
# 访问 http://localhost:8000/public/ 查看效果

6. 运行shake-source

$ CONNECTOR_MQTT_AUTH_ENABLE=true \
CONNECTOR_MQTT_AUTH_USERNAME=yomo \
CONNECTOR_MQTT_AUTH_PASSWORD=yomo \
go run ./source/main.go
# 如果是本地调试,可以运行 `make debug_source`

7. 运行emitter

$ SHAKE_SOURCE_MQTT_PUB_INTERVAL=2000 go run ./cmd/emitter/main.go
# 如果是本地调试,可以运行 `make debug_emitter`

8. 运行shake-web

$ cd web
$ yarn
$ yarn start
# 如果是本地调试,可以运行 `make debug_web`

访问 http://localhost:3000/ 查看效果。

如何打包镜像

以打包yomorun/shake-source:latest为例:

# 构建本地镜像
$ docker build --no-cache -f Dockerfile.source -t local/shake-source:latest .
# 标记为你要发布的镜像
$ docker tag local/shake-source:latest yomorun/shake-source:latest
# 发布镜像
$ docker login -u yomorun -p {你的密码}
$ docker push yomorun/shake-source:latest
$ docker logout

源码已经为你提供了打包镜像所需的Dockerfile文件,打包出如下镜像:

  • yomorun/shake-zipper:latest
  • yomorun/shake-flow:latest
  • yomorun/shake-sink:latest
  • yomorun/shake-source:latest
  • yomorun/shake-emitter:latest
  • yomorun/shake-web:latest
  • yomorun/shake-web-proxy:latest

如何通过CluingOS发布服务

请参考相关文档:CluingOS部署,主要涉及环境变量和端口的配置,列出可配置的变量如下:

服务 环境变量 暴露端口
shake-zipper 9000/UDP
shake-flow SHAKE_ZIPPER_ADDR={shake-zipper的地址}
shake-sink SHAKE_ZIPPER_ADDR={shake-zipper的地址} 8000/TCP
shake-source SHAKE_ZIPPER_ADDR={shake-zipper的地址}
SHAKE_SOURCE_SERVER_ADDR=0.0.0.0:1883
CONNECTOR_MQTT_AUTH_ENABLE=true
CONNECTOR_MQTT_AUTH_USERNAME=yomo
CONNECTOR_MQTT_AUTH_PASSWORD=yomo
1883/TCP
shake-web HOST=0.0.0.0
REACT_APP_WEB_SOCKET_URL=http://{shake-sink ip}:{shake-sink port}
3000/HTTP
shake-emitter SHAKE_SOURCE_MQTT_BROKER_ADDR=tcp://{shake-source ip}:{shake-source port}
shake-web-proxy PROXY_PASS=http://{shake-web cpe-vpn-ip}:{shake-web port} 8989/HTTP

运行效果

effect