Skip to content

Latest commit

 

History

History
189 lines (125 loc) · 10.5 KB

README-JP.md

File metadata and controls

189 lines (125 loc) · 10.5 KB

LF Edge eKuiper - エッジ軽量IoTデータ分析ソフトウェア

GitHub Release Docker Pulls codecov Go Report Card Slack Twitter Community YouTube

English | 简体中文 | 日本語

概要

LF Edge eKuiperは、リソース制約のあるエッジデバイス上で実行される軽量なIoTデータ分析およびストリーム処理エンジンです。eKuiperの主な目標の1つは、エッジ側でストリーミングソフトウェアフレームワーク(Apache Flinkに似ている)を提供することです。eKuiperのルールエンジンにより、ユーザーはSQLベースまたはグラフベース(Node-REDに似ている)のルールを提供して、数分以内にIoTエッジ分析アプリケーションを作成できます。

arch

ユーザーシナリオ

IIoTの生産ラインデータのリアルタイム処理、IoVの接続された車両がCANからのデータを分析、スマートエネルギーの風力タービンおよびスマート大容量エネルギー貯蔵のリアルタイム分析など、さまざまなIoTエッジユーザーシナリオで実行できます。

eKuiperのエッジでの処理により、システムの応答遅延を大幅に削減し、ネットワーク帯域幅とストレージコストを節約し、システムのセキュリティを向上させることができます。

特徴

  • 軽量

    • コアサーバーパッケージは約4.5Mのみで、メモリフットプリントは約10MBです
  • クロスプラットフォーム

    • CPUアーキテクチャ:X86 AMD * 32/64; ARM * 32/64; PPC
    • 人気のあるLinuxディストリビューション、OpenWrt Linux、MacOS、Docker
    • インダストリアルPC、ラズベリーパイ、インダストリアルゲートウェイ、ホームゲートウェイ、MECエッジクラウドサーバー
  • データ分析サポート

    • データETLをサポート
    • データの順序付け、グループ化、集約、および異なるデータソース(データベースおよびファイルからのデータ)との結合
    • 数学、文字列、集約、ハッシュなどを含む60以上の関数
    • 4つの時間ウィンドウとカウントウィンドウ
  • 高い拡張性

    GolangまたはPythonでソース関数、およびシンクを拡張することをサポートします。

    • ソース:ユーザーが分析のためにより多くのデータソースを追加できるようにします。
    • シンク:ユーザーが分析結果をさまざまなカスタマイズされたシステムに送信できるようにします。
    • UDF関数:ユーザーがデータ分析のためのカスタマイズされた関数を追加できるようにします(たとえば、AI/ML関数の呼び出し)。
  • 管理

  • EMQX製品との統合

    EMQXNeuronNanoMQなどの製品とシームレスに統合し、IIoT、IoVなどのエンドツーエンドソリューションを提供します。

クイックスタート

コミュニティ

Slackに参加し、ekuiperまたはekuiper-userチャンネルに参加してください。

会議

コミュニティイベントのカレンダーを購読してください。

毎週金曜日の午前10時30分(GMT+8)に開催されるコミュニティミーティング:

貢献

ご協力ありがとうございます!詳細については、CONTRIBUTING.mdを参照してください。

パフォーマンステスト結果

MQTTスループットテスト

  • JMeter MQTTプラグインを使用して、IoTデータ(例:{"temperature": 10, "humidity" : 90})をEMQX Brokerに送信します。温度と湿度の値は0〜100の間のランダムな整数です。
  • eKuiperはEMQX Brokerからサブスクライブし、SQLでデータを分析します:SELECT * FROM demo WHERE temperature > 50
  • 分析結果は、ファイルシンクプラグインを使用してローカルファイルシステムに書き込まれます。
デバイス 1秒あたりのメッセージ数 CPU使用率 メモリ使用量
Raspberry Pi 3B+ 12k sys+user: 70% 20M
AWS t2.micro( 1 Core * 1 GB)
Ubuntu18.04
10k sys+user: 25% 20M

EdgeXスループットテスト

  • Goアプリケーションを作成して、ZeroMQメッセージバスにデータを送信します。データは以下の通りです。

    {
      "Device": "demo", "Created": 000, …
      "readings": 
      [
         {"Name": "Temperature", value: "30", "Created":123 …},
         {"Name": "Humidity", value: "20", "Created":456 …}
      ]
    }
    
  • eKuiperはEdgeX ZeroMQメッセージバスからサブスクライブし、SQLでデータを分析します:SELECT * FROM demo WHERE temperature > 50。ルールによって90%のデータがフィルタリングされます。

  • 分析結果は、nop sinkに送信され、すべての結果データが無視されます。

1秒あたりのメッセージ数 CPU使用率 メモリ使用量
AWS t2.micro( 1 Core * 1 GB)
Ubuntu18.04
11.4 k sys+user: 75% 32M

最大ルール数サポート

  • 8000ルールで、合計800メッセージ/秒
  • 設定
    • AWS 2コア * 4GBメモリ
    • Ubuntu
  • リソース使用量
    • メモリ: 89% ~ 72%
    • CPU: 25%
    • ルールあたり400KB - 500KB
  • ルール
    • ソース: MQTT
    • SQL: SELECT temperature FROM source WHERE temperature > 20(90%のデータがフィルタリングされます)
    • シンク: ログ

共有ソースインスタンスを持つ複数のルール

  • 1つの共有MQTTストリームインスタンスを持つ300ルール。
    • MQTTソースで500メッセージ/秒
    • 合計で150,000メッセージ/秒の処理
  • 設定:
    • AWS 2コア * 2GBメモリ
    • Ubuntu
  • リソース使用量
    • メモリ: 95MB
    • CPU: 50%
  • ルール
    • ソース: MQTT
    • SQL: SELECT temperature FROM source WHERE temperature > 20(90%のデータがフィルタリングされます)
    • シンク: 90% nop、10% MQTT

自分でベンチマークを実行するには、この手順を確認してください。

ドキュメント

公式ウェブサイトで最新のドキュメントをチェックしてください。

ソースからビルド

準備

  • Goバージョン >= 1.22

コンパイル

  • バイナリ:

    • バイナリ:$ make

    • EdgeXをサポートするバイナリファイル:$ make build_with_edgex

    • コアランタイムのみを持つ最小バイナリファイル:$ make build_core

  • パッケージ:$ make pkg

    • パッケージ:$ make pkg

    • EdgeXをサポートするパッケージファイル:$ make pkg_with_edgex

  • Dockerイメージ:$ make docker

    DockerイメージはデフォルトでEdgeXをサポートします

リリースアセットには、事前にビルドされたバイナリファイルが提供されています。事前にビルドされたバイナリファイルがないOSまたはアーキテクチャを使用している場合は、クロスコンパイルを使用して自分でビルドしてください。このドキュメントを参照してください。

コンパイル中に、goビルドタグを選択して、必要な機能のみを含むカスタマイズされた製品をビルドし、バイナリサイズを削減することができます。ターゲットの展開環境にリソース制約がある場合、パッケージのサイズは特に重要です。詳細については、機能を参照してください。

オープンソースライセンス

Apache 2.0