EdgeXFoundry最開始是由Dell公司運行IOT網關上構建的系統,後來開源出來。EdgeXFoundry就像是硬件與軟件之間的一箇中間件,南向鏈接各類設備和傳感器,北向鏈接應用程序。EdgeXFoundry框架有四個服務層和兩個基礎系統服務,分別是設備服務層(Device Service),核心服務層(Core Service),支持服務層(Supporting Service)還有應用服務層(Application Services);以及安全服務(Security)和系統管理服務(Management)。數據庫
EdgeXFoundry系統架構圖安全
Device Service在系統架構圖中位於最底層的位置,是與硬件(設備和傳感器)交互的一層。南向的設備如機房服務器、精密空調、路由器等等,傳感器如溫溼度計、煙感器等等。服務器
Device Service設備服務能夠經過與每一個設備之間的協議進行通訊,設備服務將友IoT對象生成和通訊的數據轉換爲通用的EdgeXFoundry數據結構,並將轉換後的數據發送到核心服務層(Core Service)以及其餘層的微服務。簡單來講,Device Service負責採集設備數據,完事將數據發送給其餘層或其餘服務;設備服務充當EdgeX與實際設備和傳感器的接口數據結構
Device Service(設備服務)在首次啓動的時候會作這些事情:架構
設置設備服務(Device Service)將經過Edgex管理設備框架
這時候我問各位bro一個問題,Device Service能夠單獨運行嗎,若是能要怎麼單獨運行?單獨運行以後如何跟Core Service進行數據傳輸?答案是確定的。EdgeX的微服務的單個實例能夠分佈在多個主機平臺上。一個或多個EdgeX微服務的主機平臺稱爲節點。
#### Core Service(核心服務層)微服務
核心服務是EdgeX的核心部分,是南北橋的中介。Core Service包含 核心數據(coreData),命令(Command),元數據(Metadata),註冊表和配置(Registry & Config) 等這些微服務。工具
元數據會存儲鏈接到EdgeX對象的元數據存儲庫和相關的管理服務。 元數據提供新設備與設備服務配對的能力。簡單來講設備配置文件Device Profile就是上傳到元數據中存儲。能夠經過GET向metadata獲取全部的Device Profile,PUT和ID更新配置文件,經過POST建立一個全新的DeviceProfile文件。(DeviceProfile設備配置文件記錄了設備的名稱描述版本生產商,有哪些屬性和方法等等)ui
元數據微服務知道該如何與傳感器、其餘服務(核心數據coredata ,核心命令core command)進行通訊。元數據能管理鏈接到EdgeX的設備、知道設備報告的數據以及知道如何向設備發送命令;但元數據就好像幕後大BOSS,老闆吩咐員工去作事;元數據不會經過Device Service和core Data進行數據採集;一樣元數據不會向設備直接發送命令,命令由核心命令(core Command)和設備服務(Device Service)執行。spa
核心數據微服務爲採集回來的數據提供持久化的服務。Device Service採集來的數據流到coreData,coreData會將數據存儲到系統邊緣(如網關)並提供必定的安全性性和保護,直到數據向北移動。說到核心數據,繞不開的還有Event/Readings。Event表明一個或多個傳感器讀數的集合,傳感器採集到數據後發送的EdgeX是一個事件。Reading表明設備或傳感器的響應。
命令是通用的,標準化的。通常發送兩類指令給設備——GET&PUT。GET命令從設備請求數據,這經常使用於請求設備獲取最新的傳感器數據。PUT指令則會發送指令給設備,使其開關機或做出一些調整。
支持服務包括普遍的微服務,包括邊緣分析、日誌記錄、調度和數據清理等;支持服務包括規則引擎、計劃、日誌記錄、警報和通知。目前在EdgeX v1.2版本中已經棄用了Logging服務,日誌記錄會在EdgeX之後的版本中被刪除。
在EdgeX框架中通知是很是重要的,當緊急事件發生時接收方可選適當的方式收取通知,包括SMS,郵件,REST回調,MQTT等等。通知微服務接收通知時,通知都在內部傳遞到通知處理程序。通知處理程序首先會保留通知,而後給定通知爲緊急時將其當即傳遞到分發協助器,如果正常狀況則將消息傳遞到消息調度程序。
規則引擎在EdgeX v1.2中已經被啓用。在Geneva中EdgeX與 EMQ X Kuiper合做。而Kuiper是一個輕量級的開源軟件,實現物聯網邊緣分析和流處理,用戶能夠實現快速的數據處理並編寫SQL語句。Kuiper規則引擎基於三個部分組成,Source、 SQL、Sink
Source是流數據的源頭,能夠是MQTT服務器,也能夠是EdgeX的消息總線。SQL是處理指定業務邏輯的地方,用於提取、過濾或轉換數據。Sink用於將分析結果發送到特定目標,例如將結果發送給MQTT代理。(關係以下圖)
其實這就是一個內部調度的時鐘,能夠設置間隔時間操做。
安全組能夠包括Edgex管理的設備,傳感器和其餘IoT對象的數據和控制。安全組主要有兩個組件,分別是:
Security store——用於提供安全的位置來保存EdgeX機密。EdgeX機密是其餘服務鏈接到雲系統的數據庫訪問密碼。
API gateway——用做反向代理,以限制對Edgex REST資源的訪問和控制操做。
系統管理工具爲外部管理系統提供了中心聯繫點,以啓動/中止/從新啓動EdgeX服務,獲取服務的狀態/運行情況或獲取EdgeX服務的指標.
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