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中的实践 或者 Wiki。
注意:如果发现有下载安装不了的情况,需要配置一下自已http代理:
export http_proxy=http://{ProxyIP}:{ProxyPort};export https_proxy=http://{ProxyIP}:{ProxyPort};
$ git clone https://github.com/yomorun/yomo-cluing-shake.git
$ go get ./...
$ 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.tgz, yomo-v0.0.7-aarch64-linux.tgz
$ yomo serve -c ./zipper/workflow.yaml
# 如果是本地调试,可以运行 `make debug_zipper`
$ go run ./flow/app.go
# 如果是本地调试,可以运行 `make debug_flow`
$ go run ./sink/main.go
# 如果是本地调试,可以运行 `make debug_sink`
# 访问 http://localhost:8000/public/ 查看效果
$ CONNECTOR_MQTT_AUTH_ENABLE=true \
CONNECTOR_MQTT_AUTH_USERNAME=yomo \
CONNECTOR_MQTT_AUTH_PASSWORD=yomo \
go run ./source/main.go
# 如果是本地调试,可以运行 `make debug_source`
$ SHAKE_SOURCE_MQTT_PUB_INTERVAL=2000 go run ./cmd/emitter/main.go
# 如果是本地调试,可以运行 `make debug_emitter`
$ 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部署,主要涉及环境变量和端口的配置,列出可配置的变量如下:
服务 | 环境变量 | 暴露端口 |
---|---|---|
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 |