P2Pシステム上での安定したサービス提供基盤musasabi

18
大阪市立大学 大学院創造都市研究科 情報システム創成研究分野 安倍 広多 2009/ 3/5 I OT/SI TE/I A 合同研究会 2009/3/5 2009-IOT-04 1

Transcript of P2Pシステム上での安定したサービス提供基盤musasabi

Page 1: P2Pシステム上での安定したサービス提供基盤musasabi

大阪市立大学 大学院創造都市研究科情報システム創成研究分野

安倍 広多

2009/3/5 I OT/SI TE/I A 合同研究会

2009/3/52009-IOT-04 1

Page 2: P2Pシステム上での安定したサービス提供基盤musasabi

P2P方式は単一故障点がないため耐故障性が高いと言われるが,裏では結構苦労している

P2Pネットワークのピアは離脱(or 故障)するので,P2Pアルゴリズム /ソフトウェアでは障害対策が必須◦ 障害検出◦ データが失われないように複製を配置◦ バックアップポインタを維持

2009/3/52009-IOT-04 2

Page 3: P2Pシステム上での安定したサービス提供基盤musasabi

ピアを(仮想的に)離脱しないようにする P2Pネットワーク上の複数のピアをグループ化 複数のピアで冗長系を構成(仮想ピア)◦ 一部のピアが離脱しても仮想ピアは落ちない◦ ファイルシステムのミラーリングに類似

ピアが離脱したら別のピアを補充

2009/3/52009-IOT-04 3

Page 4: P2Pシステム上での安定したサービス提供基盤musasabi

…仮想ピアは信頼性が高いので◦ 仮想ピアを単位としてシステムを構成することでP2Pソフトウェアの障害対策を簡素化◦ P2Pネットワーク上で仮想的なサーバをつくる ハイブリッドP2Pのサーバを置き換える 単一故障点になる物理的サーバを排除◦ スーパーピアとして利用 スーパーピア : 他のピアよりも重要な役割を持つピア

安定性が求められる

2009/3/52009-IOT-04 4

Page 5: P2Pシステム上での安定したサービス提供基盤musasabi

プロセス

プロセス

プロセス

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 アプリケーション

Page 6: P2Pシステム上での安定したサービス提供基盤musasabi

仮想ピア

仮想ピアを構成するピア : メンバピア◦ P2P ネットワークのピアから選ぶ

各メンバピア上ではプロセスが動作◦ 仮想ピアの動作を決めるアプリケーション

各プロセスが冗長系を構成◦ 各プロセスは基本的に同一状態◦ 変数の値や保持するファイル内容などが同一

データではなくプロセスを複製する 課題◦ プロセス状態の一貫性確保◦ ピアの離脱対策

提案方式(続き)提案方式(続き)

2009/3/52009-IOT-04 6

Page 7: P2Pシステム上での安定したサービス提供基盤musasabi

プロセスは外部からの入力(メッセージ)のみに従って状態を変更する(制約)

プロセスの一貫性を確保するために各プロセスが同一の入力系列を受信することを保証する◦ メッセージ送信者が複数存在する場合は簡単ではない◦ Paxos合意アルゴリズムを用いて実現

2009/3/52009-IOT-04 7

仮想ピア

同一の入力系列

ピア

ピア

ピア

Page 8: P2Pシステム上での安定したサービス提供基盤musasabi

合意アルゴリズムとは◦ 分散システムの複数の参加者の間で,唯一の値を選ぶアルゴリズム

Paxos 合意アルゴリズム [L. Lamport]◦ ネットワークの前提

メッセージは遅延・重複・喪失する 送信した順に受信されるとは限らない

◦ 唯一のリーダだけが値を提案できる リーダはリーダ選出アルゴリズムで選ぶ

◦ 過半数の参加者が値を受け入れると合意成立◦ 値の系列(複数の値)にも適用できる◦ リーダが複数存在しても一貫性は崩れない

