投稿

ラベル(分散アルゴリズム)が付いた投稿を表示しています

Paxos と Raft ― 分散合意を理解するために必要なこと

イメージ
0章:イントロダクション — お金を動かす“合意” こんにちは。久しぶりの投稿になります。 アドベントカレンダーの時期は、ふだん記事化できていないテーマに取り組む良いきっかけになりますね。 今年のテーマは 「Raft と Paxos」 です。 分散システムにおける合意(Consensus)アルゴリズムといえばまず Paxos が挙がります。しかしその説明は、歴史的背景も構造も含めて、とにかく難解です。一方の Raft は、あえて「理解しやすさ」を設計思想に据えて作られたアルゴリズムです。 本記事では、この2つのアルゴリズムを “歴史の Paxos” と “実装の Raft” という対比の軸で読み解いていきます。 ただし、いきなりアルゴリズムそのものに飛び込んでしまうと唐突なので、まずは「そもそも分散システムに“合意”はなぜ必要なのか?」という直感的なところから話を始めていきます。 0.1 分散システムで銀行口座を扱うという仮想世界(改訂案) まずは、直感的に理解しやすい“仮想の銀行システム”で考えてみましょう。 これは実際の銀行の仕組みとは異なりますが、**「なぜ合意が必要か」**を説明するには最適な例えです。 一般的に銀行システムは RDB などを中心とした堅牢なアーキテクチャを持ちますが、ここでは一旦それを横に置き、次のような少し極端な世界を想定します。 RDB を中央集約せず、 各サーバが独立したコピーの残高データを持っている 3〜5 台のサーバに残高を複製し、どのサーバも同じ残高に到達する必要がある サーバは落ちたり復帰したりする ネットワークは遅延するし、順序も入れ替わり、メッセージがロスすることもある (補足) 実際の金融システムや生命に関わるシステムでは、この記事で説明する合意アルゴリズムよりもさらに高い保証が必要です。そのため、ここで紹介するメカニズムが“どこにでも”使われているわけではありません。ただし 「どうやって複数台の状態を揃えるのか」 を理解するうえでは十分役に立ちます。 この前提のもとで扱う世界は、常に 不確実 です。 だからこそ、すべてのサーバが同じ状態に到達するためには 「操作が同じ順序で実行されること」 が絶対条件になります。 “合意”とは、この順序を全サー...

分散アルゴリズム:ワイヤレスモバイルネットワークの大きさを調べたい!

イメージ
 この投稿は、 FOLIO Advent Calendar 2024  の19 日目の記事になります。  このブログを更新するのもとても久々ですね。いくつかの書きかけのブログの残骸を見て、数年間公開を放置していることを実感します。。。 概要  前回の投稿では、論理時間について書きました。論理時間自体はとても古く、分散アルゴリズムの基本中の基本のひとつになっています。今回は少し新しい話を書こうかと思います(そう思っていました)。今回紹介するアルゴリズムは、モバイルノード群がある一定の大きさの空間に存在する際に、その空間内にいくつのモバイルノードが存在するのかを、モバイルノード群が自律的に検出するアルゴリズムです。何か最新のアルゴリズムでも紹介しようと新しいものを探していた時に、偶然見つけた論文のさらに基礎になっているアルゴリズムがあったので、それを紹介します。(その結果、全然新しくなくなりました。)2010年に公開された少し古いアルゴリズムではありますが、簡単でわかりやすいものです。環境は、自律的に移動可能なモバイルノードがたくさん(数千や数万)存在するような環境でも、システム内にいくつのモバイルノードが存在するのかを検知可能なアルゴリズムです。  出典は、Kuhn, Fabian, Nancy Lynch, and Rotem Oshman. “Distributed Computation in Dynamic Networks.” Proceedings of the 42nd ACM Symposium on Theory of Computing - STOC ’10. Cambridge, Massachusetts, USA, 2010. 513. Copyright 2010 ACM こちらになります。 Distributed Computation in Dynamic Networks この論文では、主に3つのアルゴリズムを紹介しています。 ネットワーク内に存在するノードの数を検出する問題 リーダー選出問題 噂の伝搬を使ったグループメンバーシップ問題  これらのアルゴリズムを実現するためには、いくつかの前提を置く必要があります。まず、ノードは無線通信等を利用する可動式のノードで構成され、ネットワークの形状(トポロジ)が動的に変化することがで...