annotate paper/comparing.tex @ 17:32ba010cf7da

slide
author fuchita
date Mon, 18 Feb 2008 05:05:25 +0900
parents 9bbcbcd1c3ec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
1 \chapter{比較}
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
2
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
3 ここではSun Microsystems社の提案する高レベルの分散アーキテクチャである、
16
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
4 Jini 及び、産業技術総合研究所の首藤一幸氏が開発を行っているOverlay Weaver
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
5 と、 Federated Linda の比較を行う。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
6
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
7 \section{Jini}
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
8 Jiniとは、ハードウェア/ソフトウェアに関わらず様々な資源をネットワークに接続し、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
9 お互いにその機能を提供し合う為の、Javaをベースとした技術である。
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
10 Jiniは比較的小さな実行単位が、多数集まって仕事をするのに適した、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
11 柔軟で、動的な、信頼性の高い分散アーキテクチャの提供をうたい、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
12 その集合をfederation(連合体)と呼んでいる。
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
13 Jiniのアイデアの基本にあるのは、ネットワーク上の「連合」を、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
14 単なるノードの接続とデータの交換として捉えるのではなく、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
15 それぞれのノードが、固有の「サービス」の担い手としてネットワークに存在し、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
16 相互に「サービス」を交換し合うという考えである。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
17
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
18 Jiniにおける「サービス」を、ネットワーク上の何処からでも利用する事ができるモデルを
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
19 実現する為に、ネットワーク上で自由に移動可能な「オブジェクト」、すなわち分散オブジェクト
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
20 技術が用いられる。
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
21 Jiniがこの分散オブジェクトと「サービス」を結びつける機能をLookupとよび、Jini上での様々な
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
22 サービスの「連合」は、実際にはこのLookupサービスの仲立ちによって各々のサービスを提供する。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
23
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
24 Jiniが分散オブジェクト、すなわちネットワーク上でオブジェクトを共有する空間を構築する為
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
25 の仕組みは、JavaSpaceという技術によって提供される。
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
26 JavaSpaceはネットワーク上に共通領域として存在し、オブジェクトを登録する「エントリー」
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
27 という単位での入れ物として機能する。JavaSpaceのエントリーに対するアクセスは、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
28 write(書き込み)、read(読み出し)、take(取り出し)、という操作によって得られる。
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
29 このような仕組みはLindaシステムのタプルスペースに非常によく似ている。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
30
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
31 対して、Federated Lindaはソフトウェアにおける資源の、ネットワーク上での相互の接続を
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
32 提供する。ベースとなる技術はC言語,Java言語であり、Jiniにおけるサービスを実現させるのは、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
33 Federated Lindaに接続されるクライアントプログラムの機能によって実現される。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
34
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
35 Jiniの持つ様な分散オブジェクト技術は、現在のデータ単位での通信を行うFederated Lindaでは
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
36 実現されていないが、今回Java言語によるFederated Lindaの実装を得た事により、そのような
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
37 機能追加を行う事は実現可能である。Java言語により実現が可能である理由は、Javaではオブジェクト
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
38 単位でのネットワークを介した移動を実現する、シリアライズ機能やRMIという仕組みが存在することや、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
39 複数のThread(プロセス)が同一のオブジェクトに同期を取ってアクセスする
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
40 メカニズムが備わっているということからである。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
41
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
42 Jiniに対してFederated Lindaが優れていると考えられる点は、Jiniでは分散オブジェクト実現の
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
43 為に、エントリーに対して強い型宣言が強制されるが、Federated Lindaでは自由なデータ形式での
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
44 通信単位を許可している事。Jiniがそのサービスを立ち上げるのに必要な要素として、
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
45 RMI Activation Daemon, ,Jiniサービスプロバイダ, Jini Lookupサービス, Lookupサービスブラウザ,
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
46 webサーバー, クライアントプログラムといった、多くの要素を要求するのに対して、Federated Linda
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
47 はLindaサーバー, Protocol Engine, クライアントプログラムの3要素で済むという点などが挙げられる。
0
420c2d37b2bf Initial revision
fuchita
parents:
diff changeset
48
15
c3eb838fb504 *** empty log message ***
fuchita
parents: 0
diff changeset
49 %表\ref{comp}にJiniとFederated Lindaの比較を示す。
16
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
50
17
fuchita
parents: 16
diff changeset
51 \section{Overlay Weaver}
16
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
52 Overlay Weaver は産業技術総合研究所の首藤一幸氏が開発を行っているオーバーレイ
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
53 ネットワーク構築ツールキットであり、2006年 1月
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
54 17日にVersion 0.1がリリースされた。アプリケーション開発とオーバーレイの
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
55 アルゴリズム設計をサポートしている。Java で開発されており、DHTやマルチキャ
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
56 ストといった高レベルサービスに対する共通API や、ルーティングアルゴリズム
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
57 としてDHTやIterative/Recursive ルーティングを提供している。また、開発し
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
58 たアルゴリズムを試験、評価、比較するためのエミュレータも提供している。
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
59
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
60 Overlay Weaver はオーバーレイネットワークを構築するアルゴリズムやその上に
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
61 実装するルーティングアルゴリズムの開発支援やそれらを試験・評価するための
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
62 エミュレータを提供しており、ネットワークを意識したプログラムを作るのに適
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
63 している。ルーティング処理とアルゴリズムを分離するので、使用するアルゴリ
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
64 ズムを切り替えることが可能である。しかし、Javaでしか開発できない点とプロ
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
65 グラミングモデルが明かではなく、ツールとしてしか使用できない。
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
66
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
67 Federated Linda はタプルスペースとタプルスペースへアクセスするAPIを提供し、
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
68 かつ分散プログラムを記述するプログラミングモデルを示した。さらに
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
69 ``Protocol Engine'', ``Local Access'', ``Link Configuration''などの要素に
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
70 分け、よりポータビリティ性を向上させることが期待できる。また、C, Perl,
17
fuchita
parents: 16
diff changeset
71 Python, Ruby など複数言語による開発も可能である。
fuchita
parents: 16
diff changeset
72 Overlay Weaverの物と比べ、Federated Lindaのクライアントプログ
16
9bbcbcd1c3ec Chapter 5
fuchita
parents: 15
diff changeset
73 ラムは Protocol Engine に実装された分散アルゴリズムへの接続・切断が容易で
17
fuchita
parents: 16
diff changeset
74 あるという点もFederated Lindaの利点である。