PaxosPaxos 合意アルゴリズム合意アルゴリズム

2009/3/52009-IOT-04 8

Page 9: P2Pシステム上での安定したサービス提供基盤musasabi

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

シーケンス番号

Page 10: P2Pシステム上での安定したサービス提供基盤musasabi

2009/3/52009-IOT-04 10

リーダピア

ピア ピア

仮想ピア

離脱

新リーダ

リーダ選出

Collect

Last

Begin( 交替 msg,

10)Accep

tSuccess( 交替 msg, 10)

ピア交替

ピア交替

Keep Alive

プロセス移送 ( 複製

)

Keep Alive

Timeout

Paxos が機能するには過半数のメンバピアが必要

メンバピアが離脱したら補充◦ Paxos でピアの交替を合意

代替ピアでもプロセスを動かす必要がある◦ プロセス移送◦ 動作中のプログラムを別のコンピュータに移送し実行継続

代替ピア

乱数で選ぶ

Page 11: P2Pシステム上での安定したサービス提供基盤musasabi

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

Page 12: P2Pシステム上での安定したサービス提供基盤musasabi

計算の前提 1時間でピアの半分は離脱する

ピアが離脱してから代替ピアに交替するまでの

時間 = 60秒◦ 60秒以内に過半数のピアが離脱すると機能停止

2009/3/52009-IOT-04 12

日数

信頼度

メンバピア数3

メンバピア数5

メンバピア数 7

1年後の信頼度

Page 13: P2Pシステム上での安定したサービス提供基盤musasabi

2009/3/52009-IOT-04 13

Server-

ClientHybrid P2P

Pure P2P 仮想ピア方式

耐故障性( 単一故障点の

有無 )× × ○ ○

アプリケーションの実装しやす

さ○ △ × △〜○

ピアのスループット ○ ○ ○ △ ?

スケーラビリティ × △ ○ 仮想ピア単体では ×

複数の仮想ピアで○

仮想ピアをどう使うかに依存

Page 14: P2Pシステム上での安定したサービス提供基盤musasabi

P2Pシステムでピアの耐故障性を確保する方式を提案◦ 複数のピアで冗長系を構成し仮想ピアを実現◦ Paxos合意アルゴリズムを用いてプロセス内部状態の一貫性を確保◦ ピアが離脱したら別のピアを補充◦ プロセス移送を用いることでプロセスを複製

P2P 基盤ソフトウェア musasabiに実装◦ Javaプログラムに対するプロセス移送(強モビリティ)を実現

今後の課題◦ musasabi の通信が依存する Ski p Graph の耐故障性確保◦ 性能測定◦ 適切なメンバピアの選択

2009/3/52009-IOT-04 14

Page 15: P2Pシステム上での安定したサービス提供基盤musasabi

2009/3/52009-IOT-04 15

Page 16: P2Pシステム上での安定したサービス提供基盤musasabi

バイトコード変換によって実現している◦ 特別なクラスローダが必要

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);

Page 17: P2Pシステム上での安定したサービス提供基盤musasabi

仮想ピアのメンバピアはマルチキャストグループに所属◦ PIAX のALM (Application Level Multicast) を利用◦ 外部からはマルチキャストグループ ID を指定して通信◦ マルチキャストグループ ID さえ知っていれば通信できる メンバピアの IP アドレスなどを知る必要はない

PIAX の ALM ◦ Skip Graph 上に実装◦ マルチキャストグループ ID を key として Skip

Graph にピアを登録

仮想ピアの通信仮想ピアの通信

2009/3/52009-IOT-04 17

Page 18: P2Pシステム上での安定したサービス提供基盤musasabi

2009/3/52009-IOT-04 18

App

物理ノード

App

物理ノード

物理 NW

P2P Service

仮想ピア

物理 NW

P2P Service

従来の P2P モデル仮想ピアを用いた

P2P モデル

App

物理ノード

App

物理ノード

物理ノード

物理ノード

App