view paper/abstract.tex @ 168:707cd7f0689c

fix abstract
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 05 Feb 2018 14:22:46 +0900
parents 9a072c2d6e12
children
line wrap: on
line source

\begin{abstract}

インターネットが広がり、IoT(Internet of Things)で通信するサービスが広く使われるようになり、分散計算の
重要性は増している。分散計算では参加する台数に寄らずサービスの質を維持するスケーラビリティ、要求された
仕様を満たす信頼性とともに、拡張性が要求される。特にハードウェアは日進月歩であり、同じサービスであっても、
使用するハードウェアに適用するための拡張が必須となっている。

これまでに開発してきた並列分散フレームワークAliceでは、
データを Data Segment、タスクを Code Segment という単位で分割して記述している。
Alice での通信はノード毎のData Segmentのプールにキーを用いてお互いに書き込むという手法を用いている。Code Segment は
必要とするData Segmentのキーを指定して取得(take)または参照(peek)し、それらがそろった時点で実行を並列に行う。
Aliceでは通常の処理の間にMeta Computationという処理を挟むことで、コードを大きく変更せずに挙動変更を可能にしている。
分散型画面共有システムTreeVNCなどの実装によりその有効性が確認されている。特にNodeの Topologyを静的または動的に
メタ計算として指定できるTopology Managerが有効であった。

しかし、Java で実装されたAlice ではキーと取得モードの設定をJavaのオブジェクトの作成される側(constructor)で行ったり、
作成側で行なったりする自由度があり、キーによる通信の見通しが良くないということが判明した。また、
Alice はData SegmentやCode Segmentの管理を大域変数的なSingletonで行なっており、複数のAliceのインスタンスを
同一プロセス上で起動できない。これにより、単一プロセス内での分散計算のテストや、複数のTopology managerに接続する必要がある
NAT越えなどのMeta Computationを実装することができなかった。大域Singletonは、その性質上、どこからでもアクセス
できるために除去は困難であると判明した。さらに、
Aliceの直感的でないAPIを改善し、型の整合性を保証することで信頼性を向上させるべきだと考えた。

本研究ではAliceで得られた知見を元に分散フレームワークChristieの設計を行った。Christie ではSegment の代わりに
Gear とう名称を使用する。 Christie ではJavaのAnnotation を用いてキーと取得モードの記述を行う。これによりキーで指定されたData Gear
の型を明示することができ、Alice で必要だった実行時の型変換を隠すことができるようになった。
また、複数のCode/Data Gear Managerを使用することで単一プロセスでのテストやNAT越えなどの拡張が可能になった。
本論文では、他の並列分散フレームワークであるAkkaやHazelcastとの比較も行う。


\end{abstract}

\begin{abstract_eng}
The importance of distributed computers is increased as widely used Internet or IoT (Internet of Things).
Distributed computations include scalability which keeps quality of service on larger number of nodes, 
reliability which assures the specification of the service, and expand-ability. If if the service itself
is not changed, the hardware of platform shall be changed, which is necessary to adapt by the service.

We developed a distributed computation framework called Alice, which uses Data Segments and Code Segments
as units of computation. Alice uses pools of Data Segments, whose Data Segments are accessed by keys from
computation nodes. A Code Segments takes or peeks Data Segments by keys, and when all Data Segments are ready,
the Code Segment is executed in a concurrent way.

In Alice besides Code Segment and Data Segments, Meta Code Segments and Meta Data Segments can be inserted.
Using Meta Code Segments and Meta Data Segment, we can change the behavior without changing the normal level code. 
In the example of distributed screen sharing system called TreeVNC, usefulness of Meta computation of Alice is confirmed such as
Data Segment Compression and failure node managements. A topology manger which controls topology of distributed node in both
static and dynamic way is also useful meta computation in Alice.

Keys and access modes in Alice are described in Java implementations, which are sometimes put in the separated places, such as
Java object constructor or other. This makes the communication protocol using keys untraceable. In Alice implementations,
Code and Data Segment manager is implemented as a global singleton, as a result, we cannot use multiple instance of Alice in 
a process. So it is impossible to simulate distributed computation in a process. It is also difficult to implement communication
over NAT (Network Address Translations), which have to handle two different networks at a node.
Type correctness is not so clear in Alice, since dynamic cast is used. It better to define more intuitive APIs.

In this research, we designed a new distributed framework Christie from Alice experiences. Christie use name Gears
instead of Segment which is sometimes confusing.  A simple key and access mode description using Java Annotation is introduces.
Also, multiple Data or Code Gear Managers are supported which makes possible to simulating distributed computation in a node
or NAT handling.

Comparisons with other framework such as Akka or Hazelecast are also shown.

\end{abstract_eng}