j3259の日記: 分散システムにおける総意(プロセスグループ)
分散システムの概念で dynamic uniformity というがある。和訳は知らないが、ここでは動的一様性とする。
Birman, K. P. (2005) Reliable Distributed Systems: Technologies, Web Services, and Applications によると、
A dynamically uniform multicast guarantees that if any process delivers a message (even if it fails immediately upon doing so), all destinations that remain operational will deliver a copy of the message too.
動的一様なマルティキャストはもしあるプロセスがメッセージを配信したなら(例えそのプロセスが直後に故障しても)、生きている残りの宛先の全てのプロセスも同様に配信することを保証する。
配信というのが誤解を招きやすいが、これは send, receive, deliver つまり送信、受信、配信の事を言ってると思われ、プロセスがメッセージを受信後に順番を入れ替えたりしてアプリケーション層にメッセージを引き渡す行為だと思われる。
言い換えると、一つのプロセスにでも受け取られたメッセージは(生きてる)全てのプロセスによって受け取られなければいけない、ということ。
当たり前じゃないか、と言う無かれ。これを実現するのはかなり面倒くさい。現実的にはパフォーマンスが悪すぎるから、動的一様性なんかいらないと Birman は言ってます。異端児なのか、現実的なのかはよく知りません。分散システムにおいて、メンバーが勝手にクラッシュしたり、いなくなったりするのはもう仕方がないだろうと。メンバーの故障を例外とするんじゃなくて、それを前提としてるのがプロセスグループという考え。
例えば、{p, q, r} の三つのプロセスでヴュー V_0 を形成するとして、外部は p, q, r のどれかに適当にアクセスする。途中で r がクラッシュした場合は {p, q} でヴューを構成する。r が復帰したらグループに参加したい旨をグループ会員サービス(GMS) に述べて落ちてる間にあった状態変化をまとめて送ってもらう。で、ヴューは再び {p, q, r} に変わる。
参加者の変化とかは慎重にやるけど、他はがんがん飛ばせるし、ブロックもしないという話みたい。
Birman が実装した Isis Toolkit はニューヨーク証券取引所、フランス航空交通管制システム、米海軍イージス艦などの現場で使われたらしいです。本人が自分で言ってるだけなんだけど。現在は QuickSilver と Ricochet と Tempest というプロジェクトを進めてるらしい。
分散システムにおける総意(プロセスグループ) More ログイン