「開源資訊」Kuiper 0.1 正式發佈 - 超輕量IoT邊緣流處理

EMQ X Kuiper 是 Golang 實現的輕量級物聯網邊緣分析、流式處理開源軟件,可以運行在各類資源受限的邊緣設備上。Kuiper 設計的一個主要目標就是將在雲端運行的實時流式計算框架(比如 Apache Spark (https://spark.apache.org/),Apache Storm (https://storm.apache.org/) 和 Apache Flink(https://flink.apache.org/) 等)遷移到邊緣端。Kuiper 參考了上述雲端流式處理項目的架構與實現,結合邊緣流式數據處理的特點,採用了編寫基於源 (Source),SQL (業務邏輯處理), 目標 (Sink) 的規則引擎來實現邊緣端的流式數據處理。


「開源資訊」Kuiper 0.1 正式發佈 - 超輕量IoT邊緣流處理

網址:https://www.emqx.io/products/kuiper

Github倉庫:https://github.com/emqx/kuiper


概覽

功能

  • 性能優化
    • 樹莓派 3B+:12k 消息/秒; CPU 利用率 (sys+user): 70%; 內存: 20M
    • AWS t2.micro ( 1核 * 1 GB, Ubuntu18.04):10k 消息/秒; CPU 利用率 (sys+user): 25%; 內存: 20M
    • 在 source (https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/sources/mqtt.md) 裡的concurrency 設置:設置運行的協程數,默認值為1。如果設置協程數大於1,必須使用共享訂閱模式。
    • 在 sink (https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/overview.md#actions) 裡的concurrency 設置:設置運行的線程數。該參數值大於1時,消息發出的順序可能無法保證。
    • 在 SQL 計劃(https://github.com/emqx/kuiper/blob/develop/docs/en_US/rules/overview.md#options)中的concurrency設置:一條規則運行時會根據 SQL 語句分解成多個計劃運行。該參數設置每個計劃運行的線程數。該參數值大於1時,消息處理順序可能無法保證。
    • 提供了針對 Kuiper 規則設置併發度的配置選項,在不同的場景下可以對其優化
    • 性能測試結果
  • 支持 規則指標採集(https://github.com/emqx/kuiper/blob/develop/docs/en_US/cli/rules.md#get-the-status-of-a-rule),可以被用於消息處理狀態的跟蹤。指標包含有,
    • in, out, exception 每個處理器的進、出與異常消息數
    • process_latency_ms 每個處理器的處理時延
    • buffer_length, 每個處理器中用掉的 buff 的長度
    • last_invocation, 每個處理器中最後調用時間
  • 在 OpenWrt Linux (Chaos Calmer 15.05) 系統 (1核,256M 內存硬件)中完成測試,工作正常
  • 如果 MQTT 源或者目標被斷開,支持自動重連

問題修復

  • 如果在啟動規則的時候發現錯誤,在命令行中打印出相關的錯誤信息
  • 修復了幾個 REST Sink 的問題


分享到:


相關文章: