|
hace 5 años | |
---|---|---|
.github | hace 5 años | |
common | hace 5 años | |
deploy | hace 5 años | |
docs | hace 5 años | |
etc | hace 5 años | |
examples | hace 5 años | |
fvt_scripts | hace 5 años | |
plugins | hace 5 años | |
xsql | hace 5 años | |
xstream | hace 5 años | |
.gitignore | hace 5 años | |
Dockerfile-by-corss-build | hace 5 años | |
LICENSE | hace 5 años | |
Makefile | hace 5 años | |
README-CN.md | hace 5 años | |
README.md | hace 5 años | |
edgex_pub | hace 5 años | |
edgex_server | hace 5 años | |
go.mod | hace 5 años |
EMQ X Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 Apache Spark,Apache Storm 和 Apache Flink 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于源 (Source)
,SQL (业务逻辑处理)
, 目标 (Sink)
的规则引擎来实现边缘端的流式数据处理。
应用场景
Kuiper 可以运行在各类物联网的边缘使用场景中,比如工业物联网中对生产线数据进行实时处理;车联网中的车机对来自汽车总线数据的即时分析;智能城市场景中,对来自于各类城市设施数据的实时分析。通过 Kuiper 在边缘端的处理,可以提升系统响应速度,节省网络带宽费用和存储成本,以及提高系统安全性等。
超轻量
跨平台
完整的数据分析
高可扩展性
提供插件扩展机制,可以支持在源 (Source)
,SQL 函数
, 目标 (Sink)
三个方面的扩展
SQL 函数:内置支持60+常见的函数,提供扩展点可以扩展自定义函数
管理能力
与 EMQ X Edge 集成
提供了与 EMQ X Edge 的无缝集成,实现在边缘端从消息接入到数据分析端到端的场景实现能力
从 https://hub.docker.com/r/emqx/kuiper/tags
拉一个 Kuiper 的 docker 镜像。
设置 Kuiper 源为一个 MQTT 服务器。本例使用位于 tcp://broker.emqx.io:1883
的 MQTT 服务器, broker.emqx.io
是一个由 EMQ 提供的公有MQTT 服务器。
docker run -d --name kuiper -e MQTT_BROKER_ADDRESS=tcp://broker.emqx.io:1883 emqx/kuiper:$tag
broker.emqx.io
,这些数据将会被在本地运行的 Kuiper docker 实例中处理。以下的步骤将创建一个名字为 demo
的流,并且数据将会被发送至 devices/device_001/messages
主题,这里的 device_001
可以是别的设备,比如 device_002
,所有的这些数据会被 demo
流订阅并处理。 -- In host
# docker exec -it kuiper /bin/sh
-- In docker instance
# bin/cli create stream demo '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="devices/+/messages")'
Connecting to 127.0.0.1:20498...
Stream demo is created.
# bin/cli query
Connecting to 127.0.0.1:20498...
kuiper > select * from demo where temperature > 30;
Query was submit successfully.
tcp://broker.emqx.io:1883
的主题 devices/device_001/messages
。以下例子使用 mosquitto_pub
。 # mosquitto_pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
bin/cli query
窗口里,请试着发布另外一条温度
小于30的数据,该数据将会被 SQL 规则过滤掉。 kuiper > select * from demo WHERE temperature > 30;
[{"temperature": 40, "humidity" : 20}]
如有任何问题,请查看日志文件 log/stream.log
。
如果想停止测试,在bin/cli query
命令行窗口中敲 ctrl + c
,或者输入 exit
后回车
想了解更多 EMQ X Kuiper 的功能?请参考以下关于在边缘端使用 EMQ X Kuiper 与 AWS / Azure IoT 云集成的案例。
{"temperature": 10, "humidity" : 90}
, 温度与湿度的值是介于 0 ~ 100 之间的随机整数值SELECT * FROM demo WHERE temperature > 50
设备 | 每秒发送消息数 | CPU 使用 | 内存 |
---|---|---|---|
树莓派 3B+ | 12k | sys + user: 70% | 20M |
AWS t2.micro (x86: 1 Core * 1 GB) Ubuntu 18.04 |
10k | sys + user: 25% | 20M |
编译二进制:
编译二进制文件: $ make
编译支持 EdgeX 的二进制文件: $ make build_with_edgex
安装文件打包:
安装文件打包:: $ make pkg
支持 EdgeX 的安装文件打包: $ make pkg_with_edgex
Docker 镜像:$ make docker
Docker 镜像默认支持 EdgeX
如果您要实现交叉编译,请参考此文档。