Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散サービス追跡 (サンプリング収集)

Spring Cloud はマイクロサービス アーキテクチャを構築します: 分散サービス追跡 (サンプリング収集)

分散システムでのリクエスト追跡は、Trace ID と Span ID を通じて実現され、記録された追跡情報は最終的に分析システムによって収集され、過度の遅延があるリクエスト リンクの警告、リクエスト リンクの呼び出し詳細の照会など、分散システムの監視および分析機能を実装するために使用されます。この時点で、分析システムに接続するときに問題が発生します。分析システムが追跡情報を収集する場合、どのくらいの追跡情報を収集する必要がありますか?

[[226406]]

理論的には、収集するトレース情報が多いほど、システムの実際の動作をより正確に反映し、より正確な警告と分析を提供できるようになります。ただし、高度な同時実行分散システムが実行されている場合、多数のリクエスト呼び出しによって膨大な量のトレース ログ情報が生成されます。トレース情報を収集しすぎると、分散システム全体のパフォーマンスに一定の影響が出ます。同時に、大量のログ情報を保存するには、大量のストレージ オーバーヘッドも必要になります。したがって、Sleuth は抽象コレクション メソッドを使用して、収集するトレース情報をマークします。これは、前にログ情報で確認した 4 番目のブール値です。後続のトレース情報コレクターによって情報が取得され、保存されるかどうかを表します。

Sleuth のサンプリング収集戦略は、次のように定義される Sampler インターフェースを通じて実装されます。

  1. パブリックインターフェースサンプラー{
  2. /**
  3. * @戻る 範囲 ない ヌル 追跡システムエクスポートする必要がある
  4. */
  5. ブール値 isSampled(Span span);
  6. }

isSampled メソッドを実装すると、Spring Cloud Sleuth はトレース情報を生成するときにこのメソッドを呼び出して、トレース情報を収集するかどうかのフラグを生成します。 isSampled が false を返したとしても、それはトレース情報が後続のリモート分析システム (Zipkin など) に出力されないことを意味するだけであることに注意してください。リクエストのトレース アクティビティは引き続き実行されるため、コレクション フラグが false に設定されたレコードがログに引き続き表示されます。

デフォルトでは、Sleuth は PercentageBasedSampler によって実装されたサンプリング戦略を使用して、リクエストのパーセンテージとしてトレース情報を構成および収集します。 application.properties で次のパラメータを構成することで、パーセンテージ値を設定できます。デフォルト値は 0.1 で、リクエスト トレース情報の 10% を収集することを意味します。

  1. spring.sleuth.sampler.percentage=0.1

開発およびデバッグ中は、通常、すべてのトレース情報が収集され、リモート リポジトリに出力されます。値を 1 に設定するか、AlwaysSampler Bean を作成してデフォルトの PercentageBasedSampler 戦略をオーバーライドすることができます (実装する isSampled メソッドは常に true を返します)。次に例を示します。

  1. @ビーン
  2. パブリックAlwaysSamplerデフォルトSampler(){
  3. 新しい AlwaysSampler()を返します
  4. }

実際の使用においては、Span オブジェクトに格納されている情報と連携することで、指定したタグのみを含むサンプリング戦略を実装するなど、実際の状況に応じてよりニーズに近いサンプリング戦略を立てることができます。

  1. パブリッククラスTagSamplerはSamplerを実装します{
  2.  
  3. プライベート文字列タグ;
  4.  
  5. パブリックタグサンプラー(文字列タグ) {
  6. this.tag = タグ;
  7. }
  8.  
  9. @オーバーライド
  10. パブリックブール値isSampled(Span span) {
  11. span.tags().get(tag) != nullを返します
  12. }
  13. }

追跡ログ情報のデータ値は、多くの場合、1 週間などの最新の期間内でのみ有効です。サンプリング戦略を設計する際には、主に、システムに明らかなパフォーマンスの影響を与えることなく、ログ保持時間ウィンドウ内でストレージスペースを最大限に活用してサンプリング戦略を実装するという原則を考慮します。

完全な例:

読者は、自分の好みに応じて、次の 2 つのリポジトリで trace-1 プロジェクトと trace-2 プロジェクトを表示することを選択できます。

Github: https://github.com/dyc87112/SpringCloud-Learning/

gitee: https://gitee.com/didispace/SpringCloud-Learning/

【この記事は51CTOコラムニスト「Zhai Yongchao」によるオリジナル記事です。転載の許可を得るには、51CTO を通じて著者に連絡してください。

この著者の他の記事を読むにはここをクリックしてください

<<:  エッジコンピューティングとクラウドコンピューティングの比較

>>:  企業がマルチクラウドアーキテクチャを構築するための4つのステップ

推薦する

ウェブサイトの掲載量を迅速かつ大幅に増やす方法

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますこれらのデ...

大物キャスターが生放送室から「脱出」

昨年末の大物キャスターの脱税事件以来、ライブ配信業界の余波は未だ収まっていない。年末にはトップキャス...

医療ウェブサイトのGoogleトラフィックがBaiduを上回る理由についての補足と考察

今日、A5で「医療ウェブサイトのGoogleトラフィックがBaiduを上回る理由の詳細な分析」という...

ユーザーエクスペリエンスとは何ですか?それは、競合他社よりも早く問題点を発見し、迅速に解決することを意味します。

今日は小さな温度計から始めましょう。先週の夜、小規模なO2Oサロンに参加した後、屈強な男性が私を呼び...

Baiduを簡単に信頼せず、ウェブサイトの説明を簡単に変更しないでください

【ガイド】昨晩と今朝早くのBaiduの大きなアップデートから、私は教訓を得ました:Baiduを簡単に...

#blackfriday# hostodo - 3gメモリOVZ年間支払い13米ドル/ 1gメモリKVM年間支払い15米ドル/ Alipay

Hostodo は、ブラックフライデー VPS プロモーションを提供しています。VPS が配置されて...

春節後、数百の共同購入企業が地元のサービス製品を放棄し、物理的な商品の共同購入に参加した。

春節後、共同購入業界は急速に再編され、数百の共同購入企業が地元のサービスを放棄している。中小規模の共...

ウェブメディアマーケティングを考える

Weibo と WeChat の台頭により、何百万人もの草の根インフルエンサーが誕生し、その中には何...

2018 年のクラウド コンピューティングの 7 つのトレンド

2017 年も終わりに近づくにつれ、企業や IT 幹部は、ビジネス目標を達成するためにクラウド コン...

微信の海から見る:微信の「愛人」たちはどうやって「太ももにしがみつく」のか?

最近、WeChatの「愛人」の1つであるWeChat Hai Companyが、8000万人民元の投...

中国のバレンタインデーに向けて電子メール マーケティングを革新するにはどうすればよいでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています中国のバレ...

pumpcloud-高帯域幅香港直接接続VPSレビュー/NetflixとTVBを視聴可能/Windowsで

ここで、一部のハイエンドユーザーにpumpcloudの香港VPSをお勧めする必要があります。本当にハ...

クラウドサービス利用の課題: 間違ったアーキテクチャは硬直性と失敗を意味する

クラウドサービスの移行作業は膨大です。残念ながら、私たちはオンプレミス展開でのこれまでの経験という狭...

Tuanbao.comが倒産の噂:任春雷が第二のビジネスを始める可能性

Tuanbao.comのCEOであるRen Chunlei氏が資金調達に失敗し、破産宣告しようとして...

OpenHarmony 分散ソフトバスプロセス分析 v1.0丨1。発見終了、リリースサービス

[[408690]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...