用語: トレースIDと相関ID 質問する

用語: トレースIDと相関ID 質問する

私は次の用語の違いを理解しようとしています:

  • トレースID
  • 相関ID

どちらの用語も、特にマイクロサービス指向のアーキテクチャにおいて、複数のサービスによって生成された関連ログを検索するための識別子として使用されているようです。

これら2つの間に微妙な違いはありますか?

これらの用語のうちどれをソフトウェアで使用すればよいでしょうか。また、どのように決定すればよいでしょうか。

ベストアンサー1

どちらも、使用中のツール/ライブラリ、システム設計に応じて使用されます。これらは何らかの形で関連している可能性があり、アプリケーションとシステム設計によって異なります。一般的に、TraceID または CorrelationID は、特定の関心アクティビティのシーケンスを追跡するため、またはアプリケーション/システムの存続期間全体にわたって追跡するための、一意のユーザー定義/生成値になります。

また、アーキテクチャ/設計に応じて、CorrelationID はメッセージごとに一意に使用することも、いくつかのカテゴリ/モジュールに基づいてメッセージをグループ化して ID を持つこともできます。このようなグループ化の場合でも、CorrelationID という用語を使用する必要があります。

マイクロサービスに基づくシステムは、詳細情報、メトリック、ストレージ、分析のために、特定のマイクロサービスに関連付けられたデータをデバッグするための一意の ID に大きく依存しています。通常、このような拡張性の高いシステムでは、CorrelationID は初期プロセスからサブプロセスに渡され、サブプロセスはそれをサブシステムに渡します。

システムをベースとするオープントレーシングTraceID という用語を使用します。これは、開始から終了までのチェーンを表し、すべてのトレースの下に、spanID によって認識される特定の作業単位のスパンが存在する場合があります。spanID は、有向非巡回グラフ (DAG) ベースのメンテナンスを構築するために使用されます。

システムをベースとする探偵TraceID という用語を使用します。この場合、リクエストごとに一意の識別子が割り当てられ、アプリケーション内のリクエスト処理ステップ全体で維持され、その一部として作業単位/ステップの spanID がタグ付けされます。

ほとんどのメッセージングシステムはcorrelationIdを使用しているため、それらを使用するシステムは追跡とログにcorrelationIdを使用する必要があります。したがって、Java Message Service(JMS)に基づくシステムは、リクエストとレスポンスにcorrelationIdを使用します。たとえば、次のようなメッセージブローカーです。JMS API を実装する(つまり互換性がある)Apache ActiveMQ相関IDを使用します。したがって、分散処理エンジン、例えばApache Flink は RabbitMQ で correlationId を使用しますRPC 要求と応答の追跡には、correlationId が使用されるためです。

おすすめ記事