工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Eclipse Hono、Apache Kafka対応でシームレスなデバイスメッセージングを実現

Eclipse Honoは、多数の異種デバイスを(クラウド)バックエンドに接続するためのオープンソースプロジェクトです。Honoはサービスインターフェースを定義し、広く異なるプロトコルを使用するデバイス間、およびビジネスアプリケーション間での統一的な通信を可能にします。プロジェクトは一部時間存在し、数年間Bosch IoT Device Managementで成功裏に使用されてきました。新しいのは、Apache Kafkaをメッセージングにサポートするようになったことです。その結果としてのメリットとHonoの利用における変更点を本記事で紹介します。

Eclipse Hono、Apache Kafka対応でシームレスなデバイスメッセージングを実現

デバイスからのデータは、Honoでプロトコルアダプタ(MQTT、HTTP、CoAP用など)によって統一メッセージ形式に変換され、メッセージングシステムへ渡されます。ビジネスアプリケーションは、これらのメッセージ(テレメトリメッセージまたはイベント)をメッセージングシステムから直接読み取ります(Command and Controlを使用してデバイスへメッセージを送信し、応答を受信することも可能)。メッセージングはHonoの一部ではなく外部提供が必要ですが、これまでAMQP 1.0プロトコルが使用されてきました。

バージョン1.7から、HonoはApache Kafkaをメッセージング用にテクニカルプレビューとしてサポート。Honoの重要な機能は、メッセージングシステムへのメッセージ転送APIの定義と実装です。API定義はメッセージングに基づき、その特性に直接依存するため、新しいメッセージングシステムのサポートはHonoにとって根本的な革新です。HonoのすべてのメッセージングAPI(テレメトリ、イベント、コマンド&コントロール)について、プロトコルアダプタ側とビジネスアプリケーション側の両方で、Kafkaベースの新仕様が策定されました。AMQPベースのAPIと可能な限り同様に振る舞うよう配慮されています。

メリット

Apache Kafkaは、メッセージ順序に関する一定の保証を提供しながら、非常に高いスループット向けに設計された分散イベントストリーミングプラットフォームです。Honoのメッセージング要件に複数の理由で最適です。主なメリット:

変更点

AMQP 1.0はピア同士が接続してメッセージを交換する通信プロトコル。対照的に、Kafkaクラスタはデータの書き込み(と読み取り)を永続ストレージに調整するブローカーで構成。この違いには2つの帰結があります:第一に、メッセージが一定期間取得可能な状態で保存され、最終的に削除される。AMQPでHonoでこの効果を得るには、通常、ビジネスアプリケーションが一時的に利用不能でもメッセージ損失を防ぐため、イベントを格納する別のメッセージブローカーを用意します。Kafkaではすべてのメッセージが保存されます(テレメトリメッセージも含むが、保存期間はKafkaクラスタのテレメトリトピック設定に依存)。第二に、永続ストレージ経由の通信により、送信と受信操作が時間的に分離される:プロトコルアダプタは、現在コンシューマーが接続されていない場合でもデバイスへフィードバックできなくなります。代わりに、ビジネスアプリケーションがいつ読み取るかを「知らずに」メッセージを単に格納します。

試してみる

Honoインストール時、AMQPメッセージングネットワークまたはKafkaクラスタのいずれかをデプロイする必要があります。Honoを両方のメッセージングシステムで使用するように構成することも可能。各テナント(デバイスと設定のサブセット)をAMQPまたはKafkaのいずれかで使用するよう設定できます。Honoプロジェクトは、インターネット上で公開アクセス可能なサンドボックス環境を提供し、AMQPまたはKafkaベースのメッセージングでHonoを試用できます。

実践例

以下では、HonoサンドボックスでApache Kafkaベースのメッセージングを使用する小さな例を紹介します。HTTPプロトコルアダプタにテレメトリメッセージを送信し、Kafkaクラスタから読み取ります。

コマンドラインからHTTPコマンドを送信し、インターネット接続デバイスをシミュレート。一般的なオープンソースツールcurlを使用。インストールされていない場合はcurlホームページのインストール手順を参照。ビジネスアプリケーションのシミュレーションには、Honoダウンロードページから入手可能なHonoコマンドラインクライアントを使用。Java 11以上が必要です。

以下のコマンドが動作しない場合(この類の手順では常に起こりうる)、より詳細な説明を含むKafka Messaging Guideを参照してください。

デバイス登録

まず、サンドボックスで新しいテナントを作成し、他ユーザーとの干渉を防ぎます。以下のコマンドでランダムIDのテナントを作成し、メッセージングにKafkaを使用するよう設定:

