最近、プロジェクトに簡単な分散リクエスト追跡機能を追加したいと考えています。フロントエンドからゲートウェイへのリクエストを開始し、ゲートウェイから 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 に悪影響を及ぼしていますか?
月収10万元の起業の夢を実現するミニプログラム起業支援プラン近年、伝統的な小売業界と伝統的な電子商取...
2001年に創業した超老舗のアメリカのサーバー業者iwebfusionが、2017年に自社のサーバー...
【概要】クラウドファンディングというレッテルを剥がす時期は過ぎ去り、本来のエクイティ型クラウドファン...
11月28日午前0時(米国中部時間、北京時間11月28日午後2時)から24時間、仮想ホスティングが2...
11月3日に開幕した2022年雲奇カンファレンスで、アリババの張勇会長兼CEOは、テクノロジーは過去...
分散型 IM インスタント メッセージング システムの本質は、オンライン チャットとユーザーの管理で...
Admin5 Webmaster Networkは6月6日、CNNICが5月28日に新しいドメイン名...
最近、いくつかのデータを調べて、さまざまな業界の Web サイトを比較しました。ほとんどの Web ...
この記事は製品に関する記事であり、対象顧客はクラウド コンピューティング製品マネージャーと標準的なク...
Appleは今朝早く、iOS 9の正式版を世界中のユーザーに公開し、長い間待ち望んでいた多くのユーザ...
この記事はLeiphone.comから転載したものです。再印刷が必要な場合は、Leiphone.co...
まずはじめに自己紹介をさせていただきます。私は医療業界で働いており、病院のウェブサイトの最適化を担当...
reprisehosting は現在、シアトルのデータセンターにある自社専用サーバーの特別プロモーシ...
swiftvm は、優れたサーバー ハードウェア、優れたデータ センター、優れた価格といった特徴を備...
実際、リンク、ドメイン名、URL など、Web サイトの最適化に関連する要素は多数あります。成功する...