分散システムの可視化

複数の機械では、キーをどこへ置くか、資源を一取引として更新できるか、障害中も複製ログを保てるかという別の問いが生じます。コンシステントハッシュ、二相コミット、Raft がそれぞれを扱います。ノードとメッセージを描いていても、保証は交換できません。

キャッシュ環は容量変更時の移動を減らし、送金は A・B・監査ログをすべて変更するか何も変更しないかを求めます。複製された制御系は遅延や分断でも一つのコミット済み履歴を保ちます。目的から方式を選びます。

レッスンの比較

レッスン問い決定規則失敗境界
コンシステントハッシュ構成変更後にキーを持つ物理ノード固定キーから時計回りの最初の活動 token一 token の変更は隣接区間を移す。均衡は改善しても保証はしない
二相コミットA・B・ログが一緒に変われる時点全参加者が YES、その後に同じ決定を受け取る一 NO ですべて中止。調整役の故障で準備ロックが残る
Raft 合意エントリーがコミット済み履歴になる時点多数がリーダーを選び、その現 term の項目を保存少数は保存できてもコミットできない

Raft の五台中三台では三資源の取引を原子的にできません。2PC の全員同意を五副本のログへ使うと、二副本の遅延で止まります。コンシステントハッシュは配置を決めるだけで、複製や競合書き込みの裁定はしません。

推奨する学習順序

コンシステントハッシュの加入例から始めます。K11 が token のゼロを越え、N4@220 が (140, 220] を引き受けます。K5、K6、K7 の所有者が変わり、九キーは残ります。離脱では区間を時計回りの後継へ渡します。仮想ノードでは、固定キーの負荷 3/2/7 -> 4/5/3 を比べます。

次は二相コミットの全 YES です。二票の時点、調整役の COMMIT 決定、P1 が PREPARED で A がまだ 100 の待機窓で止めます。一 NO では YES を投じた参加者も戻り、調整役のクラッシュではロックが残ります。

最後は Raftの選挙とコミットです。三票がリーダーを作り、現 term の項目を三台が保存するとコミット可能になります。少数分断の二台は set y=7 を保存しても 2 / 5 で止まり、三台側は高い term のリーダーを選び、同じ索引へ別項目をコミットします。

配置、原子性の調整、複製合意の順に学びます。所有者と参加者、準備値とコミット項目、ハッシュの token と票数を混同しないでください。

注目する点

  • 構成が変わってもキーの点は動かず、時計回りの後継だけが変わります。
  • 仮想ノードは同じ物理機械の別 token 位置で、別の機械ではありません。
  • 2PC の紫の提案値はロック済みで未適用です。二 YES は need ALL YES を満たしません。
  • Raft の二コピーは majority = 3 を満たしません。保存とコミットは別段階です。
  • 調整役の故障は準備済み 2PC 参加者を止め得ます。Raft の分断は多数を持たない側のコミットを止めます。
  • 三方式は互いの保証を代替しません。配置にハッシュ環、各シャードの複製に Raft のように組み合わせます。

レッスンを選び、時計回りの後継、全員の票、多数派という決定の証拠を追ってください。