読取り/書込みマスターの喪失
シャードのマスターを含むホスト・マシンを失うと、シャードは一時的に書込みリクエストに応答できなくなります。書込みリクエストに応答できない時間は短いため、クライアント・コードでは検出されない場合があります。マスターを含むシャードのみがこの停止の影響を受けます。他のシャードはすべて、引き続き通常どおり動作します。
この場合、プライマリ・ゾーン内のシャードのレプリカは、マスターの欠落にすぐに気付き、選択を要求します。これは通常、マスターを失ってから数ミリ秒以内に行われます。
レプリカ・ノードで選択が実施され、最新のデータ・セットを持つプライマリ・ゾーン内のレプリカがマスターとして選択されます。マスターとして選択されるには、プライマリ・ゾーンのノードをホストしている、シャード内の他のマシンからの単純多数票が必要です。多数のマシンがストアから失われた場合、この単純多数要件が影響します。
新しいマスターが選択されると、シャードは操作を続行し、その読取りスループット容量は1つのマシン分減少します。1つのレプリカを失った場合と同様に(前の項を参照)、永続性保証でプライマリ・ゾーン内のすべてのレプリカからの受信確認が要求されていないかぎり、すべての書込み操作を続行できます。
新しいマスターが選択され、書込み操作に使用されているタイムアウト値以内に書込みリクエストを処理すると、クライアント・コードではマスターの欠落が認識されません。ただし、タイムアウトの問題を防ぐ手段を本番コードに含めることをお薦めします。タイムアウトが発生した場合に備えて、次に何を行うかについての意思決定ポリシーをコードに含める必要があります。たとえば、次のようなポリシーが考えられます。
-
すぐに書込み操作を再試行する。
-
定義した待機後に書込み操作を再試行する。
-
書込み操作を完全に中止する。