写在前面:
edgex的规则引擎rules engine从Geneva版本开始弃用,转而使用Kuiper Rules Engine
Kuiper Rules Engine
EMQ X Kuiper是新的EdgeX参考实现规则引擎(或边缘分析)实现(替换了包含Java Drools引擎的支持规则引擎)。
EMQ X Kuiper是一个轻量级的开源软件(Apache 2.0开源许可协议)软件包,用于在Go lang中实现的物联网边缘分析和流处理,可以在各种资源受限的边缘设备上运行。用户可以在边缘实现快速的数据处理并以SQL编写规则。 Kuiper规则引擎基于Source,SQL和Sink三个组件。
- Source: 流数据的源,例如来自MQTT服务器的数据。对于EdgeX,数据源是EdgeX消息总线,可以通过ZeroMQ或MQTT实现。
- SQL: SQL是处理指定业务逻辑的地方。 Kuiper提供了SQL语句来提取,过滤和转换数据。
- Sink: 用于将分析结果发送到特定目标,例如将分析结果发送到EdgeX的Command服务或云中的MQTT代理;
Kuiper中Source,SQL和Sink之间的关系如下所示。
Kuiper rules engine of EdgeX
扩展机制允许对Kuiper进行自定义,以分析和处理来自不同数据源的数据。默认情况下,对于EdgeX配置,Kuiper分析来自EdgeX消息总线的数据。 EdgeX提供抽象消息总线接口,并分别实现ZeroMQ和MQTT协议以支持不同微服务之间的信息交换。 Kuiper和EdgeX的集成主要包括以下内容:
-
扩展EdgeX消息总线源以支持从EdgeX消息总线接收数据。默认情况下,Kuiper侦听应用程序服务在其上发布消息的端口5566。核心数据服务中的数据由应用程序服务处理后,将流入Kuiper规则引擎进行处理。
-
从Core Contract Service读取数据类型定义,将EdgeX数据转换为Kuiper数据类型,然后根据用户指定的规则进行处理。
-
Kuiper支持将分析结果发送到其他接收器(Sink)
-
用户可以选择将分析结果发送到命令服务以控制设备;
-
可以将分析结果发送到EdgeX消息总线接收器,以供其他微服务进行进一步处理。
Learn more
- EdgeX Kuiper Rules Engine Tutorial: 10分钟的快速入门教程,读者可以参考本文开始尝试规则引擎。.
- Control the device with the EdgeX Kuiper rules engine: 本文介绍如何基于分析结果在EdgeX中使用Kuiper规则引擎来控制设备。
- 阅读 EdgeX Source 以获取更多详细信息,并进行类型转换。
- How to use the meta function to extract more information sent in the EdgeX message bus? 如何使用meta函数提取EdgeX消息总线中发送的更多信息?当设备服务将数据发送到总线时,还会发送一些其他信息,例如创建时间和ID。如果要在SQL语句中使用此信息,请参考本文。
- EdgeX Message Bus Sink: EdgeX消息总线接收器:本文档介绍了如何使用EdgeX消息总线接收器。如果您希望其他EdgeX服务使用您的分析结果,则可以通过此接收器以EdgeX数据格式发送分析数据,其他EdgeX服务可以订阅Kuiper接收器公开的新消息总线。
For more information on the EMQ X Kuiper project, please refer to the following resources.