blog

ShardingSphere 4.x オーケストレーション・ガバナンス・アプリケーション・パフォーマンス・モニタリング・インテグレーション

APM は Application Performance Monitoring の略です。現在、APMの主な機能は分散システムの性能診断に重点を置いており、コールチェーン表示、アプリケーショントポロ...

Jan 23, 2020 · 3 min. read
シェア

コンテキスト

APMとは、Application Performance Monitoringの略で、アプリケーション・パフォーマンス・モニタリングのことです。現在、APMの主な機能は分散システムのパフォーマンス診断にフォーカスしており、コールチェーン表示、アプリケーショントポロジー分析などが主な機能です。

ShardingSphere は、アプリケーション・パフォーマンス・モニタリング・データの取得、保存、表示を行いません。 その代わりに、2 つのデータ・スライスである SQL 解析と SQL 実行に関するコア情報を、アプリケーション・パフォーマンス・モニタリング・システムに送信して処理します。言い換えれば、ShardingSphere は価値あるデータを生成し、それを標準プロトコルを介してシステムに配信することのみを担当します。ShardingSphere は、アプリケーション・パフォーマンス・モニタリング・システムと 2 つの方法でインターフェイスできます。

最初の方法は、OpenTracing APIを使用してパフォーマンス・トレース・データを送信することです。OpenTracingプロトコルを指向するAPM製品は、SkyWalking、Zipkin、JaegerのようなShardingSphereと自動的にインターフェイスすることができます。このアプローチの利点は、APMプレゼンテーション・システムとして、すべてのOpenTracing互換製品と互換性があることです。 導入企業が独自のAPMシステムを実装する意思があれば、OpenTracingプロトコルを実装するだけで、ShardingSphereからのリンク・トレーシング情報を自動的に提示することができます。欠点は、OpenTracingプロトコルの開発が安定していない、少ないの実装の新しいバージョンでは、プロトコル自体があまりにも中立的な、関連製品のパーソナライズされた実装のためのネイティブサポートほど強力ではないということです。

もう一つは、SkyWalkingのオートプローブを利用する方法です。ShardingSphereチームはSkyWalkingチームと協力し、SkyWalkingにShardingSphere Auto Probeを実装しました。

使用方法

OpenTracing プロトコルの使用

起動時にパラメータを追加

 -Dorg.apache.shardingsphere.opentracing.tracer.class=org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer

初期化メソッドの呼び出し

 ShardingTracer.init();
 ShardingTracer.init(new SkywalkingTracer());

SkyWalking Auto Probeの使用方法

効果

どの方法を使っても、ドッキングシステムにAPM情報を表示するのは簡単です。以下はSkyWalkingの例です。

アプリケーションアーキテクチャ

Sharding-Proxyを使用して、2つのデータベース192.168.0.1:0336と192.168.0.2:0336にアクセスし、それぞれのデータベースに2つのサブテーブルを作成します。

トポロジー図

グラフから、ユーザーはSharding-Proxyアプリケーションに18回アクセスし、1回のアクセスにつきデータベースごとに2回アクセスしています。これは、各アクセスが各ライブラリの2つのサブテーブルを含むため、毎回4つのテーブルにアクセスすることになります。

トレースデータ表示

トレースグラフからSQLの解析と実行を見ることができます。

/Sharding-Sphere/parseSQL/ このSQLの解析性能を示します。

/Sharding-Sphere/executeSQL/ 特定の実行における実際のSQLのパフォーマンスを示します。

トレースグラフから、異常が発生したノードを確認することができます。

/Sharding-Sphere/executeSQL/ SQL例外の実行結果を示します。

/Sharding-Sphere/executeSQL/ SQL 実行例外のログを示します。

Read next

JSスコープ、実行コンテキスト、クロージャ

スコープとは、コードの実行中に変数や関数にアクセスできる範囲のことです。たとえば、共有で貸し出す部屋は、共有スペースといくつかの個室に分かれています。共有スペースにはすべてのテナントがアクセスできますが、個室にはそのテナントしかアクセスできません。変数や関数も同様で、任意の範囲のコードでアクセスできるものと、特定の範囲のコードでしかアクセスできないものがあります(...)。

Jan 23, 2020 · 8 min read