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

メッセージング用にApacheKafkaをサポートするEclipseHono

Eclipse Honoは、多数の異種デバイスを(クラウド)バックエンドに接続するためのオープンソースプロジェクトです。 Honoは、ビジネスアプリケーションだけでなく、大きく異なるプロトコルを使用する可能性のあるデバイス間の均一な通信を可能にするサービスインターフェイスを定義しています。このプロジェクトはしばらく前から存在しており、BoschIoTデバイス管理で数年間使用されています。新しいのは、メッセージング用にApacheKafkaをサポートするようになったことです。この記事では、Honoの使用によるメリットと変更点を紹介します。

デバイスからのデータは、プロトコルアダプタによってHonoで統一されたメッセージ形式に変換されます (たとえば、MQTT、HTTP、CoAp用のものがあります)そしてメッセージングシステムに渡されます。ビジネスアプリケーションは、これらのメッセージを読み取ります。これらのメッセージは、テレメトリメッセージのいずれかです。 またはイベント 、メッセージングシステムから直接(コマンドアンドコントロールを使用することもできます) デバイスにメッセージを送信し、応答を受信します)。 Honoの一部ではないが外部から提供する必要があるメッセージングについては、これまでAMQP1.0プロトコルが使用されてきました。

バージョン1.7以降、Honoはテクニカルプレビューとしてメッセージング用のApacheKafkaをサポートしています。 。 Honoの重要な機能は、メッセージングシステムとの間でメッセージを転送するためのAPIの定義と実装です。 API定義はメッセージングに基づいており、そのプロパティに直接依存しているため、新しいメッセージングシステムをサポートすることは、Honoの根本的な革新です。 HonoのすべてのメッセージングAPI(テレメトリイベント 、およびコマンドアンドコントロール )、Kafkaに基づく新しい仕様が作成され、プロトコルアダプタとビジネスアプリケーションの両方に直面しています。 AMQPベースのAPIと可能な限り同じように動作するように注意が払われました。

メリット

Apache Kafkaは、メッセージの順序で特定の保証を提供しながら、非常に高いスループットを実現するように設計された分散イベントストリーミングプラットフォームです。これは、いくつかの理由から、メッセージングに関するHonoの要件に最適です。主なメリットは次のとおりです。

変更

AMQP 1.0は、ピアが相互に接続してメッセージを交換する通信プロトコルです。対照的に、Kafkaクラスターは、永続ストレージへのデータの書き込み(および読み取り)を調整するブローカーで構成されます。この違いには2つの結果があります。1つは、メッセージが最終的に削除される前に、しばらくの間取得できることです。 AMQPを使用してHonoでこの効果を実現するには、通常、イベントが発生する別のメッセージブローカーを提供します。 ビジネスアプリケーションが一時的に利用できなくなった場合にメッセージが失われないように保存されます。 Kafkaを使用すると、すべてのメッセージが保存されます。これにはテレメトリメッセージが含まれます(ただし、保存時間はKafkaクラスターのテレメトリトピックの構成によって異なります)。次に、永続ストレージを介した通信により、送信操作と受信操作が相互に分離されます。現在、コンシューマーが接続されていない場合、プロトコルアダプターはデバイスにレポートを返すことができなくなります。代わりに、ビジネスアプリケーションがメッセージを読み取るかどうか、またはいつ読み取るかを「知る」ことなく、メッセージを保存するだけです。

試してみる

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

実例

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

コマンドラインからHTTPコマンドを送信することにより、インターネット対応デバイスをシミュレートします。このために、人気のあるオープンソースツール curl を使用します 。現在コンピュータにインストールされていない場合は、curlホームページのインストール手順を参照してください。ビジネスアプリケーションをシミュレートするために、HonoのダウンロードページからダウンロードできるHonoのコマンドラインクライアントを使用します。 Javaを実行するには、少なくともバージョン11にJavaをインストールする必要があることに注意してください。

以下に示すコマンドのいずれかが機能しない場合(このような手順で常に発生する可能性があります)、説明に詳細が記載されているKafkaメッセージングガイドを参照してください。

デバイスの登録

まず、他のユーザーの邪魔にならないように、サンドボックスに新しいテナントを作成する必要があります。次のコマンドは、ランダムなIDでテナントを作成し、メッセージングにKafkaを使用するように構成します。

$ curl -i -H "content-type:application / json" --data-binary '{ "ext":{ 「メッセージングタイプ」:「kafka」 } } 'http://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 http://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 '[{ "タイプ": "ハッシュパスワード"、 "auth-id": "'$ MY_DEVICE'"、 「秘密」:[{ "pwd-plain": "'$ MY_PWD'" }] }] 'http://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] INFOorg.eclipse.hono.cli。 app.Receiver-レシーバー[テナント:85f63e23-1b78-4156-8500-debcbd1a8d35、モード:すべて]が正常に作成されました。ctrl-cを押して終了します

これで、シミュレートされたデバイスからHonoにメッセージを送信できます。これを行うには、最初のターミナルウィンドウに戻ります。次のコマンドは、テレメトリメッセージをHTTPプロトコルアダプタに送信します。

$ curl -i -u $ MY_DEVICE @ $ MY_TENANT:$ MY_PWD -H "content-type:application / json" --data-binary '{"temp":42}' http://hono.eclipseprojects.io:8080 /テレメトリー

これで、メッセージが2番目の端末に出力されます。

イベントを送信することもできます :

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

これで、デバイスからHonoにメッセージを送信し、Kafkaクラスターからメッセージを受信することに成功したはずです。次のステップとして、HonoのKafkaメッセージングガイドのより詳細な例を見ることができます。また、ビジネスアプリケーションからデバイスにコマンドを送信してそれに応答する方法も示します。さらに深く掘り下げたい場合は、HonoのAPI仕様にあるKafkaベースのAPIの仕様を確認することをお勧めします。

結論

メッセージングシステムは、そのインターフェイスがその上に提供されているため、EclipseHonoのコア機能の基盤です。 AMQP 1.0と一緒にKafkaをサポートすることは、Honoにとって非常に大きな変更であり、インターフェイスを相互に簡単にマッピングできるようにすることに大きな重点が置かれています。 Kafkaの主な利点は、そのスケーラビリティ、注文の保証、大規模な採用、および豊富な商用サービスの提供です。 AMQPを使用したメッセージングとの主な違いは、すべてのメッセージタイプが仲介されることです。これは、受信者が一時的に切断された場合でもメッセージを配信できることを意味します。また、通信は時間の観点から切り離されているため、メッセージの受信者から送信者への直接フ​​ィードバックは不可能になります。簡単な実際の例では、シミュレートされたデバイスからHonoサンドボックスにメッセージを送信し、Kafkaクラスターからメッセージを消費する方法を示しました。


産業技術

  1. 超伝導体の臨界温度
  2. 絶縁体の絶縁耐力
  3. デリバティブのルール
  4. 不定積分の規則
  5. EclipseHonoでの新しいMongoDBベースのデバイスレジストリのリリース
  6. Eclipse Hono 1.0.0がリリースされました:オープンなIoT接続プラットフォーム
  7. EclipseHonoでのX.509ベースのデバイス認証
  8. 過酷な環境向けのPCB
  9. PCBを製造するための設計
  10. 5G用のPCB製造
  11. インダストリー4.0の準備方法