クラウド コンピューティングと分散システムの人気に伴い、パフォーマンスの監視とチューニングは多くの開発者にとって必須のコースとなっています。分散トレーシング テクノロジは、分散システムのエンドツーエンドのパフォーマンス監視および調整サービスを提供できます。この記事は、Beego フレームワークでのパフォーマンス分析に分散トレーシングを使用する方法を説明することで、開発者がパフォーマンス チューニングをより適切に実行できるように支援します。
分散トレーシングは、分散システム内のさまざまなサービス間のデータ送信とコードの実行ステータスを追跡および記録できる分散システム監視テクノロジです。システム運用プロセスに存在するボトルネックや問題を解決し、システムの安定性や保守性を向上させます。
分散トレーシングには通常、スパン、トレース、コンテキストという 3 つの中心的な概念が含まれます。このうち、スパンは、分散システムで特定のリクエストを処理するプロセスに含まれるいくつかのキーポイントを指します、トレースは、複数のスパンを含む完全なサービス呼び出しリンクを指します、コンテキストはトレース内に作成されます コンテキスト情報には、関連する多くのメタデータが含まれますトレースする。
Beego は高性能の Go 言語 Web フレームワークであり、その利点の 1 つは、高速な応答時間と高い同時実行機能です。ただし、分散システムとして、Beego はさまざまなパフォーマンス チューニングや問題診断の課題にも直面しています。現時点では、分散トレーシングテクノロジーを Beego に統合することで、パフォーマンスの監視とチューニングを実行できます。分散トレーシングにより、分散システム内のさまざまなサービス間のデータ転送とコードの実行状況を包括的に追跡し、システム内のパフォーマンスのボトルネックや問題を迅速に発見して解決できます。
Beego に分散トレーシングを統合するには、まず分散トレーシング フレームワークを決定する必要があります。ここでは、2 つのオープンソース分散トレーシング フレームワーク [Dapper](https://research.google/pubs/pub36356/) と [Jaeger](https://www.jaegertracing.io/) を選択しました。
Dapper は、クロス言語およびクロスプラットフォームの分散トレースをサポートできる Google オープンソースの分散システム コール リンク トレース ツールです。
Beego で Dapper を使用するには、監視したいコード セグメントを Dapper が正しく追跡できるように、コードにいくつかのコメントを追加する必要があります。 Beego では、次のメソッドを使用して Dapper アノテーションを追加できます:
func foo() { // Start a new span span := dapper.StartSpan("foo", ctx) defer span.End() // perform some operation // ... // annotate the span with some metadata dapper.Annotate(span, "metadata", "value") }
上記のコードでは、まず dapper.StartSpan 関数を使用して新しいスパンを開始します。この期間中に、Dapper はいくつかのキー ポイントを記録しますとメタデータを収集し、その後の追跡と集計での分析を容易にするための一意のスパン ID を生成します。次に、 dapper.Annotate 関数を使用して、パフォーマンス分析のためのより詳細なコンテキスト情報を提供できる Span 関連のメタデータを追加します。
Jaeger は、Uber がオープンソース化した分散トレーシング システムであり、複数のプログラミング言語とプラットフォームをサポートし、完全なトレーシング システムを提供します。 Beego で Jaeger を使用するには、まず、Jaeger クライアント ライブラリをコードに追加する必要があります。
Beego で Jaeger を使用する方法は 2 つあります。1 つは OpenTracing API を使用する方法、もう 1 つは Jaeger 固有の API を使用する方法です。ここでは、OpenTracing API の使用方法を説明します。
最初に OpenTracing API と Jaeger クライアント ライブラリをインポートする必要があります:
import ( "github.com/opentracing/opentracing-go" "github.com/uber/jaeger-client-go" )
次に、Jaeger Tracer オブジェクトを初期化し、コードに Trace と Span を追加する必要があります:
func foo() { // start a new span span := opentracing.StartSpan("foo") defer span.Finish() // perform some operation // ... // tag the span with some data span.SetTag("metadata", "value") }
上記のコードでは、opentracing.StartSpan 関数を使用して新しい Span を開始し、span.Finish 関数をこの Span の終了モジュールとして使用します。この期間中、Jaeger はいくつかの Span 関連のメタデータを記録します。次に、span.SetTag 関数を使用して、パフォーマンス分析のためのより詳細なコンテキスト情報を提供できるいくつかのタグを Span に設定します。
分散トレーシング テクノロジは、パフォーマンス分析とチューニングの新しい方法を提供し、分散システム内のボトルネックや問題を迅速に追跡して特定し、システムの安定性と保守性を向上させるのに役立ちます。 Beego の分散トレーシング テクノロジーを使用すると、2 つのオープン ソースの分散トレーシング フレームワークである Dapper と Yeter を統合して、システム パフォーマンスの管理と監視を改善できます。
以上がBeego でのパフォーマンス分析に分散トレーシングを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。