BT

現役エンジニアが解説する分散システム理論

| 作者: Andrew Morgan フォローする 3 人のフォロワー , 翻訳者 h_yoshida フォローする 1 人のフォロワー 投稿日 2017年6月28日. 推定読書時間: 3 分 |

原文(投稿日:2017/06/12)へのリンク

分散システムのエンジニアで、“RabbitMQ in Action”の共著者でもあるAlvaro Videla氏が、QCon London 2017で、分散システム理論についての講演を行なった。タイミングモデルや障害モードなど、分散システムをさまざまなクラスに分類した上で、それぞれのトレードオフを議論する、という内容だ。

最初に取り上げたのはタイミングモデル(timing model)だ。氏はさまざまなタイミングモデルを紹介し、分散システムがステップに要する時間を認識しているかどうかを論じた。氏は3つのカテゴリを列挙した上で、並行プログラミングにおけるそれぞれの別の意味と混同しないように注意を促した。

  • 同期(Synchronous): 各ステップのタイミングが既知である分散システム。障害検出などの課題には役立つが、現実のシステムを反映してはいない。
  • 非同期(Asynchronous): 各ステップのタイミングに保証はなく、任意の順序でステップを実行する分散システム。実際のシステムに近いが、現実にはタイムアウトが設定される場合がある点などが異なる。
  • 準同期(Semi-synchronous): 何らかのタイミング情報を持ち、各ステップの見積が可能な分散システム。

さらにVidela氏は、プロセス間通信のタイプについても詳しく説明した。これは単純で、メッセージパッシングを通じた通信か、共有メモリ経由の二者択一となる。

Videla氏が挙げた最後の分類は障害モード(failure mode)で、想定されるプロセス障害を決定するものだ。これには次のようなものがある。

  • クラッシュ停止(Crash-stop): プロセスのクラッシュ時にリカバリを行なわない。これは現実を反映したものではない - マシンに障害が発生した場合、廃棄されるのではなく、再利用されるのが普通だからだ。
  • クラッシュリカバリ(Crash-recovery): プロセス障害時、一般的にはリカバリアルゴリズムの類を用いて回復する。データベースからの読み込みや、他プロセスとの通信などがこれに含まれる。
  • オミッション故障(Omission Faults): プロセスがメッセージの送受信に失敗する場合。例としてVidela氏が挙げたのは、グループからのメッセージを受信できるが、返信することのできないキャッシュだ。最新データの獲得は可能であるため、クライアントからは依然として利用することができる。
  • 任意障害モード(Arbitrary Failure Modes): プロセスが誤った情報の送信あるいは受信を始めると、その結果として、システムの状態が無効になる可能性がある。

このようにさまざまなモデルとカテゴリを決定する上で銀色の弾丸は存在しない、とVidela氏は強調する。開発中のシステム要件に基づいて行なう必要のあるトレードオフなのだ。

これらオプションのいくつかは現実のシステムを反映していないが、分散システム理論においては有効である点にも注目すべきだ。これは、新たなアルゴリズムを証明する場合において、これらと組み合わせることによって作業が簡単になるためである。また、シンプルなモデルで機能しないものは複雑なモデルでも機能しない、という暗黙の了解もある。

Videla氏は障害検出器(failure detector)についても言及した。これは、他プロセスの停止の検出に利用されるアルゴリズムである。この場合のおもな問題は、障害の発生したプロセスと、処理に時間を要しているプロセスを識別することだ。ここでは“最終的に完璧な障害検出器(Eventually Perfect Failure Detector)”として、一定時間の経過後にのみプロセス障害を推測する回避策が提示された。この方法であれば、後にそのプロセスが生きていると判明した時、それを障害の推測対象リストから外すとともに、タイムアウトを延長することが可能になる。

講演全体のビデオがオンラインで公開されている。またVidela氏が、講演の内容を記事としても書いている。どちらもクォーラムやコンセンサスといたコンセプトについても触れると共に、さらに詳細を学ぶ上でのアドバイスも与えている。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT