物聯網關鍵技術:規則引擎
物聯網系統以及各類互聯網分布式系統,消息隊列是經常用到的中間件技術。在物聯網系統中,消息隊列一般和規則引擎結合使用,規則引擎決定消息會進入消息隊列的哪個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服務搭建了屬于自己的物聯網應用。