ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの ...

-->




1




ユビキタスコンピューティングの


ための


ハンドオーバー機能付きRMIの実装


東京工業大学 千葉研究室

学部4年  須永 豊










2


ユビキタスコンピューティング  






背景



シームレスなデバイス環境 - プラグアンドプレイ



周囲のコンピュータが動的に作業環境を構築



シームレスなネットワーク環境 - ハンドオーバー機能



通信を継続したままネットワークを切り替え






Office




McDonald etc…




動的に切り替え










3


ハンドオーバー機能とは






突然の通信断に対処



通信再開後、支障なく処理を再開






現状ではそれぞれのアプリケーションに

個別に実装されている




ケーブル引き抜き




再開




環境A




環境B




プログラムの移動










4


HORMIの提案






ハンドオーバー機能付きRMI



ミドルウェアで実現






ケーブル引き抜き




retry




環境A




環境B




RMI


RMI


サーバオブジェクトの移動






メソッド呼び出しが完了するまでretry

通信再開後、近くのサーバへオブジェクトの移動












5


HORMIの基本プロトコル




server




メソッド呼び出しのリクエスト




IDを振る




ID取得




メソッドのパラメータの送信




IDを送信




結果の送信




ローカルで

メソッド実行




結果を

保存する




client










6


メソッド呼び出しの

retry 機能




失敗したら再呼び出し



通信断はSocketExceptionで検出








二重実行の防止



呼び出し毎に一意なIDを振り、結果を保存

再接続時の処理



メソッド実行済みの時 → 結果のみを再送

メソッド未実行の時 → メソッド呼び出しの再実行












7


通信断時のプロトコル




切断される

タイミング




メソッド呼び出し

の再実行の流れ




client




server




メソッド呼び出しのリクエスト




IDを送信




引数等の送信




結果の送信










8


不要になった実行結果の破棄




client




server




パラメータと一緒に

そのIDを送信




IDを送信




結果を消してよい

メソッド呼出しのIDを

調べる




ID取得後、不要な結果を破棄




マルチスレッドを考慮して決定






不要になった実行結果:



メソッド呼び出しが正常に終了している

そのメソッド呼び出しに対して、retryは行われない












9


通信再開後、指定したマシンにサーバプログラムを移動




サーバオブジェクトのマイグレーション




オブジェクトの直列化

スレッド移送は行わない






retry


必要なデータを

   要求




オブジェクトの送信




切断










10


HORMIの実装






Stub generator



ハンドオーバーのプロトコルを埋め込んだstubコードを自動生成



skeltonはリフレクションを用い、すべてのstubに対応



Code translator



起動クラスのマスタクラスへの参照をstubクラスへと置き換え






Public class Launcher {



void start() {



Sample s = new Sample();



..



}

}


Public class Launcher {



void start() {

SampleStub

s



= new SampleStub();



}

}










11


実験






JavaRMI、ハンドオーバー機能を取り除いたHORMI、HORMIを用いて比較実験を行った






実験環境



OS : LINUX(Red

Hat 7.0)



PENTIUMⅢ733MHZ

SDRAM 512MB



OS : WINDOWS XP HomeEdition



PENTIUMⅢ700MHZ

SDRAM 256MB






40.4


4.67


2.19


0 byte


40.5


4.95


2.55


1 kbyte


41.8


15.92


15.34


0.1 Mbyte


140


141


166


1 Mbyte


HORMI


ハンドオーバー無しHORMI




JavaRMI


40.4


4.67


2.19


LINUX


4.70


4.31


1.90


WINDOWS


HORMI


ハンドオーバー無しHORMI




JavaRMI




OS


表1 

1回あたりのメソッド呼び出しにかかる時間

(単位

msec)


表2 

  引数のサイズによるメソッド呼び出しにかかる時間

(単位

msec/回数)LINUXを使用


サイズ










12


まとめ




HORMI:ハンドオーバー機能付き

RMI



メソッド呼び出しの

retry 機能



突然の通信断に対処



サーバオブジェクトの移動

Stubの自動生成






課題



性能の向上



通信部の改良



入出力の問題



Javaプログラム以外のファイルも扱うプログラムに対する対処

使用しているファイルの移動も行う機能の追加



サーバの自動的な切り替え機能



ネットワークの状況を検知し、自動的にホストを選択する機能の追加

ウエッブサイト:-------http://www.pdffind.com/pdf/7p4ng/

ファイル情报です »

时间(じかん)を発表した:2009-12-30   ファイルサイズ:0   フォーマット:ppt ファイル
このファイルにダウンロード ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの ...