物联网系统以及各类互联网分布式系统,消息队列是经常用到的中间件技术。在物联网系统中,消息队列一般和规则引擎结合使用,规则引擎决定消息会进入消息队列的哪个topic。
消息队列一般与规则引擎结合使用
为啥要用规则引擎
规则引擎起源于基于规则的专家系统,是专家系统的一个分支,而专家系统可划分为人工智能的范畴。当时人们提出专家系统,是为了让计算机来应用人类专家的经验,并像人类一样进行推理,最终解决特定领域的问题。
规则引擎是一种嵌入在其他应用程序中的程序组件,实现了将业务决策从应用程序代码中分离的作用。业务人员可以使用预定义的规则语义模块编写业务规则。规则引擎解析业务规则,接受数据输入,并根据业务规则做出业务决策。通过编写业务规则,就可以改变数据的处理逻辑,而不需要重新编写应用程序的代码。
当然如果不使用规则引擎,物联网系统只基于消息队列也可以工作,但这样的设计不够灵活,使用规则引擎可以带来很多好处。
与代码不同,规则以不复杂的语言编写,甚至可以通过图形化的工具配置; 业务人员也可以轻松阅读和验证一套规则。
在规则引擎的帮助下,应用程序的扩展性可以变得非常强。如果需要频繁更改需求,可以添加新规则,而无需修改现有规则。
在物联网系统中,当设备基于Topic进行消息通信时,可以使用规则引擎,编写类似SQL的语句对Topic中的数据进行处理,并配置转发规则将处理后的数据转发到其他服务,可以非常方便的对设备的数据进行保存和分析。
AWS IoT
很多公司的物联网云平台都使用了规则引擎组件。以亚马逊的IoT架构为例,IoT设备内嵌SDK 使用MQTT、HTTP 或 WebSockets协议将设备连接到 AWS IoT设备网关。规则引擎验证发布到 AWS IoT的消息,并根据预先定义的业务规则将这些消息分发到另一台设备或云服务。
AWS IoT架构
规则引擎可以将消息分发到AWS Lambda(Serverless托管计算服务)、Amazon Kinesis(大规模流式数据处理)、Amazon S3(可扩展云存储)、Amazon DynamoDB(托管NoSQL数据库)、Amazon SimpleNotification(推送通知服务)、Amazon SimpleQueue Service(消息队列服务)。
AWS IoT与AWS云服务对接
常用规则引擎
规则引擎不仅仅用于物联网,还可用于很多领域,比如保险、信贷、支付等金融风控中。
- 常用的商业规则引擎包括:IBM ODM(ILOG)、Oracle Business Rules、Sparkling Logic Smarts、TopRules(中软国际)、明策智能决策、益博睿决策引擎等。
- 常用的开源规则引擎包括:JBoss Drools、Mandarax、OpenRules、JEOPS、InfoSapient、Apache Camel等。
- 其中Drools是使用最广泛的规则引擎。对于物联网应用来说,除了上述规则引擎以外,还有一种简单的类似规则引擎的服务IFTTT。
IFTTT的典型示例:当Uber到了,把灯亮起提醒我。
IFTTT是“if this then that”的缩写,主要是让用户的网络行为能够引发连锁反应。IFTTT旨在帮助人们利用各网站的开放API,将Facebook、Twitter等各个网站或应用衔接起来,完成特定的任务。已有很多人利用IFTTT服务搭建了属于自己的物联网应用。