$ curl -i -H "content-type: application/json" --data-binary '{
 "ext": {
 "messaging-type": "kafka"
 }
}' https://hono.eclipseprojects.io:28080/v1/tenants

出力に {"id":"85f63e23-1b78-4156-8500-debcbd1a8d35"} のような内容が含まれるはずです。

このIDをコピーし、環境変数として設定:

$ export MY_TENANT=85f63e23-1b78-4156-8500-debcbd1a8d35

テナントのデバイスを登録:

$ curl -i -X POST https://hono.eclipseprojects.io:28080/v1/devices/$MY_TENANT

再度、返されたIDを環境変数に設定:

$ export MY_DEVICE=4412abe2-f219-4099-ae14-b446604ae9c6

最後にデバイスのパスワードを設定:

$ export MY_PWD=my-pwd
$ curl -i -X PUT -H "content-type: application/json" --data-binary '[{
 "type": "hashed-password",
 "auth-id": "'$MY_DEVICE'",
 "secrets": [{
 "pwd-plain": "'$MY_PWD'"
 }]
}]' https://hono.eclipseprojects.io:28080/v1/credentials/$MY_TENANT/$MY_DEVICE

メッセージ送信

デバイス登録完了。メッセージ送受信が可能です。

2つ目のターミナルウィンドウを開き、メッセージ受信用にします。Honoコマンドラインクライアントをダウンロードしたディレクトリへ移動。以下のコマンドでクライアントを起動(my-tenantを作成したテナントIDに置換):

# hono-cli-*-exec.jar をダウンロードしたディレクトリで
$ java -jar hono-cli-*-exec.jar --spring.profiles.active=receiver,sandbox,kafka --tenant.id="my-tenant"

出力に以下のような行があれば受信準備完了:
10:23:01.807 [vert.x-eventloop-thread-0] INFO org.eclipse.hono.cli.app.Receiver - Receiver [tenant: 85f63e23-1b78-4156-8500-debcbd1a8d35, mode: all] created successfully, hit ctrl-c to exit

最初のターミナルに戻り、シミュレートデバイスからHonoへメッセージ送信。以下のコマンドでHTTPプロトコルアダプタへテレメトリメッセージを送信:

$ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "content-type: application/json" --data-binary '{"temp": 42}' https://hono.eclipseprojects.io:8080/telemetry

メッセージが2つ目のターミナルに表示されるはずです。

イベントも送信可能:

$ curl -i -u $MY_DEVICE@$MY_TENANT:$MY_PWD -H "content-type: application/json" --data-binary '{"hello": "kafka"}' https://hono.eclipseprojects.io:8080/event

デバイスからHonoへメッセージ送信し、Kafkaクラスタから受信することに成功しました。次のステップとして、HonoのKafka Messaging Guideのより詳細な例を参照できます。ビジネスアプリケーションからデバイスへコマンドを送信し、応答する方法も紹介されています。さらに深く知りたい場合は、HonoのAPI仕様にあるKafkaベースAPIの仕様を参照してください。

結論

メッセージングシステムは、Eclipse Honoのコア機能の基盤です。AMQP 1.0に加えKafkaをサポートすることは、インターフェースが相互に容易にマッピングできるよう細心の注意を払ってきたHonoにとって、非常に深い変化です。Kafkaの主なメリットは、スケーラビリティ、順序保証、幅広い採用実績、豊富な商用サービス提供。AMQPとの主な違いは、すべてのメッセージタイプがブローカー経由になること。これにより、受信側が一時的に切断されていてもメッセージ配信が可能。通信も時間的に分離されるため、メッセージ送信者への受信者からの直接フィードバックは不可能になります。簡単な実践例で、シミュレートデバイスからHonoサンドボックスへメッセージ送信し、Kafkaクラスタから消費する方法を示しました。

産業技術

  1. 元素および高温超伝導体の臨界温度(ケルビン)
  2. 絶縁体の耐電圧 — 電気エンジニア必携のキーデータ
  3. 必須微分ルール:クイックリファレンス
  4. 基本的な原始関数ルール:定数、和、差
  5. Eclipse Hono、MongoDBベースのデバイスレジストリを導入——スケーラブルで本番対応
  6. Eclipse Hono 1.0.0リリース:統合オープンソースIoT接続プラットフォーム
  7. 過酷環境向け堅牢PCB:設計、メリット、アプリケーション
  8. 製造向けPCB設計の最適化:主要戦略とベストプラクティス
  9. 5G時代のPCB製造:トレンドと課題
  10. インダストリー4.0をマスターする:ビジネスを未来対応させる実証済みのステップ
  11. Eclipse HonoでのX.509証明書によるセキュアなデバイス認証