# HG changeset patch # User Nozomi Teruya # Date 1517378304 -32400 # Node ID d620f126a383d3d5fe1de2225a8c4ba2906348aa # Parent bc9be2d40d0dd96a1b1e1d1fd6c28c0e4865d6ae change abstract & chapter1 diff -r bc9be2d40d0d -r d620f126a383 paper/abstract.tex --- a/paper/abstract.tex Tue Jan 30 23:41:54 2018 +0900 +++ b/paper/abstract.tex Wed Jan 31 14:58:24 2018 +0900 @@ -1,22 +1,21 @@ \begin{abstract} -スマートフォンやタブレット端末の普及率が増加している。 -それに伴いインターネット利用者数も増加しており、ネットワーク上のサービスには -、信頼性とスケーラビリティーが要求される。 -ここでいう信頼性とは、定められた環境下で安定して仕様に従った動作を行うことを -指す。 -またスケーラビリティーとは、スケーラビリティとは、分散ソフトウェアに対して単純にノードを追加するだけで性能を線形的に上昇させることができる性質である。 -しかし、これらをもつ分散プログラムをユーザーが一から記述することは容易ではない。 +当研究室ではデータを Data Segment、タスクを Code Segment という単位で分割して記述する手法を提唱している。 +Data Segmentは整数や文字列や構造体などの基本的なデータの集まりである。 +Code Segmentは入力となるData Segmentが全て揃ったら並列に処理を開始し計算結果のData Segmentを出力するタスクである。 +この手法を用いて、スケーラブルな分散プログラムを信頼性高く記述できることを目的とした並列分散フレームワークAliceを開発した。 + +Aliceでは通常の処理の間にMeta Computationという処理を挟むことで、コードを大きく変更せずに挙動変更を可能にしている。 -これらの問題の解決のために、当研究室ではデータをData Segment、タスクをCode Segmentという単位で記述するプログラミング手法を導入した分散フレームワークAlice の開発を実現した。 -Data Segmentは整数や文字列や構造体などの基本的なデータの集まりである。 -Code Segmentは入力となるData Segmentが全て揃ったら処理を開始し計算結果のData Segmentを出力するタスクである。 +Aliceが実用的な分散アプリケーションを記述でき、Meta Computationが仕様の変更を抑えた信頼性の高い拡張を可能にするということはTreeVNCの例題などから確認された。 + +しかし、NAT越えなどのMetaComputationを実装しようとした際、現状では拡張が困難であり再設計が望ましいことが判明した。 +また、それに伴いAliceの直感的でないAPIを改善し、型の整合性を保証することで信頼性を向上させるべきだと考えた。 -Aliceが実用的な分散アプリケーションを記述でき、仕様の変更を抑えた信頼性の高い拡 -張を可能にするということは、水族館の例題やTreeVNCの例題から確認された。 -しかし、AliceではAPI設計が直感的でなく、型の整合性がとれない問題があった。また、AliceにNAT越えの機能を実装しようとした際、Data Segment Managerが1つしか持てない -たために拡張が困難であることが分かった。 +本研究ではAliceで得られた知見を元に分散フレームワークChristieの設計を行った。 +Christieでは、APIにJavaのアノテーションを用いることでシンプルな記述で信頼性の高いプログラミングを実現する。 +また、Data Gear Managerを複数立ち上げられるようにしたことでNAT越えなどの拡張に対応した。 +そして他フレームワークとAPIの比較を行った。 -本研究では、Aliceから得られた知見をもとに、分散フレームワークChristieの設計を行った。 diff -r bc9be2d40d0d -r d620f126a383 paper/nozomi-master.pdf Binary file paper/nozomi-master.pdf has changed diff -r bc9be2d40d0d -r d620f126a383 paper/nozomi-master.tex --- a/paper/nozomi-master.tex Tue Jan 30 23:41:54 2018 +0900 +++ b/paper/nozomi-master.tex Wed Jan 31 14:58:24 2018 +0900 @@ -98,6 +98,22 @@ %chapters \chapter{分散プログラミングの信頼性向上} +スマートフォンやタブレット端末の普及率が増加している。 +それに伴いインターネット利用者数も増加しており、ネットワーク上のサービスには、信頼性とスケーラビリティーが要求される。 +ここでいう信頼性とは、定められた環境下で安定して仕様に従った動作を行うことを指す。 +またスケーラビリティーとは、分散ソフトウェアに対して単純にノードを追加するだけで性能を線形的に上昇させることができる性質である。 +しかし、これらをもつ分散プログラムをユーザーが一から記述することは容易ではない。 + +これらの問題を解決するために、当研究室ではデータをData Segment、タスクをCode Segmentという単位で記述するプログラミング手法を導入した分散フレームワークAlice を開発した。 + +Aliceが実用的な分散アプリケーションを記述でき、仕様の変更を抑えた信頼性の高い拡張を可能にするということは、水族館の例題やTreeVNCの例題から確認された。 +しかし、AliceにNAT越えの機能を実装しようとした際、Data Segment Managerが1つしか持てないために拡張が困難であることが分かった。 +また、AliceではAPI設計が煩雑で、プログラマが処理の順番やデータの型を考慮して書く必要があった。 +これではバグを引き起こす可能性が高いため、信頼性を上げるにはより直感的なAPIで再設計すべきだと考えた。 + +本研究では、Aliceから得られた知見をもとに、分散フレームワークChristieの設計を行う。 +Christieでは、シンプルな記述で信頼性の高いスケーラブルな分散プログラムの作成を可能にする。 +また、当研究室で開発している言語CbCと互換可能な設計を目指す。 \chapter{分散フレームワークAliceの概要} @@ -302,7 +318,7 @@ \begin{enumerate} \item 一般的なJavaのクラスオブジェクト - \item MessagePack for Java\cite{MessagePack}でシリアライズ化されたバイナリオブジェクト + \item MessagePack for Java\cite{}でシリアライズ化されたバイナリオブジェクト \item 2を圧縮したバイナリオブジェクト \end{enumerate} @@ -326,7 +342,7 @@ \subsection{TopologyManager} Aliceでは、ノード間の接続管理やトポロジーの構成管理を、Topology ManagerとTopology NodeというMeta Computationが提供している。 プログラマはトポロジーファイルを用意し、Topology Managerに読み込ませるだけでトポロジーを構成することができる。 -トポロジーファイルはDOT Language\cite{dot}という言語で記述される。 +トポロジーファイルはDOT Language\cite{}という言語で記述される。 DOT Languageとは、プレーンテキストを用いてデータ構造としてのグラフを表現するためのデータ記述言語の一 つである。 ソースコード\ref{src:topologyfile}は3台のノードでリングトポロジーを組むときのトポロジーファイルの例である。 @@ -513,15 +529,15 @@ Christieに必要な要件は以下のように考える。 \begin{itemize} -\item {\ttfamily create/setKeyのような煩雑なAPIをシンプルにし可読性を上げる} +\item {\ttfamily create/setKeyのような煩雑なAPIをシンプルにし可読性を向上させる} \end{itemize} \begin{itemize} -\item {\ttfamily プログラマが型を推測しなくとも整合性がとれるように型を解決し、信頼性を上げる} +\item {\ttfamily プログラマが型を推測しなくとも整合性がとれるように型を解決し、信頼性を向上させる} \end{itemize} \begin{itemize} -\item {\ttfamily staticなLocalDSMをなくし、複数のインスタンスを同時に立ち上げられるようにすることで拡張性を上げる} +\item {\ttfamily staticなLocalDSMをなくし、複数のインスタンスを同時に立ち上げられるようにすることでスケーラビリティを向上させる} \end{itemize} @@ -751,7 +767,7 @@ このとき要求したデータがDGM内にない場合はwaitListに入る。 PUTコマンドが実行された際、もしwaitListに同じkeyのDGを待っているコマンドがあれば実行される。 -CGは生成したインプットコマンドの総数を初期値としたカウンタを持っており、コマンドが解決されるたびにカウンタは減っていき、0になった時、CGがThreadPoolへ送られる。 +CGは生成したインプットコマンドの総数を初期値としたカウンタを持っており、コマンドが解決されるたびにカウンタは減っていき、0になるとCGがThreadPoolへ送られる。 \chapter{謝辞} @@ -769,7 +785,7 @@ %参考文献 \nocite{*} \bibliographystyle{junsrt} -%\bibliography{reference} +\bibliography{reference} %発表履歴 \addcontentsline{toc}{chapter}{発表履歴}