1. 背景
スタンバイ データベースがトランザクションを再生する場合、互いに独立した複数のトランザクションを同時に再生できます。この方法は主に、同時に再生できる複数のトランザクションの同時再生の問題を解決するために使用されます。複数の同時スキャン スレッドを通じて、モノの再生キューが同時にスキャンされ、同時に再生できる複数のモノが生成され、再生スレッドに同時再生が通知されます。
2. データ構造設計
スタンバイ データベースのトランザクション データは、トランザクション ID に従ってセグメント化され、スタンバイ データベースのトランザクション データ キューに格納されます。以下の図 1 を参照してください。トランザクション ID UUID の完全な無秩序な性質に従って、UUID を同時にスキャンできます。トランザクション ID セグメントごとに。モノ ID UUID をセグメント化した後、それは複数のスキャン スレッド コルーチンに渡され、各スキャン スレッドは特定の UUID パーティションを担当して、複数のスキャン スレッドによる同時スキャンを実行し、再生可能なモノをスキャンします。
3. スレッドのライフサイクル
スキャン スレッドは、再生可能なものを見つけると、モノ ID を txnList に追加し、エンキュー操作を実行します。モノ ID を追加した後、スキャン スレッドは通知操作を実行し、スリープ中の再生スレッドを起動して、トランザクション再生操作の概略図については、以下の図 2 を参照してください。
再生スレッド コルーチンのライフ サイクルは図 3 に示すとおりです。再生スレッドは開始直後はスリープ状態にあり、トランザクション再生がある場合はランダムに起動されます。目覚めたリプレイ スレッド コルーチンは、トランザクション リプレイ タスクを実行し、トランザクションの依存関係をクリーンアップします。
再生可能なトランザクションが見つかった場合、再生可能なトランザクションの数が 1 であることが判明した場合、現在のコルーチンは再生を実行して CPU スイッチのコストを削減します。複数の再生可能なトランザクションが見つかった場合は、再生スレッド コルーチンが再生を実行します。最初のトランザクションを削除します。再生可能なトランザクションの場合、txnList を追加してトランザクション再生のために他のコルーチンを起動し、再生の同時実行パフォーマンスを向上させます。
4. 同時切り替えの問題
同時クリーンアップを採用した場合、CPU 切り替えの問題により、以下の図 4 に示すように、繰り返し発見されるリプレイ可能なトランザクションを処理し、繰り返し発見される同じトランザクション ID に対して防御冪等処理を行う必要があります。したがって、冪等処理を行うには、再実行可能なトランザクションごとに txnIDSet を導入する必要があります。
5. 再生終了の判断方法
同時スキャンと同時再生が採用されているため、再生可能なすべてのトランザクションの再生が完了した後に再生プロセスを終了する必要があります。ここでは再生終了の定義を示します。
再生可能なトランザクションがすべて再生されると、再生は終了したとみなされます。再生可能なトランザクションは、過去に発見された再生可能なトランザクション/現在発見された再生可能なトランザクション/将来発見された再生可能なトランザクションの 3 つのカテゴリに分類されます。
過去に発見された再生可能トランザクションは、現在発見された再生可能トランザクションが再生スレッドによって再生され、UUID をスキャンするスキャン スレッドによって発見されます。
- 過去に発見されたトランザクションの再生を終了する条件は、txnList が空であることです。
- 現在判明しているトランザクション再生終了の条件は、すべての workerStatus の合計が 0 であることです。
- 今後検出されるトランザクションの再生が終了する条件は、再生可能なトランザクションの GatherAll スキャンによってすべてのスキャン スレッドを検出できないことです。
6. パフォーマンスチューニング
CPU の数に応じて、スキャン スレッドと再生スレッドの再生コルーチンの数を動的に調整して、2 つのコルーチンの負荷を合理的に分散できます。これにより、マルチコア プロセッサのパフォーマンスが最大限に活用され、システムのスループットと応答性が向上します。
私はオープンソースの産業用ソフトウェアを諦めることにしました - OGG 1.0 がリリースされ、Huawei がすべてのソース コードを提供しました。Google Python Foundation チームは「コード クソ マウンテン」によって解雇されました 。 Fedora Linux 40が正式リリース。有名ゲーム会社がリリース 新規定:従業員の結婚祝儀は10万元を超えてはならない。チャイナユニコム、世界初のオープンソースモデルLlama3 8B中国語版をリリース。Pinduoduoに賠償判決国内のクラウド入力方式に500万元の罰金- クラウドデータアップロードのセキュリティ問題がないのはファーウェイだけ