最近、プロジェクトに簡単な分散リクエスト追跡機能を追加したいと考えています。フロントエンドからゲートウェイへのリクエストを開始し、ゲートウェイから Spring Cloud マイクロサービスを呼び出します。これらのプロセス中に、ログから分散 ID リンクが表示されることを期待します。問題のトラブルシューティングを容易にするために、リクエスト ID を通じてリンク全体を追跡できます。
既存のソリューションとしては、当然ながら SkyWalking、Spring Cloud Sleuth、Zipkin などのコンポーネントを使用することになります。ただし、ログクエリを容易にするために、さまざまなサービスで常に実行できる ID を記録することが主な目的であるため、複雑なコンポーネントをあまり導入したくありません。最終的に、MDC を介してログに追跡 ID を出力し、Feign と RestTemplate のマイクロサービスにリクエスト ID を渡すことにしました。 主にいくつかのステップが含まれます:
MDCC MDC (Mapped Diagnostic Context) は、マルチスレッド条件下でのログ記録を容易にするために Log4j と Logback によって提供される機能です。 MDC は、キーと値のペアを追加できる、現在のスレッドにバインドされたハッシュ テーブルとして考えることができます。 MDCの主な業務:
TraceIdツールクラスを追加しました まず、TRACE_ID の定数値と TRACE_ID の設定および生成方法を定義する TraceIdUtils ツール クラスを追加します。以降のコードはこの推定クラスを通じて操作されます。
WebFilter経由でTraceIdフィルターを追加する リクエスト ヘッダーから TraceIdUtils.TRACE_ID に対応する値を取得するために、GenericFilterBean を追加します。この値は、フロントエンドがリクエストを開始するとき、またはマイクロサービス間で渡されるときに伝達されます。値がない場合、TraceIdUtils.setTraceId によって値が生成されます。
SpringBoot スタートアップ クラスに @ServletComponentScan アノテーションを追加することを忘れないでください。そうしないと、カスタム フィルターは有効になりません。 「com.yourtion.trace.filter」は、TraceIdFilter が配置されているパッケージ名です。
FeignにTraceIdを追加する @FeignClient プロキシ クラスは実行時に Spring コンテキストの RequestInterceptor を使用するため、独自のインターセプターをカスタマイズして Spring コンテキストに挿入し、リクエスト コンテキストにカスタム リクエスト ヘッダーを追加できるようにします。
RestTemplate に TraceId を追加する 一部のリクエストは RestTemplate を通じて開始されます。以前は、RestTemplateConfig 構成クラスを独自に実装していました。今回は、関連する構成に以下を追加しました。
この時点で、リンクへの TraceId の追加は完了しており、残っているのはそれをログに印刷することだけです。 Log4j2のレイアウト形式を変更する MDC に traceId を出力するために、ログのレイアウト形式を変更します。
この時点で変更は完了です。 |
<<: 2021 年に組織が完璧なクラウド コンピューティング戦略を作成するための 3 つの柱
>>: IBMはまたもや戦いに敗れた。クラウド コンピューティングは Big Blue に悪影響を及ぼしていますか?
AI駆動型クラウドマネージドサービス(MSP)企業Bespin Globalは、シリーズB資金調達で...
時代は思想の母であり、実践は理論の源である。 40年前、改革開放の壮大な幕が開き、中国は近代化の新た...
翻訳者 |チェン・ジュン校正:孫淑娟Python は、人工知能の分野で広く使用されている強力なオブジ...
上海SEO福生は、それほどベテランではない検索エンジン最適化の専門家として、キーワードランキングの研...
どの企業もオンライン マーケティングに取り組み始めていますが、同じ金額を費やしても結果が大きく異なる...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますキーワード...
最適化に取り組み始めたばかりの人の多くは、SEO に取り組み始めた頃の私と同じように、サイトの最適化...
ちょうど今、新世代の国際ビデオコーディングおよびデコード標準 (H.266/VVC) が正式にリリー...
まず、アクティブ外部リンクとパッシブ外部リンクの意味を説明します。これは私の考え方です。実際、アクテ...
占い、性格分析、ゆるキャラ、生贄など伝統的なビジネスは、インターネット上でどのように生き残ることがで...
「デジタル経済白書」は、アナリシスがデジタル経済の各業界で培った経験とデータの蓄積を凝縮し、デジ...
ソフトウェア定義データセンターを運営する管理者は仮想化の概念を理解する必要がありますが、専門的なサポ...
VMware は、vSphere の新しいバージョンにより、Project Pacific の約束の...
「インターネット上でのブランド構築とは、高品質なコンテンツとサービスを通じて、ウェブサイトのコンテン...
過去 1 年ほど、パブリックとプライベートの両方において、クラウド コンピューティングに関する話題が...