は、ラフティングリーダーはクライアント要求を同期または非同期で処理しますか?いかだで
- 領収書を要求、
- エスケープログエントリ、
- リーダーは、ステートマシン
- に適用されます
- 、RPCを送信し、最終的にクライアントを応答します。
このプロセスには時間がかかるため、次のリクエストを処理する方法はありますか?
は、ラフティングリーダーはクライアント要求を同期または非同期で処理しますか?いかだで
このプロセスには時間がかかるため、次のリクエストを処理する方法はありますか?
ラフトのポイントは、まだ作業しているすべての参加者が、システムの状態が合意していることです(または、合意が何であるかを知る時間があれば、少なくともそれを行う必要があります)。これは、どのメッセージがどの順序で受信されたかにすべて同意することを意味します。これはまた、それらがメッセージを受信した結果を計算するときに、すべて同じ回答を得なければならないことを意味します。したがって、メッセージを順次処理する必要があります。また、メッセージを並行して処理する場合は、トランザクションとロックなどを使用して、メッセージが順次処理されているかのように処理する必要があります。負荷がかかっている状態では、応答が遅れたり、送信者の速度を遅くするために使用される他の種類のバックプレッシャーがありますが、あまりにも忙しいのでメッセージをドロップすることはできません。参加者はこれについて同じ決定を下す。
ほとんどのラフト実装ではパイプラインを使用しているため、マスターからスレーブへの飛行中に複数のログエントリを作成できます。 しかし、マスタは、このクライアント要求が書き込まれたログオフセット以上のログオフセットに対して、マスタがスレーブのクォーラムからACK応答を受信した後、成功しただけでクライアント書き込み要求に応答します。