P2Pシステム上での安定したサービス提供基盤musasabi
-
Upload
kota-abe -
Category
Technology
-
view
1.622 -
download
0
Transcript of P2Pシステム上での安定したサービス提供基盤musasabi
大阪市立大学 大学院創造都市研究科情報システム創成研究分野
安倍 広多
2009/3/5 I OT/SI TE/I A 合同研究会
2009/3/52009-IOT-04 1
P2P方式は単一故障点がないため耐故障性が高いと言われるが,裏では結構苦労している
P2Pネットワークのピアは離脱(or 故障)するので,P2Pアルゴリズム /ソフトウェアでは障害対策が必須◦ 障害検出◦ データが失われないように複製を配置◦ バックアップポインタを維持
2009/3/52009-IOT-04 2
ピアを(仮想的に)離脱しないようにする P2Pネットワーク上の複数のピアをグループ化 複数のピアで冗長系を構成(仮想ピア)◦ 一部のピアが離脱しても仮想ピアは落ちない◦ ファイルシステムのミラーリングに類似
ピアが離脱したら別のピアを補充
2009/3/52009-IOT-04 3
…仮想ピアは信頼性が高いので◦ 仮想ピアを単位としてシステムを構成することでP2Pソフトウェアの障害対策を簡素化◦ P2Pネットワーク上で仮想的なサーバをつくる ハイブリッドP2Pのサーバを置き換える 単一故障点になる物理的サーバを排除◦ スーパーピアとして利用 スーパーピア : 他のピアよりも重要な役割を持つピア
安定性が求められる
2009/3/52009-IOT-04 4
プロセス
プロセス
プロセス
musasabi
P2Pシステムで安定的にサービスを実行するための基盤ソフトウェア
提案方式のプロトタイプを実装 100% pure Java P2Pシステムの各ピアではmusasabi を実行
musasabi 上ではユーザの Javaアプリケーションを実行可能(プロセス)
PI AXを拡張して実装◦ PI AX: P2Pエージェントプラットフォ
ーム [阪大 , BBR]◦ Ski p Graph (範囲検索が可能な構造化オーバレイ ), ALM (Appl i cati on Level Mul ti cast) などを提供
2009/3/52009-IOT-04 5
PIAX
Java VM
Windows, MacOS X, Linux etc.
Overlay Transport
ALMSkip Graph
プロセス制御
仮想ピア制御
Java アプリケーション
仮想ピア
仮想ピアを構成するピア : メンバピア◦ P2P ネットワークのピアから選ぶ
各メンバピア上ではプロセスが動作◦ 仮想ピアの動作を決めるアプリケーション
各プロセスが冗長系を構成◦ 各プロセスは基本的に同一状態◦ 変数の値や保持するファイル内容などが同一
データではなくプロセスを複製する 課題◦ プロセス状態の一貫性確保◦ ピアの離脱対策
提案方式(続き)提案方式(続き)
2009/3/52009-IOT-04 6
プロセスは外部からの入力(メッセージ)のみに従って状態を変更する(制約)
プロセスの一貫性を確保するために各プロセスが同一の入力系列を受信することを保証する◦ メッセージ送信者が複数存在する場合は簡単ではない◦ Paxos合意アルゴリズムを用いて実現
2009/3/52009-IOT-04 7
仮想ピア
同一の入力系列
ピア
ピア
ピア
合意アルゴリズムとは◦ 分散システムの複数の参加者の間で,唯一の値を選ぶアルゴリズム
Paxos 合意アルゴリズム [L. Lamport]◦ ネットワークの前提
メッセージは遅延・重複・喪失する 送信した順に受信されるとは限らない
◦ 唯一のリーダだけが値を提案できる リーダはリーダ選出アルゴリズムで選ぶ
◦ 過半数の参加者が値を受け入れると合意成立◦ 値の系列(複数の値)にも適用できる◦ リーダが複数存在しても一貫性は崩れない
PaxosPaxos 合意アルゴリズム合意アルゴリズム
2009/3/52009-IOT-04 8
2009/3/52009-IOT-04 9
リーダピア
ピア ピアmsg A
Begin(msg A,1)
Accept
Success(msg A,1)
A を処理
A を処理
A を処理
仮想ピア
リーダピア
ピア ピア
仮想ピア
msg C Begin(msg C, 2)
離脱
新リーダ
リーダ選出
CollectLast
Begin(msg C, 2)
Accept
Success(msg C, 2)
Accept
B を処理
B を処理
…・ 過半数のピアが生き残っていれば ・ 途中でリーダが離脱しても OK ・ 複数のリーダが同時に異なる提案をしてもOK
シーケンス番号
2009/3/52009-IOT-04 10
リーダピア
ピア ピア
仮想ピア
離脱
新リーダ
リーダ選出
Collect
Last
Begin( 交替 msg,
10)Accep
tSuccess( 交替 msg, 10)
ピア交替
ピア交替
Keep Alive
プロセス移送 ( 複製
)
Keep Alive
Timeout
Paxos が機能するには過半数のメンバピアが必要
メンバピアが離脱したら補充◦ Paxos でピアの交替を合意
代替ピアでもプロセスを動かす必要がある◦ プロセス移送◦ 動作中のプログラムを別のコンピュータに移送し実行継続
代替ピア
乱数で選ぶ
musasabiでは Javaプログラムのプロセス移送機能を実現◦ 実行コンテキストごと別のノードに移送・実行継続(強モビリティ)
◦ コード・データ領域・実行状態(スレッドスタックとプログラムカウンタ)を転送・復元
通常の JavaVMで強モビリティを実現◦ Javaで強モビリティを実現する際は, JavaVMに手を入れる場合が多い
◦ musasabiでは標準の JavaVMでプロセス移送可能 Apache Javaf l owライブラリを利用 JavaでConti nuati onを実現するライブラリ バイトコード変換で実現 ⇒ 通常の JavaVMで動作
◦ Conti nuati onをシリアライズして転送する
2009/3/52009-IOT-04 11
String foo = “foo”;go(peer2);System.out.println(foo);go(peer3);System.out.println(foo);go(peer1);
Peer1 Peer3Peer2
gogo
go
Peer1 Peer2
fork
計算の前提 1時間でピアの半分は離脱する
ピアが離脱してから代替ピアに交替するまでの
時間 = 60秒◦ 60秒以内に過半数のピアが離脱すると機能停止
2009/3/52009-IOT-04 12
日数
信頼度
メンバピア数3
メンバピア数5
メンバピア数 7
1年後の信頼度
2009/3/52009-IOT-04 13
Server-
ClientHybrid P2P
Pure P2P 仮想ピア方式
耐故障性( 単一故障点の
有無 )× × ○ ○
アプリケーションの実装しやす
さ○ △ × △〜○
ピアのスループット ○ ○ ○ △ ?
スケーラビリティ × △ ○ 仮想ピア単体では ×
複数の仮想ピアで○
仮想ピアをどう使うかに依存
P2Pシステムでピアの耐故障性を確保する方式を提案◦ 複数のピアで冗長系を構成し仮想ピアを実現◦ Paxos合意アルゴリズムを用いてプロセス内部状態の一貫性を確保◦ ピアが離脱したら別のピアを補充◦ プロセス移送を用いることでプロセスを複製
P2P 基盤ソフトウェア musasabiに実装◦ Javaプログラムに対するプロセス移送(強モビリティ)を実現
今後の課題◦ musasabi の通信が依存する Ski p Graph の耐故障性確保◦ 性能測定◦ 適切なメンバピアの選択
2009/3/52009-IOT-04 14
2009/3/52009-IOT-04 15
バイトコード変換によって実現している◦ 特別なクラスローダが必要
JavaflowJavaflow によるによる ContinuationContinuation
2009/3/52009-IOT-04 16
Class MyClass implements Runnable { public void run() { 処理 1; Continuation.suspend(); // サスペンド 処理 2; }}
// MyClass#run() を実行開始 (処理 1まで )Continuation c = Continuation.startWith(new MyClass());
// 処理 2から実行を再開C = Continuation.continueWith(c);
仮想ピアのメンバピアはマルチキャストグループに所属◦ PIAX のALM (Application Level Multicast) を利用◦ 外部からはマルチキャストグループ ID を指定して通信◦ マルチキャストグループ ID さえ知っていれば通信できる メンバピアの IP アドレスなどを知る必要はない
PIAX の ALM ◦ Skip Graph 上に実装◦ マルチキャストグループ ID を key として Skip
Graph にピアを登録
仮想ピアの通信仮想ピアの通信
2009/3/52009-IOT-04 17
2009/3/52009-IOT-04 18
App
物理ノード
App
物理ノード
物理 NW
P2P Service
仮想ピア
物理 NW
P2P Service
従来の P2P モデル仮想ピアを用いた
P2P モデル
App
物理ノード
App
物理ノード
物理ノード
物理ノード
App