Heartbeat - ノードの死活監視

ハートビート(heartbeat)は、ノードが「自分は生きている」という短い信号を一定間隔で送り続け、受け取る側がその途絶をもって障害と判断する仕組みです。ここでは、ノードが停止する故障だけを扱います。誤った値を返す故障(ビザンチン障害)の検知は、ハートビートの範囲外です。 ...

2026年8月5日 · 更新: 2026年8月18日 · 11 分 · nchika

Lease - 期限付きで権利を貸す仕組み

Lease(リース)は、ある権利を期限付きで貸し出し、期限が過ぎたら自動的に失効させる仕組みです。貸す側は「これから 10 秒間、あなたがリーダーです」と伝え、借りた側は期限が来る前に更新を続けます。更新が途切れれば、誰の操作も無しに権利は消えます。 ...

2026年8月5日 · 更新: 2026年8月18日 · 9 分 · nchika

WAL - 書き込み先行ログと 2 つのウォーターマーク

WAL(Write-Ahead Log、書き込み先行ログ)は、状態を変更する前にその変更内容を追記専用のファイルに書き、ディスクに書き終えてから応答を返す仕組みです。再起動した時は、スナップショットやチェックポイント以降のログを読み直して同じ変更を適用し、停止する直前の状態を復元します。利用できるスナップショットが無ければ、ログの先頭から再生します。ここでは、1 台のサーバが状態を失わないための WAL から、ログを複製した時に現れる 2 つの位置までを扱います。 ...

2026年8月5日 · 更新: 2026年8月18日 · 15 分 · nchika

Quorum - 過半数で決定を成立させる仕組み

Quorum(クォーラム、定足数)は、ある操作を成立させるために応答が必要なノードの最小数です。同じ値を複数のノードに持たせる複製の構成では、全ノードの応答を待たず、この数だけ集まった時点で操作を確定させます。最も広く使われるのは過半数を要求する構成で、N 台のクラスタなら N / 2 + 1 台(小数点以下は切り捨て)の応答で成立します。前提として、故障はノードの停止とネットワークの分断だけを考えます。誤った値を返す故障(ビザンチン障害)には触れません。 ...

2026年8月6日 · 更新: 2026年8月19日 · 12 分 · nchika

Leader and Followers - 更新を 1 台に集約する複製の型

Leader and Followers は、同じデータを複製して持つノードのうち 1 台を Leader に決め、更新を全て Leader が受け付けて残りの Follower に配る構成です。更新の受け口が 1 台に絞られるため、同じデータへの更新の順序は Leader が決めた 1 つに定まります。想定する故障は、ノードの停止とネットワークの分断の 2 つです。誤った値を返す故障(ビザンチン障害)には触れません。 ...

2026年8月7日 · 更新: 2026年8月19日 · 15 分 · nchika

2PC - 確定か中止を全参加者で揃える

2PC(Two-Phase Commit、2 相コミット)は、複数の DB にまたがる 1 つの更新について、関わった全員の最終的な判断が確定(commit)か中止(abort)のどちらか一方に揃うようにする手順です。確定できるかを全員に問い合わせる準備フェーズと、決めた結果を配る決定フェーズの 2 段階で進む事が名前の由来です。想定する故障は、参加するプロセスの停止と通信の途絶です。誤った値を返す故障(ビザンチン障害)には触れません。 ...

2026年8月10日 · 更新: 2026年8月19日 · 13 分 · nchika

Idempotency - 同じ要求を何度受け取っても結果を 1 回分に保つ

決済 API に課金の POST を送り、504 Gateway Timeout が返ってきたとします。課金が成立したのか、要求が届かないまま終わったのかは、この応答からは分かりません。 冪等(べきとう、idempotent)は、同じ操作を 1 回実行した時と、繰り返し実行した時とで、要求した側が意図した結果が同じになる性質です。上の POST が冪等なら、もう一度送っても課金は 1 回分に留まります。本ノートでは、要求の再送で生じる重複を説明します。誤った値を返す故障(ビザンチン障害)と、複数の要求を跨いだ順序の保証には触れません。 ...

2026年8月18日 · 更新: 2026年8月19日 · 10 分 · nchika

Transactional Outbox - DB 更新とイベント送信を食い違わせない

書き込み先が 2 つある注文を例に説明を始めましょう。書き込み先の 1 つは注文の記録をする DB、もう 1 つは在庫や配送を担う別のサービスに「注文が確定した」と伝えるためのメッセージブローカー(メッセージを預かって配る仕組み)です。 ...

2026年8月18日 · 更新: 2026年8月19日 · 8 分 · nchika