いくつかのマシンをエラスティック クラスターに投入し、その中で何らかのコンセンサス アルゴリズムを実行したいとします (Paxos など)。彼らがネットワークの初期サイズ、たとえば 8 台のマシンを知っているとします。
したがって、彼らはコンセンサス アルゴリズムを実行し、定足数は 5 です。
ここで、次のケースを検討してください。
- CPU が少なすぎることがわかり、クラスター サイズを半分の 4 台のマシンに減らしました。
- パーティション分割があり、各分割には 4 台のマシンが割り当てられます。
クォーラムを取得するために現在のクラスター サイズを使用すると、パーティションが分割される可能性があります。基礎となるクラスターの場合、状況 (1) と (2) はまったく同じに見えます。ただし、固定数を使用すると、クラスターをスケールダウンできません (スケールアップすると、パーティションによる不整合が発生します)。
スケーリング時にすべてのマシンにクラスターのサイズを通知する 3 つ目の方法がありますが、たとえば、スケールアップの直前にパーティションが発生し、そのパーティションが新しいサイズを受け取らず、十分なクォーラムを持っていない可能性があります。古いサイズを使用したコンセンサス。
Paxos (およびその他の安全なコンセンサス アルゴリズム) は、柔軟な環境では使用できませんか?