ジェネレーション クロック
サーバーの世代を示す単調増加の番号。
別名: ターム、エポック、世代
課題
リーダーとフォロワーのセットアップでは、リーダーがフォロワーから一時的に切断される可能性があります。リーダープロセスでガベージコレクション一時停止が発生したり、リーダーとフォロワーを切断するネットワークの一時的な中断が発生したりする可能性があります。この場合、リーダープロセスはまだ実行されており、一時停止またはネットワークの中断が終わった後、フォロワーにレプリケーションリクエストを送信しようとします。これは危険であり、その間にクラスターの残りの部分で新しいリーダーが選択され、クライアントからのリクエストが受け付けられている可能性があるためです。クラスターの残りの部分が、古いリーダーからのリクエストをすべて検出することは重要です。古いリーダー自体も、それがクラスターから一時的に切断されたことを検出して、リーダーシップから退職するために必要な是正措置を講じられる必要があります。
解決策
サーバーの世代を示す、単調増加の番号を維持する。新しいリーダー選挙が行われるたびに、世代を増分することでマークする必要があります。世代はサーバーの再起動後も利用できる必要があるので、先行書き込みログの各エントリに保存されます。High-Water Markで説明したように、フォロワーはこの情報をログ内の競合エントリを検索するために使用します。
フォロワーが廃位されたリーダーからメッセージを受け取った場合、フォロワーは世代が低すぎるためにメッセージを認識できます。次に、フォロワーは失敗応答で応答します。
詳細については、oreilly.com のオンライン電子書籍の第 09 章を参照してください。
このパターンは分散システムのパターンの一部です。
2023年11月23日