物聯(lián)網(wǎng)關鍵技術:規(guī)則引擎
物聯(lián)網(wǎng)系統(tǒng)以及各類互聯(lián)網(wǎng)分布式系統(tǒng),消息隊列是經(jīng)常用到的中間件技術。在物聯(lián)網(wǎng)系統(tǒng)中,消息隊列一般和規(guī)則引擎結合使用,規(guī)則引擎決定消息會進入消息隊列的哪個topic。

消息隊列一般與規(guī)則引擎結合使用
為啥要用規(guī)則引擎
規(guī)則引擎起源于基于規(guī)則的專家系統(tǒng),是專家系統(tǒng)的一個分支,而專家系統(tǒng)可劃分為人工智能的范疇。當時人們提出專家系統(tǒng),是為了讓計算機來應用人類專家的經(jīng)驗,并像人類一樣進行推理,最終解決特定領域的問題。
規(guī)則引擎是一種嵌入在其他應用程序中的程序組件,實現(xiàn)了將業(yè)務決策從應用程序代碼中分離的作用。業(yè)務人員可以使用預定義的規(guī)則語義模塊編寫業(yè)務規(guī)則。規(guī)則引擎解析業(yè)務規(guī)則,接受數(shù)據(jù)輸入,并根據(jù)業(yè)務規(guī)則做出業(yè)務決策。通過編寫業(yè)務規(guī)則,就可以改變數(shù)據(jù)的處理邏輯,而不需要重新編寫應用程序的代碼。
當然如果不使用規(guī)則引擎,物聯(lián)網(wǎng)系統(tǒng)只基于消息隊列也可以工作,但這樣的設計不夠靈活,使用規(guī)則引擎可以帶來很多好處。
與代碼不同,規(guī)則以不復雜的語言編寫,甚至可以通過圖形化的工具配置; 業(yè)務人員也可以輕松閱讀和驗證一套規(guī)則。
在規(guī)則引擎的幫助下,應用程序的擴展性可以變得非常強。如果需要頻繁更改需求,可以添加新規(guī)則,而無需修改現(xiàn)有規(guī)則。
在物聯(lián)網(wǎng)系統(tǒng)中,當設備基于Topic進行消息通信時,可以使用規(guī)則引擎,編寫類似SQL的語句對Topic中的數(shù)據(jù)進行處理,并配置轉發(fā)規(guī)則將處理后的數(shù)據(jù)轉發(fā)到其他服務,可以非常方便的對設備的數(shù)據(jù)進行保存和分析。
AWS IoT
很多公司的物聯(lián)網(wǎng)云平臺都使用了規(guī)則引擎組件。以亞馬遜的IoT架構為例,IoT設備內嵌SDK 使用MQTT、HTTP 或 WebSockets協(xié)議將設備連接到 AWS IoT設備網(wǎng)關。規(guī)則引擎驗證發(fā)布到 AWS IoT的消息,并根據(jù)預先定義的業(yè)務規(guī)則將這些消息分發(fā)到另一臺設備或云服務。

AWS IoT架構
規(guī)則引擎可以將消息分發(fā)到AWS Lambda(Serverless托管計算服務)、Amazon Kinesis(大規(guī)模流式數(shù)據(jù)處理)、Amazon S3(可擴展云存儲)、Amazon DynamoDB(托管NoSQL數(shù)據(jù)庫)、Amazon SimpleNotification(推送通知服務)、Amazon SimpleQueue Service(消息隊列服務)。

AWS IoT與AWS云服務對接
常用規(guī)則引擎
規(guī)則引擎不僅僅用于物聯(lián)網(wǎng),還可用于很多領域,比如保險、信貸、支付等金融風控中。
- 常用的商業(yè)規(guī)則引擎包括:IBM ODM(ILOG)、Oracle Business Rules、Sparkling Logic Smarts、TopRules(中軟國際)、明策智能決策、益博睿決策引擎等。
 - 常用的開源規(guī)則引擎包括:JBoss Drools、Mandarax、OpenRules、JEOPS、InfoSapient、Apache Camel等。
 - 其中Drools是使用最廣泛的規(guī)則引擎。對于物聯(lián)網(wǎng)應用來說,除了上述規(guī)則引擎以外,還有一種簡單的類似規(guī)則引擎的服務IFTTT。
 

IFTTT的典型示例:當Uber到了,把燈亮起提醒我。
IFTTT是“if this then that”的縮寫,主要是讓用戶的網(wǎng)絡行為能夠引發(fā)連鎖反應。IFTTT旨在幫助人們利用各網(wǎng)站的開放API,將Facebook、Twitter等各個網(wǎng)站或應用銜接起來,完成特定的任務。已有很多人利用IFTTT服務搭建了屬于自己的物聯(lián)網(wǎng)應用。















 
 
 








 
 
 
 