9.2.2 トレースの単位
HMP-PCTOは分散トレースとしてSpanを取得します。Spanはトレースの単位です。HMP-PCTOでは、各コンポーネント(Orchestrator、Entity-Service、Entity-Module、Participant、Mediator)のプロセスをそれぞれ1つのマイクロサービスと考え、各コンポーネント内の特定処理(オペレーション)の開始時にSpan取得を開始し、特定処理の終了時にSpan取得を終了します。Spanを取得することで、特定処理の開始時刻と実行時間を取得できます。HMP-PCTOはSpanの取得開始から終了までの間に、Spanに特定処理に関する情報(ブランチXIDなど)を付加し取得します。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。
|
|
HMP-PCTOは処理の起点(トランザクション開始時など)でトレースIDを採番します。トレースIDはグローバルに一意な識別子であり、同一トランザクションのすべてのコンポーネントにわたって同じトレースIDをコンポーネント間の通信に埋め込み伝搬し、各Spanに付与することでSpanをグループ化できます。Spanはネストできます。呼び出し元の処理が親Span、呼び出し先の処理が子Spanとなります。
ユーザはJaegerのweb uiへアクセスし、トレースIDの一覧、およびトレースID単位での親Span、子Spanの呼び出し関係を確認することで、処理の流れを確認できます。
未決着トランザクションのRecovery機能が実行された場合、SQL-ParticipantまたはTCC-Participantの再起動前のトレースIDと再起動後のトレースIDは別の値となります。そのため、処理の流れを確認する場合は、同時に出力されているブランチXIDを基に処理の流れを確認する必要があります。