データバスの用語と機能について
データバスにはさまざまな機能が用意されています。これらの機能について理解しておくと、データバスをより効率的に使用する上で役立ちます。
サブスクライバ
サブスクライバは、メッセージ グループからデータを受信するためにデータバスに登録されているエンドポイントです。同じメッセージ グループと同じサブスクライバ URL を持つサブスクライバを複数使用することはできません。
サブスクライバ URL
データバスからのデータを受信する URL です。
VMware Aria Operations for Networks
データバスは、任意のメッセージ グループ内のすべてのメッセージをサブスクライバ URL に送信します。サブスクライバ URL を使用して、複数のメッセージ グループにサブスクライブすることもできます。ユーザーがいずれかのメッセージ グループにサブスクライブすると、その時点からデータバスはストリーミングを開始し、サブスクライブを解除するまで続行します。通信が一時的に切断されても、組み込みのメカニズムによって処理され、問題が解決した後でデータ ストリーミングは再開されます。ユーザーが対応する必要はありません。
メッセージの順序付け
データバスを介して送信されるメッセージは、通常、イベントまたはオブジェクトが
VMware Aria Operations for Networks
に保存されるときにタイムスタンプによって順序が付けられます。ただし、シナリオによっては、これらの順序付けが確実に行われないことがあります。メッセージの順序付けを確実に行うには、サブスクライバがデータバス メッセージのタイムスタンプ フィールドを利用し、タイムスタンプに基づいてメッセージの順序を設定する必要があります。ほぼリアルタイムのストリーミング
データバスでは、
VMware Aria Operations for Networks
でデータが処理されてからデータバスによってストリーミングされるまでの間に遅延が発生します。遅延の範囲は 3 秒から 1 分までです。この遅延はメッセージ グループによって異なり、パイプラインがクリアされる可能性があります。データ処理をスケーリングするロード バランサ
VMware Aria Operations for Networks
データバスからデータを受信している間に、ロード バランサを使用してデータ処理サービスを水平方向にスケーリングできます。ロード バランサを使用するには、データバス登録プロセス中にロード バランサ URL をサブスクライバ URL として使用する必要があります。ロード バランサは、水平方向にスケーラブルなデータ処理サービスにデータを分散できます。 Heartbeat
VMware Aria Operations for Networks
データバスとサブスクライバ エンドポイント間の通信チャネルのトラブルシューティングをサポートするために、VMware Aria Operations for Networks
はすべてのサブスクライバにハートビート メッセージを 1 時間ごとに送信します。URL が複数のサブスクリプションで指定されている場合、サブスクライバはサブスクリプションごとに 1 つのハートビート メッセージを受信します。 例:
{ "id": "c2214eea-68a6-4e5a-9e4b-ff5886a42cd3", "type": "HEARTBEAT", "specversion": "1.0", "source": "CL58EgdESzVDSEE1", "message_group": "vms", "status": "HEARTBEAT", "timestamp": 1681897371522 }
メッセージのバッチ処理
VMware Aria Operations for Networks
データバスは本来、複数のメッセージを 1 つのバッチにグループ化してサブスクライバに送信するバッチ処理をサポートしています。デフォルトでは、バッチの最大サイズは 2 MB です。1 つのメッセージのサイズが 2 MB を超えると、メッセージはトリミングされます。 バッチ作成を行うと、1 分未満の追加の遅延が発生します。
トリミングされたメッセージの例:
[ { "id": "elfcdccb-c06a-419b-90bd-7618e8453f87", "type": "Application", "specversion": "1.0", "source": "CNaBARIHRElXRlgxRg==", "message_group": "applications", "status": "UPDATE_TRIMMED", "data": { "entity_id": "16598:561:716945762559381432", "entity_type": "Application", "name": "My-3Tier-App" } ]
配信保証
サブスクライバが 503 エラー コード以外の HTTP コードで応答した場合、メッセージの配信は成功したと見なされます。
サブスクライバがメッセージを受信しなかったものの、
VMware Aria Operations for Networks
が 503 エラー コードを取得しなかった場合、VMware Aria Operations for Networks
はメッセージが配信されたと見なし、メッセージを再送信しません。メッセージは失われる可能性があります。VMware はこのメカニズムを導入することで、継続的な再試行によってシステムの負荷が過剰にならないようにしています。たとえば、本番環境がダウンしている場合に、継続的な再試行が行われると、ノイズが非常に大きくなります。この場合、503 以外の HTTP 応答を送信することで、再試行が不要であることを指定できます。VMware Aria Operations for Networks
では、複数のサービスからメッセージが送信されて、ディスクベースのキューに追加されます。ディスクベース キューの有効期限は 2 時間です。メッセージが 2 時間以内にサブスクライバに配信されなかった場合、それらのメッセージは FIFO 方式でキューから削除され、サブスクライバに配信されません。また、
VMware Aria Operations for Networks
のメッセージのボリュームが、システムが確実に転送できる量を超えている場合、メッセージはドロップされる可能性があります。データバス サブスクライバにアクセスできない場合、システムはメッセージを正常に配信するまでメッセージの送信を試行します。バージョン 6.9 でバックオフ メカニズムが追加され、システムは指数時間でメッセージ配信を再試行するようになりました。フィルタリング
サブスクライバを登録すると、サブスクライバは該当するメッセージ グループのすべてのメッセージを取得します。
VMware Aria Operations for Networks
データバスはメッセージのフィルタリングをサポートしていません。メッセージ グループ内に不要なメッセージがある場合は、フィルタ条件に基づいてメッセージを破棄してから、処理を続行してください。VMware Aria Operations for Networks
ユーザー インターフェイスからアラートを無効にすることもできます。メッセージと他のオブジェクトの関連付け
シナリオによっては、データバスで受信されたメッセージに、他のいくつかの関連エンティティのコンテキスト情報が含まれていることがあります(これらのエンティティの詳細は含まれません)。ただし、メッセージには、
entity_id
などの特定の識別子が含まれます。これらの関連エンティティの詳細を取得するには、API を使用してこれらのエンティティにサブスクライブする必要があります。たとえば、ホスト メッセージ グループにサブスクライブすると、問題のメッセージ グループから受信したイベントのホストを関連付けることができます。