PDマイクロサービス
バージョン8.0.0以降、PDはマイクロサービスモードをサポートします。このモードでは、PDのタイムスタンプ割り当て機能とクラスタスケジューリング関数が、独立してデプロイされた以下の2つのマイクロサービスに分割されます。これにより、これらの2つの関数はPDのルーティング機能から分離され、PDはメタデータのルーティングサービスに集中できるようになります。
tsoマイクロサービス: クラスター全体に対して単調に増加するタイムスタンプ割り当てを提供します。schedulingマイクロサービス: 負荷分散、ホットスポット処理、レプリカ修復、レプリカ配置など、クラスター全体のスケジュール関数を提供します。
各マイクロサービスは独立したプロセスとしてデプロイされます。マイクロサービスに複数のレプリカを設定すると、マイクロサービスはプライマリ/セカンダリフォールトトレラントモードを自動的に実装し、サービスの高可用性と信頼性を確保します。
使用シナリオ
PDマイクロサービスは通常、PDにおけるパフォーマンスのボトルネックを解消し、PDサービスの品質を向上させるために使用されます。この機能により、以下の問題を回避できます。
- PD クラスターの過剰な圧力により、TSO 割り当てにおけるロングテールのレイテンシーまたはジッターが発生する
- スケジューリングモジュールの障害により、クラスタ全体のサービスが利用できなくなります
- PDのみに起因するボトルネックの問題
さらに、スケジューリング モジュールが変更された場合、PD を再起動せずにschedulingマイクロサービスを個別に更新できるため、クラスターのサービス全体への影響を回避できます。
注記:
クラスターのパフォーマンスボトルネックの原因が PD ではない場合は、マイクロサービスを有効にする必要はありません。マイクロサービスを使用するとコンポーネントの数が増え、運用コストが上昇するからです。
制限
- 現在、マイクロサービス
tso動的な起動と停止をサポートしていません。マイクロサービスtso有効化または無効化した後、変更を有効にするには PD クラスターを再起動する必要があります。 - TiDBコンポーネントのみがサービス検出を通じて
tsoマイクロサービスへの直接接続をサポートしますが、他のコンポーネントはタイムスタンプを取得するために PD を通じてtsoマイクロサービスにリクエストを転送する必要があります。 - マイクロサービスはデータレプリケーション自動同期(DR自動同期)機能と互換性がありません。
- マイクロサービスは TiDB システム変数
tidb_enable_tso_follower_proxyと互換性がありません。 - 休止状態領域クラスター内に存在する可能性があるため、
schedulingマイクロサービスのプライマリおよびセカンダリの切り替え中に、冗長なスケジュールを回避するために、クラスターのスケジュール機能が一定期間 (最大peer-stale-state-check-interval、デフォルトでは 5 分) 使用できなくなる可能性があります。
使用法
PD マイクロサービスはTiDB OperatorまたはTiUP使用してデプロイできます。
TiDB Operatorを使用してデプロイされた TiDB クラスターの場合は、次のドキュメントに従って PD マイクロサービスをデプロイおよび構成できます。
TiUPを使用してデプロイされた TiDB クラスターの場合、次のドキュメントに従って PD マイクロサービスをデプロイおよび構成できます。
- PDマイクロサービスのデプロイ
- PDマイクロサービスノードのスケール
tsoマイクロサービスを構成するschedulingマイクロサービスを構成する
TiUP Playground を使用して TiDB ローカル クラスターに PD マイクロサービスをデプロイおよび構成するには、次のドキュメントを参照してください。
注記
PD マイクロサービスをデプロイして使用する場合、次の点に注意してください。
マイクロサービスを有効にしてクラスターのPDを再起動すると、PDはクラスターへのTSOの割り当てを停止します。そのため、マイクロサービスを有効にする際には、クラスターに
tsoマイクロサービスをデプロイする必要があります。schedulingマイクロサービスがクラスターにデプロイされている場合、クラスターのスケジューリング機能はschedulingマイクロサービスによって提供されます。5schedulingマイクロサービスがデプロイされていない場合でも、クラスターのスケジューリング機能はPDによって提供されます。schedulingマイクロサービスは動的スイッチングをサポートしており、これはデフォルトで有効になっています(enable-scheduling-fallbackデフォルトでtrueに設定されています)。7schedulingサービスのプロセスが終了した場合、PD はデフォルトでクラスターのスケジューリングサービスを継続します。schedulingマイクロサービスと PD のバイナリバージョンが異なる場合、スケジューリングロジックの変更を防ぐため、pd-ctl config set enable-scheduling-fallback false実行してschedulingマイクロサービスの動的切り替え機能を無効化できます。この機能を無効化すると、schedulingマイクロサービスのプロセスが終了しても PD はスケジューリングサービスを引き継ぎません。つまり、schedulingマイクロサービスが再起動されるまで、クラスターのスケジューリングサービスは利用できなくなります。
ツールの互換性
マイクロサービスは、データのインポート、エクスポート、その他のレプリケーション ツールの通常の使用には影響しません。
よくある質問
PD がパフォーマンスのボトルネックになるかどうかをどのように判断すればよいですか?
クラスターが正常な状態であれば、Grafana PDパネルで監視メトリクスを確認できます。1
TiDB - PD server TSO handle timeメトリクスでレイテンシーが著しく増加している場合、またはHeartbeat - TiKV side heartbeat statisticsメトリクスで保留中の項目が多数表示されている場合は、PDがパフォーマンスのボトルネックになっていることを示しています。