最近、プロジェクトに簡単な分散リクエスト追跡機能を追加したいと考えています。フロントエンドからゲートウェイへのリクエストを開始し、ゲートウェイから 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 に悪影響を及ぼしていますか?
Flarum は、エレガントで軽量 (100K 以下) な PHP フォーラム プログラムとして、私...
Alibaba Cloudの公式ニュースによると、ハンガリー系アメリカ人のコンピューター科学者であり...
イベント トラッキング (TrackEvent) を使用すると、Flash Web サイトの要素、埋...
少し前に、WeChatのユーザー数がすでに2億7000万人に達していると報じられました。WeChat...
glideservers.com は、カナダのデータセンターに特別価格の OpenVZ ベースの V...
ウェブサイトの継続的な発展に伴い、多くの学生がウェブサイト最適化の業界に魅了されてきました。しかし、...
budgetvm の最新割引コードが 2 つあります。budgetvm の特別価格のサーバーのみ対象...
現在、特に独立系ブログサイト向けの無料ウェブサイト構築プログラムが数多くあります。WP、zblogな...
Zorocloud は現在、VPS を 38% 割引、専用サーバーを 10% 割引で提供しています。...
AWS は本日、大中華圏で 2 番目となる IoT 研究所を深圳に設立すると発表した。このラボは、A...
5月23日から25日まで、工業情報化部は「全国電子商取引・物流情報化推進会議及び全国中小企業情報化・...
東南網-海峡報は8月3日(記者張順、インターン荘文沙)に、当初60元で登録されたドメイン名が現在5万...
Baiduのウェブサイトの包含とKステーションのルールに関する深い理解はじめに:ネットユーザーから、...
Meituan.comのキャンパスチャネル構造の機能の開発と分析を理解するための17枚の写真 --&...
「私たちにとって、ダブル11は背景を変えるだけの問題です。根本的な変化は特に大きくはありません。」ダ...