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

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

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

Editor's Notes