物联网系统和各种互联网分布式系统,消息队列是经常使用的中间件技术。在物联网系统中,消息队列一般与规则引擎结合使用,规则引擎决定消息进入消息队列的主题。消息队列一般与规则引擎结合使用。为什么要使用规则引擎?规则引擎起源于基于规则的专家系统,是专家系统的一个分支,而专家系统又可分为人工智能的范畴。当时提出了专家系统,让计算机应用人类专家的经验,像人一样推理,最终解决特定领域的问题。规则引擎是嵌入在其他应用程序中的程序组件,它执行将业务决策与应用程序代码解耦的功能。业务人员可以使用预定义的规则语义模块编写业务规则。规则引擎解析业务规则,接受数据输入,根据业务规则进行业务决策。通过编写业务规则,可以在不重写应用程序代码的情况下改变数据处理逻辑。当然,如果不使用规则引擎,物联网系统也可以只基于消息队列工作,但这种设计不够灵活,使用规则引擎可以带来很多好处。与代码不同,规则是用一种简单的语言编写的,甚至可以通过图形工具进行配置;业务人员也可以轻松阅读和验证一套规则。在规则引擎的帮助下,应用程序的可扩展性可以变得非常强。如果需求经常变化,可以在不修改现有规则的情况下添加新规则。在物联网系统中,当设备基于Topic进行通信时,可以使用规则引擎编写类似SQL的语句对Topic中的数据进行处理,并配置转发规则将处理后的数据转发给其他服务,这很方便。保存和分析设备的数据。许多公司的AWSIoT物联网云平台都使用规则引擎组件。以亚马逊的物联网架构为例,物联网设备嵌入式SDK使用MQTT、HTTP或WebSockets协议将设备连接到AWS物联网设备网关。规则引擎验证发布到AWSIoT的消息,并根据预定义的业务规则将它们分发到另一个设备或云服务。AWSIoT架构规则引擎可以将消息分发到AWSLambda(无服务器托管计算服务)、AmazonKinesis(大规模流数据处理)、AmazonS3(可扩展云存储)、AmazonDynamoDB(托管NoSQL数据库)、AmazonSimpleNotification(推送通知服务)、AmazonSimpleQueueService(消息队列服务)。AWSIoT与AWS云服务连接的常用规则引擎规则引擎不仅应用于物联网,还应用于保险、信贷、支付等金融风控等诸多领域。常用的业务规则引擎包括:IBMODM(ILOG)、OracleBusinessRules、SparklingLogicSmarts、TopRules(中软国际)、明策智能决策、ExperianDecisionEngine等。常用的开源规则引擎包括:JBossDrools、Mandarax、OpenRules、JEOPS、InfoSapient、ApacheCamel等,其中Drools是使用最广泛的规则引擎。对于物联网应用,除了上述规则引擎外,还有一个简单的类似规则引擎的服务IFTTT。典型的IFTTT例子:当Uber到达时,开灯提醒我。IFTTT是“ifthisthenthat”的缩写,主要是让用户的网络行为引发连锁反应。IFTTT旨在帮助人们使用各种网站的开放API来连接各种网站或应用程序,如Facebook和Twitter,以完成特定的任务。许多人使用IFTTT服务构建了自己的物联网应用程序。
