Mercurial > hg > Papers > 2018 > nozomi-master
comparison paper/nozomi-master.tex @ 157:d620f126a383
change abstract & chapter1
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 31 Jan 2018 14:58:24 +0900 |
parents | bc9be2d40d0d |
children | 2bf8a1edcecc |
comparison
equal
deleted
inserted
replaced
156:bc9be2d40d0d | 157:d620f126a383 |
---|---|
96 \mainmatter | 96 \mainmatter |
97 | 97 |
98 %chapters | 98 %chapters |
99 | 99 |
100 \chapter{分散プログラミングの信頼性向上} | 100 \chapter{分散プログラミングの信頼性向上} |
101 スマートフォンやタブレット端末の普及率が増加している。 | |
102 それに伴いインターネット利用者数も増加しており、ネットワーク上のサービスには、信頼性とスケーラビリティーが要求される。 | |
103 ここでいう信頼性とは、定められた環境下で安定して仕様に従った動作を行うことを指す。 | |
104 またスケーラビリティーとは、分散ソフトウェアに対して単純にノードを追加するだけで性能を線形的に上昇させることができる性質である。 | |
105 しかし、これらをもつ分散プログラムをユーザーが一から記述することは容易ではない。 | |
106 | |
107 これらの問題を解決するために、当研究室ではデータをData Segment、タスクをCode Segmentという単位で記述するプログラミング手法を導入した分散フレームワークAlice を開発した。 | |
108 | |
109 Aliceが実用的な分散アプリケーションを記述でき、仕様の変更を抑えた信頼性の高い拡張を可能にするということは、水族館の例題やTreeVNCの例題から確認された。 | |
110 しかし、AliceにNAT越えの機能を実装しようとした際、Data Segment Managerが1つしか持てないために拡張が困難であることが分かった。 | |
111 また、AliceではAPI設計が煩雑で、プログラマが処理の順番やデータの型を考慮して書く必要があった。 | |
112 これではバグを引き起こす可能性が高いため、信頼性を上げるにはより直感的なAPIで再設計すべきだと考えた。 | |
113 | |
114 本研究では、Aliceから得られた知見をもとに、分散フレームワークChristieの設計を行う。 | |
115 Christieでは、シンプルな記述で信頼性の高いスケーラブルな分散プログラムの作成を可能にする。 | |
116 また、当研究室で開発している言語CbCと互換可能な設計を目指す。 | |
101 | 117 |
102 | 118 |
103 \chapter{分散フレームワークAliceの概要} | 119 \chapter{分散フレームワークAliceの概要} |
104 \section{CodeSegmentとDataSegment} | 120 \section{CodeSegmentとDataSegment} |
105 AliceではCode Segment(以下CS)とData Segment(以下DS)の依存関係を記述することでプログラミングを行う。 | 121 AliceではCode Segment(以下CS)とData Segment(以下DS)の依存関係を記述することでプログラミングを行う。 |
300 | 316 |
301 1つのDS内に以下の3つの表現を持たせることでデータに多態性を持たせ、必要に応じた形式でDSを扱う。 | 317 1つのDS内に以下の3つの表現を持たせることでデータに多態性を持たせ、必要に応じた形式でDSを扱う。 |
302 | 318 |
303 \begin{enumerate} | 319 \begin{enumerate} |
304 \item 一般的なJavaのクラスオブジェクト | 320 \item 一般的なJavaのクラスオブジェクト |
305 \item MessagePack for Java\cite{MessagePack}でシリアライズ化されたバイナリオブジェクト | 321 \item MessagePack for Java\cite{}でシリアライズ化されたバイナリオブジェクト |
306 \item 2を圧縮したバイナリオブジェクト | 322 \item 2を圧縮したバイナリオブジェクト |
307 \end{enumerate} | 323 \end{enumerate} |
308 | 324 |
309 Local DSMにputされた場合は、(1)の一般的なJavaクラスオブジェクトとして追加される。 | 325 Local DSMにputされた場合は、(1)の一般的なJavaクラスオブジェクトとして追加される。 |
310 Remote DSMにputされた場合は、通信時に(2)のbyteArrayに変換されたバイナリオブジェクトに変換されたDSが追加 | 326 Remote DSMにputされた場合は、通信時に(2)のbyteArrayに変換されたバイナリオブジェクトに変換されたDSが追加 |
324 | 340 |
325 | 341 |
326 \subsection{TopologyManager} | 342 \subsection{TopologyManager} |
327 Aliceでは、ノード間の接続管理やトポロジーの構成管理を、Topology ManagerとTopology NodeというMeta Computationが提供している。 | 343 Aliceでは、ノード間の接続管理やトポロジーの構成管理を、Topology ManagerとTopology NodeというMeta Computationが提供している。 |
328 プログラマはトポロジーファイルを用意し、Topology Managerに読み込ませるだけでトポロジーを構成することができる。 | 344 プログラマはトポロジーファイルを用意し、Topology Managerに読み込ませるだけでトポロジーを構成することができる。 |
329 トポロジーファイルはDOT Language\cite{dot}という言語で記述される。 | 345 トポロジーファイルはDOT Language\cite{}という言語で記述される。 |
330 DOT Languageとは、プレーンテキストを用いてデータ構造としてのグラフを表現するためのデータ記述言語の一 | 346 DOT Languageとは、プレーンテキストを用いてデータ構造としてのグラフを表現するためのデータ記述言語の一 |
331 つである。 | 347 つである。 |
332 ソースコード\ref{src:topologyfile}は3台のノードでリングトポロジーを組むときのトポロジーファイルの例である。 | 348 ソースコード\ref{src:topologyfile}は3台のノードでリングトポロジーを組むときのトポロジーファイルの例である。 |
333 | 349 |
334 \lstinputlisting[label=src:topologyfile, caption=トポロジーファイルの例]{source/TopologyFile.dot} | 350 \lstinputlisting[label=src:topologyfile, caption=トポロジーファイルの例]{source/TopologyFile.dot} |
511 3章でのAliceの問題点を踏まえ、新たにフレームワークを作り直すべきだと考えた。 | 527 3章でのAliceの問題点を踏まえ、新たにフレームワークを作り直すべきだと考えた。 |
512 本章では、新たに作った分散フレームワークChristieの設計を説明する。 | 528 本章では、新たに作った分散フレームワークChristieの設計を説明する。 |
513 Christieに必要な要件は以下のように考える。 | 529 Christieに必要な要件は以下のように考える。 |
514 | 530 |
515 \begin{itemize} | 531 \begin{itemize} |
516 \item {\ttfamily create/setKeyのような煩雑なAPIをシンプルにし可読性を上げる} | 532 \item {\ttfamily create/setKeyのような煩雑なAPIをシンプルにし可読性を向上させる} |
517 \end{itemize} | 533 \end{itemize} |
518 | 534 |
519 \begin{itemize} | 535 \begin{itemize} |
520 \item {\ttfamily プログラマが型を推測しなくとも整合性がとれるように型を解決し、信頼性を上げる} | 536 \item {\ttfamily プログラマが型を推測しなくとも整合性がとれるように型を解決し、信頼性を向上させる} |
521 \end{itemize} | 537 \end{itemize} |
522 | 538 |
523 \begin{itemize} | 539 \begin{itemize} |
524 \item {\ttfamily staticなLocalDSMをなくし、複数のインスタンスを同時に立ち上げられるようにすることで拡張性を上げる} | 540 \item {\ttfamily staticなLocalDSMをなくし、複数のインスタンスを同時に立ち上げられるようにすることでスケーラビリティを向上させる} |
525 \end{itemize} | 541 \end{itemize} |
526 | 542 |
527 | 543 |
528 | 544 |
529 \section{Christieの基本設計} | 545 \section{Christieの基本設計} |
749 reflectionAPIでは対象となるクラスのフィールドやメソッド、それに対するアノテーションも取得できる。 | 765 reflectionAPIでは対象となるクラスのフィールドやメソッド、それに対するアノテーションも取得できる。 |
750 フィールドから取得したDGとアノテーションから取得したkeyからインプットコマンド(TAKE/PEEK)を生成し、DGMへ送って実行する。 | 766 フィールドから取得したDGとアノテーションから取得したkeyからインプットコマンド(TAKE/PEEK)を生成し、DGMへ送って実行する。 |
751 | 767 |
752 このとき要求したデータがDGM内にない場合はwaitListに入る。 | 768 このとき要求したデータがDGM内にない場合はwaitListに入る。 |
753 PUTコマンドが実行された際、もしwaitListに同じkeyのDGを待っているコマンドがあれば実行される。 | 769 PUTコマンドが実行された際、もしwaitListに同じkeyのDGを待っているコマンドがあれば実行される。 |
754 CGは生成したインプットコマンドの総数を初期値としたカウンタを持っており、コマンドが解決されるたびにカウンタは減っていき、0になった時、CGがThreadPoolへ送られる。 | 770 CGは生成したインプットコマンドの総数を初期値としたカウンタを持っており、コマンドが解決されるたびにカウンタは減っていき、0になるとCGがThreadPoolへ送られる。 |
755 | 771 |
756 | 772 |
757 \chapter{謝辞} | 773 \chapter{謝辞} |
758 本研究の遂行、また本論文の作成にあたり、ご多忙にも関わらず終始懇切なる御指導と御 | 774 本研究の遂行、また本論文の作成にあたり、ご多忙にも関わらず終始懇切なる御指導と御 |
759 教授を賜わりました河野真治准教授に深く感謝したします。 | 775 教授を賜わりました河野真治准教授に深く感謝したします。 |
767 | 783 |
768 | 784 |
769 %参考文献 | 785 %参考文献 |
770 \nocite{*} | 786 \nocite{*} |
771 \bibliographystyle{junsrt} | 787 \bibliographystyle{junsrt} |
772 %\bibliography{reference} | 788 \bibliography{reference} |
773 | 789 |
774 %発表履歴 | 790 %発表履歴 |
775 \addcontentsline{toc}{chapter}{発表履歴} | 791 \addcontentsline{toc}{chapter}{発表履歴} |
776 %\input{history.tex} | 792 %\input{history.tex} |
777 | 793 |