LF Edge eKuiperは、リソース制約のあるエッジデバイス上で実行される軽量なIoTデータ分析およびストリーム処理エンジンです。eKuiperの主な目標の1つは、エッジ側でストリーミングソフトウェアフレームワーク(Apache Flinkに似ている)を提供することです。eKuiperのルールエンジンにより、ユーザーはSQLベースまたはグラフベース(Node-REDに似ている)のルールを提供して、数分以内にIoTエッジ分析アプリケーションを作成できます。
ユーザーシナリオ
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関数の呼び出し)。
-
管理
- 可視化された管理のための無料のWebベースの管理ダッシュボード
- CLI、REST API、および設定マップ(Kubernetes)を介したプラグイン、ストリーム、およびルールの管理
- KubeEdge、OpenYurt、K3s BaetylなどのKubernetesフレームワークとの簡単な統合
-
EMQX製品との統合
EMQX、Neuron、NanoMQなどの製品とシームレスに統合し、IIoT、IoVなどのエンドツーエンドソリューションを提供します。
Slackに参加し、ekuiperまたはekuiper-userチャンネルに参加してください。
コミュニティイベントのカレンダーを購読してください。
毎週金曜日の午前10時30分(GMT+8)に開催されるコミュニティミーティング:
ご協力ありがとうございます!詳細については、CONTRIBUTING.mdを参照してください。
- 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 |
-
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.23
-
バイナリ:
-
バイナリ:
$ 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ビルドタグを選択して、必要な機能のみを含むカスタマイズされた製品をビルドし、バイナリサイズを削減することができます。ターゲットの展開環境にリソース制約がある場合、パッケージのサイズは特に重要です。詳細については、機能を参照してください。