view paper/comparing.tex @ 17:32ba010cf7da

slide
author fuchita
date Mon, 18 Feb 2008 05:05:25 +0900
parents 9bbcbcd1c3ec
children
line wrap: on
line source

\chapter{比較}

ここではSun Microsystems社の提案する高レベルの分散アーキテクチャである、
Jini 及び、産業技術総合研究所の首藤一幸氏が開発を行っているOverlay Weaver
と、 Federated Linda の比較を行う。

\section{Jini}
Jiniとは、ハードウェア/ソフトウェアに関わらず様々な資源をネットワークに接続し、
お互いにその機能を提供し合う為の、Javaをベースとした技術である。
Jiniは比較的小さな実行単位が、多数集まって仕事をするのに適した、
柔軟で、動的な、信頼性の高い分散アーキテクチャの提供をうたい、
その集合をfederation(連合体)と呼んでいる。
Jiniのアイデアの基本にあるのは、ネットワーク上の「連合」を、
単なるノードの接続とデータの交換として捉えるのではなく、
それぞれのノードが、固有の「サービス」の担い手としてネットワークに存在し、
相互に「サービス」を交換し合うという考えである。

Jiniにおける「サービス」を、ネットワーク上の何処からでも利用する事ができるモデルを
実現する為に、ネットワーク上で自由に移動可能な「オブジェクト」、すなわち分散オブジェクト
技術が用いられる。
Jiniがこの分散オブジェクトと「サービス」を結びつける機能をLookupとよび、Jini上での様々な
サービスの「連合」は、実際にはこのLookupサービスの仲立ちによって各々のサービスを提供する。

Jiniが分散オブジェクト、すなわちネットワーク上でオブジェクトを共有する空間を構築する為
の仕組みは、JavaSpaceという技術によって提供される。
JavaSpaceはネットワーク上に共通領域として存在し、オブジェクトを登録する「エントリー」
という単位での入れ物として機能する。JavaSpaceのエントリーに対するアクセスは、
write(書き込み)、read(読み出し)、take(取り出し)、という操作によって得られる。
このような仕組みはLindaシステムのタプルスペースに非常によく似ている。

対して、Federated Lindaはソフトウェアにおける資源の、ネットワーク上での相互の接続を
提供する。ベースとなる技術はC言語,Java言語であり、Jiniにおけるサービスを実現させるのは、
Federated Lindaに接続されるクライアントプログラムの機能によって実現される。

Jiniの持つ様な分散オブジェクト技術は、現在のデータ単位での通信を行うFederated Lindaでは
実現されていないが、今回Java言語によるFederated Lindaの実装を得た事により、そのような
機能追加を行う事は実現可能である。Java言語により実現が可能である理由は、Javaではオブジェクト
単位でのネットワークを介した移動を実現する、シリアライズ機能やRMIという仕組みが存在することや、
複数のThread(プロセス)が同一のオブジェクトに同期を取ってアクセスする
メカニズムが備わっているということからである。

Jiniに対してFederated Lindaが優れていると考えられる点は、Jiniでは分散オブジェクト実現の
為に、エントリーに対して強い型宣言が強制されるが、Federated Lindaでは自由なデータ形式での
通信単位を許可している事。Jiniがそのサービスを立ち上げるのに必要な要素として、
RMI Activation Daemon, ,Jiniサービスプロバイダ, Jini Lookupサービス, Lookupサービスブラウザ,
 webサーバー, クライアントプログラムといった、多くの要素を要求するのに対して、Federated Linda
はLindaサーバー, Protocol Engine, クライアントプログラムの3要素で済むという点などが挙げられる。

%表\ref{comp}にJiniとFederated Lindaの比較を示す。

\section{Overlay Weaver}
Overlay Weaver は産業技術総合研究所の首藤一幸氏が開発を行っているオーバーレイ
ネットワーク構築ツールキットであり、2006年 1月
17日にVersion 0.1がリリースされた。アプリケーション開発とオーバーレイの
アルゴリズム設計をサポートしている。Java で開発されており、DHTやマルチキャ
ストといった高レベルサービスに対する共通API や、ルーティングアルゴリズム
としてDHTやIterative/Recursive ルーティングを提供している。また、開発し
たアルゴリズムを試験、評価、比較するためのエミュレータも提供している。

Overlay Weaver はオーバーレイネットワークを構築するアルゴリズムやその上に
実装するルーティングアルゴリズムの開発支援やそれらを試験・評価するための
エミュレータを提供しており、ネットワークを意識したプログラムを作るのに適
している。ルーティング処理とアルゴリズムを分離するので、使用するアルゴリ
ズムを切り替えることが可能である。しかし、Javaでしか開発できない点とプロ
グラミングモデルが明かではなく、ツールとしてしか使用できない。

Federated Linda はタプルスペースとタプルスペースへアクセスするAPIを提供し、
かつ分散プログラムを記述するプログラミングモデルを示した。さらに
``Protocol Engine'', ``Local Access'', ``Link Configuration''などの要素に
分け、よりポータビリティ性を向上させることが期待できる。また、C, Perl,
Python, Ruby など複数言語による開発も可能である。
Overlay Weaverの物と比べ、Federated Lindaのクライアントプログ
ラムは Protocol Engine に実装された分散アルゴリズムへの接続・切断が容易で
あるという点もFederated Lindaの利点である。