规则引擎 | 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
函数计算FC,每月15万CU 3个月
简介: 快速学习 规则引擎

开发者学堂课程【物联网平台开发全栈教程规则引擎学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/562/detail/7696


规则引擎


内容介绍

一、规则引擎最主要的作用

二、数据被 LP 平台接收后

三、规则引擎使用方法


前言:

本节主要讲解整个规则引擎架构,了解完架构后会知道基于阿里云 LoT Hub,根据规则引擎的架构无需购买服务器就可以构建分布式架构,实现事实的采集、计算存储的全栈服务。数据被 LP 平台接收后,会进行打包,要知道打包之后的效果,这是用规则引擎进行数据采集时要用到的。


一、规则引擎最主要的作用

规则引擎最主要的作用根据创建的规则将数据传播到任何地方比如:

1、可以转发到 RDS、表格存储、TSDB 中进行存储。

或者可以转发到数据中心进行大数据的离线计算。

2、可以转发到 DataHub 中,使用 Streamcompute 进行流计算,使用 Maxcompute 进行大规模离线计算。

3、可以转发到函数计算进行事件计算。

4、可以转发到另Topic 中实现 M2M 通信。

5、可以转发到消息队列 MQ、消息服务实现高可靠消费数据·

这次做的实操就是转发到另Topic 中实现 M2M 通信。

使用规则引擎后,无需购买服务器部署分布式架构,即可实现采集+计算+存储的全栈服务。

image.png

首先第一步:互联网数据的采集,比如这一系列课程基于小硬件,这个硬件采集温度,采集这个数据后进入到 lot hub后就可以配置规则引擎,将数据转发出去转发到 lot hub

lot hub 的意思就是 M2M时转发到另一个 topic,转发到数据库,转发到大数据中心,转发到表格存储,转发到日志服务系统。

在系统设计的时候希望设备运行状态被人所了解,因为当部署了成百上千的设备后,并不会知道某一台设备的工作状况,比如有没有遭雷击,电压正不正常等等,它的工作日志就可以通过规则引擎专门将工作日志转发到日志服务里,可以通过阿里云日志服务分析、管理、控制设备、系统目前状况。

数据到流计算之后可以再次进行深加工后进行转发,到最后数据展示、在线服务、数据分析、数据储存、业务加工,就可以进行一系列的操作了。

无需购买服务器部署分布式架构,即可实现采集+计算+存储的全栈服务。


二、数据被 LP 平台接收后

数据上传到 lot hub 之后,平台会对数据进行打包

主要针对的就是高级版的讲解。数据格式如下:

{

"iotId":"4z819VQHk6VSLmmBJfrf00107ee200",

"productKey":"1234556554""

"deviceName" : " deviceName1234"

"gmtCreate":1510799670074,

"deviceType" :"Ammeter".

"items" : {

"Power" : {

"value" :" on"

"time":1510799670074

"Position" : [

"time":1510292697470,

"value": { [

"latitude" : 39.9

"longitude":116.38

}

}

往服务器上丢数据,最原始的就是 key1: 后边跟上温度,上传之后平台就会加上以上信息,在 item 里会有 keykey 里面有 value timetime 是时间戳,是哪一个时刻上报了什么东西,被平台成功接收就会有 item 及里面的温度、时间等,但是此时就没有 position 以下的相关信息了。

在配置规则引擎时,想读这个物理设备上传的温度是多少,就先读 item,再读 item 里面的 Indoor Temperature,再读 value,事例如下:

SELECT items.IndoorTemperature.value as Temperature

FROM"/sys/a1mKVbdAm25/klekBohKYzrD55OANsFc/thing/event/property/post"

读它的温度,items.IndoorTemperature.下面的.value 才是想要读取的,这里 Temperature sql 语句,在用户指南中有 sql 表达式介绍,里面函数列表是写 SQL 表达式时支持的一些函数。

作为初学者想要学规则引擎怎么用,在 SQL 表达式中有使用实例,里面有很多实例,其中转发数据到函数计算是很有用的:

image.png

函数计算就是在云端的一段代码,极大增强了数据处理的灵活性,规则引擎数据放在函数计算里,函数计算是自己写的函数,将数据拿到手之后经过计算直接可以扔到任何地方,甚至是三方云,极大提高了物联网平台的灵活性,(注意函数计算是收费服务)。


三、规则引擎使用方法

规则引擎在用之前,因为是 M2M,所以要建两个设备,查看设备参数利用小工具输入三个参数计算,计算好以后填到 connection profile 里的 client id,填完之后点击 connect

现在已经有一个物理设备是物联网温度继电器,然后用 MQTT.FX-1.3.1 模拟上线了一个设备叫做 Test_Json_123456 ,可以看到 Test_Json_123456里一堆设备的 topic 列表,想要实现 M2M,意思是想让真实的温度(物联网温度继电器)发给 Test_Json_123456,可能a设备放在新疆,b 设备放在了海南,如果想让海南的温度让新疆人知道,此时让数据快速可靠的传播方式是通过规则引擎。

1.  配置规则引擎

如果是第一次用,点击创建规则填入名称和描述,点击管理首先要添加一条转发数据的目的地,点击添加操作发布到另一个 topictopic 选择 sys,设备是物联网温度继电器,转发给 Test_Json_123456以及具体的 topic,如下图:

image.png

点击确定,将 topic 复制到 MQTT.FX-1.3.1中选择 subscribe 粘贴进去,点击 subscribe,订阅这个 topic,看一下平台有没有给这个 topic 发任何的东西过来。此时再添加一个编辑数据:

image.png

上报属性里面可能有好多属性,只是现在用到的是 indoor Temperature,此时需要字段且很重要,理论上按照正常理解,它的字段就是 indoorTemperature,后面加这么多是因为上面说的数据格式。

数据格式应该如下:

{

"iotId":"4z819VQHk6VSLmmBJfrf00107e****",

"requestId":"2",

"productKey":"al12345****",

"deviceName":"deviceName1234",

"gmtCreate":1510799670074,

"deviceType":"Ammeter",

"items":{

"Power":{

"value":"on",

"time":1510799670074

},

"Position":{

"time":1510292697470,

"value":{

"latitude":39.9,

"longitude":116.38

}

}

},

"checkFailedData":{

"attribute_8":{

"time": 1510292697470,

"value": 715665571,

"code":6304,

"message":"tsl parse: params not exist -> attribute_8"

}

}

}

数据格式一旦被 lot 平台所接受,平台就会对它进行数据的二次打包,打包之后 indoorTemperature 就到了 power 的位置,温度就放倒了 value 后面,所以就是 item.indoorTemperature.value 才是想要的温度。As 就是将字段扔出去的时候起的名字,比如这里起的名字是 Temperature(本身是 indoorTemperature)然后点击确定,之后启动规则。

规则启动成功后就可以回到 MQTT.FX-1.3.1 进行接收了,会显示传过来的温度:{"Temperature": 32.8} 十秒传递一次。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
运维 JavaScript Java
govaluate 规则引擎
govaluate 规则引擎
2263 0
govaluate 规则引擎
|
Java
规则引擎选型及应用
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程。 使用规则引擎可以把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。
24034 0
|
消息中间件 监控 Java
消息队列和应用工具产品体系-ARMS 监控种类简介(2)
消息队列和应用工具产品体系-ARMS 监控种类简介(2)
消息队列和应用工具产品体系-ARMS 监控种类简介(2)
|
存储 监控 前端开发
消息队列和应用工具产品体系-ARMS 监控种类简介(1)
消息队列和应用工具产品体系-ARMS 监控种类简介(1)
|
算法 Java JavaScript
规则引擎
我是阿里巴巴做规则引擎相关工作多年的java工程师一枚,本职工作就是通过规则引擎、规则管理平台等技术输出,来应对阿里巴巴复杂多变的上层规则相关业务的支持。限于技术保密、安全等因素,本文只讲一些个人对“规则引擎”的看法,欢迎大家一起探讨。
25954 1
|
消息中间件 存储 Prometheus
消息队列 RocketMQ 遇上可观测:业务核心链路可视化
本篇文章主要介绍 RocketMQ 的可观测性工具在线上生产环境的最佳实践。RocketMQ的可观测性能力领先业界同类产品,RocketMQ 的 Dashboard 和消息轨迹等功能为业务核心链路保驾护航,有效应对线上大规模生产使用过程中遇到的容量规划、消息收发问题排查以及自定义监控等场景。
349 0
消息队列 RocketMQ  遇上可观测:业务核心链路可视化
1、Drools规则引擎-什么是规则引擎
### 什么是规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件, 实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。 接受数据输入,解释业务规则,并根据业务规则做出业务决策。
515 0
1、Drools规则引擎-什么是规则引擎
|
存储 安全 API
【视频】1集成实践-消息模块集成讲解|学习笔记
快速学习【视频】1集成实践-消息模块集成讲解。
【视频】1集成实践-消息模块集成讲解|学习笔记
EMQ
|
运维 监控 数据可视化
规则引擎集成新的可观测性框架
十月,EMQX在产品质量和用户体验方面进行了进一步提升;此外,EMQX Cloud在订阅渠道、部署地区、操作体验等方面均有更新。
EMQ
234 0
规则引擎集成新的可观测性框架
|
设计模式 数据挖掘
2、Drools规则引擎-为什么使用规则引擎
上文我们说过,规则引擎其实就是将if else全部给抽离出来了。但是这就是我们的规则引擎的全部内容吗?规则放在哪里都是放,为什么一定要拿规则引擎来抽离呢?肯定是规则引擎给我们解决了某些问题。本文主要讲的就是规则引擎是解决什么的方案
256 0