コンピューティング層の高可用性は、クエリの安定性を確保するために使用されます。
ルーチンのクエリおよび分析タスクを実行する分散シナリオでは、マシンの障害は避けられません。 マシン障害などの例外によって引き起こされるクエリの失敗を回避する方法は、コンピューティング層の高可用性を確保するために考慮する必要があります。
インタラクティブモード
- インタラクティブモードでは、AnalyticDB for MySQLは、大規模並列処理 (MPP) アーキテクチャとメモリ内パイプラインモードを利用します。 中間クエリ結果は保存されません。 レイテンシに敏感で、計算ノードがダウンしているシナリオでは、コンピューティングエンジンはクエリを再試行して、クエリの安定性を確保します。
バッチモード
ETL (Data extract-transform-load) などのデータクレンジングタスクは、完了に時間がかかり、大量のリソースを消費します。 これらの場合、生成されるコストは、クエリの再試行の増加により制御不能になる可能性があります。
コンピューティングがステージごとに実装されるバッチモードでは、障害のコストを最小限に抑えるために、タスクごとにフェイルオーバーを実装できます。
実行ノードの場合、中間クエリ結果はバッチモードでディスクに書き込むことができます。 ノードがダウンしている場合、現在のノードのコンピューティングタスクは失敗します。 タスク系統を使用して、ディスクに保持される最新の中間クエリ結果を見つけることができます。 失敗したコンピューティングタスクのみが再スケジュールされ、結果に基づいて実行されます。 コーディネーターのフロントエンドノードでは、クエリメタデータが保持されます。 新しいコーディネーターノードがクエリメタデータを読み込み、ビジネスに影響を与えることなく、失敗したコンピューティングタスクのスケジュールを継続します。