全球領先的開源物聯網軟件提供商 EMQ (Github 項目) 於2019年10月23日正式開源了一個邊緣端的超輕量級流式數據處理項目 EMQ X Kuiper(如下簡稱 Kuiper)。隨着 Kuiper 的發佈,EMQ 將加快在物聯網中間件領域的佈局,從而造成從消息接入到數據處理,從邊緣到雲端的物聯網中間件軟件全領域覆蓋。git
2019 年做爲 5G 商用元年,隨着 5G 部署的深刻,邊緣計算也已經日漸流行。邊緣計算經過在靠近接入網的機房增長計算能力,能夠,github
物聯網邊緣計算很大一部分指的是流數據的處理,所謂流數據是一組順序、大量、快速、連續到達的數據序列,通常狀況下,流數據可被視爲一個隨時間延續而無限增加的動態數據集合。流式數據處理能夠幫助用戶實時瞭解系統設備的狀態,並對異常狀況做出快速響應。在邊緣端的計算資源(CPU,內存等)不像在雲端豐富,所以傳統的流式數據處理框架相似於 Apache Storm 或者 Apache Flink 等,因爲其安裝包過大,或者部署結構與過程過於複雜,運行時的高消耗等緣由,並不適合於在這些資源受限的邊緣設備(工控機、網關,或者配置不高的 X86 服務器等設備)上運行。而 EMQ 開源的 Kuiper 就是爲了解決在物聯網邊緣設備上的這些問題。sql
Kuiper 能夠應用在各種邊緣計算的場景中,典型應用場景包括,shell
以上各種應用場景很好體現了邊緣計算的價值:實時本地數據處理,提高用戶體驗;在本地數據處理,還提升了數據安全性,保護我的隱私;節省網絡帶寬和雲端存儲成本。Kuiper 能夠運行在這些計算資源不足的邊緣設備上,低成本地實現邊緣端的流式數據處理。數據庫
以下圖所示,Kuiper Server 包括了三部分,分別爲安全
Kuiper 的使用過程與傳統的流式工具相似,主要包括三步:流定義,規則定義,提交規則執行服務器
流定義:這個步驟主要用於定義數據源流出的數據格式,相似於傳統關係型數據庫中定義表結構的過程。以下所示定義了一個名爲 demo 的數據流網絡
# bin/cli create stream demo '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="demo")'
規則定義:該步驟主要用於定義如下三部份內容框架
{ "sql": "SELECT * from demo where temperature > 30", "actions": [{ "log": {} }] }
如上所示,定義了一個規則,從名稱爲 demo 的流中,取出溫度大於30的數據,並將知足條件的數據輸出到日誌文件中。規則能夠保存在一個文本文件中,好比 myRule
函數
提交規則執行
# bin/cli create rule ruleDemo -f myRule
完成規則後,經過建立規則命令就能夠將其提交。知足條件的數據將被輸出至日誌文件。
... [{"humidity":17,"temperature":60}] [{"humidity":59,"temperature":68}] [{"humidity":67,"temperature":31}] [{"humidity":5,"temperature":45}] [{"humidity":34,"temperature":97}] [{"humidity":90,"temperature":73}] [{"humidity":72,"temperature":59}] [{"humidity":39,"temperature":72}] [{"humidity":76,"temperature":92}] [{"humidity":23,"temperature":40}] [{"humidity":74,"temperature":91}] [{"humidity":50,"temperature":76}] [{"humidity":77,"temperature":44}] ...
讀者能夠經過按照在 Github 上的教程文檔來完成 Kuiper 的首次體驗。Kuiper 項目基於 Apache 2.0 開源協議,在使用過程當中發現任何問題能夠直接在項目中提交。
更多信息請訪問咱們的官網 emqx.io,或關注咱們的開源項目 github.com/emqx/emqx ,詳細文檔請訪問 官方文檔。