comparison paper/chapter3.tex @ 1:e13be99f69b6

can't view graphix correct place
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 05 May 2015 16:37:38 +0900
parents 0127effb8fcd
children 4a7fa91ef60a
comparison
equal deleted inserted replaced
0:0127effb8fcd 1:e13be99f69b6
1 \chapter{Aliceの新機能} \label{chapter:chapter3} 1 \section{Aliceの新機能}
2 水族館の例題によって、Aliceを用いて分散プログラムを記述可能であることを確認した。 2 水族館の例題によって、Aliceを用いて分散プログラムを記述可能であることを確認した。
3 次に実用的なアプリケーションであるTreeVNCをAlice上で実装することで、Aliceに必要な機能を洗い出した。 3 次に実用的なアプリケーションであるTreeVNCをAlice上で実装することで、Aliceに必要な機能を洗い出した。
4 4
5 \section{Dynamic Topologyへの対応} 5 \subsection{Dynamic Topologyへの対応}
6 第2章で示したように分散フレームワークAliceはTopology Fileを読み込むことでTopologyを構成する。 6 第2章で示したように分散フレームワークAliceはTopology Fileを読み込むことでTopologyを構成する。
7 つまり、予め参加するノードの台数が決まっている必要がある。また、Topologyに全ノードが参加するまでアプリケーションが起動しない。 7 つまり、予め参加するノードの台数が決まっている必要がある。また、Topologyに全ノードが参加するまでアプリケーションが起動しない。
8 8
9 実際のアプリケーションでは、参加するノードの数は決まっておらず、Topologyを動的に変化させる必要がある。 9 実際のアプリケーションでは、参加するノードの数は決まっておらず、Topologyを動的に変化させる必要がある。
10 そこで、AliceにDynamic Topology Managerを追加した。 10 そこで、AliceにDynamic Topology Managerを追加した。
11 11
12 Dynamic Topologyの場合は、新しくTopology Nodeがアプリケーションに参加するたびにTopology ManagerからTopology Nodeに対して、接続すべきTopology Nodeの情報がputされ接続処理が順次行われる。 12 Dynamic Topologyの場合は、新しくTopology Nodeがアプリケーションに参加するたびにTopology ManagerからTopology Nodeに対して、接続すべきTopology Nodeの情報がputされ接続処理が順次行われる。
13 \section{Keep Alive} 13 \subsection{Keep Alive}
14 ノード間の通信は、Remote DSMに対してputやpeekを行うことでのみ発生する。アプリケーション次第では長時間通信が行われない可能性がある。通信が行われない間にRemote DSMとの接続が切れた場合、次の通信が行われるまで切断を発見することができない。また、接続状態ではあるが問題が発生し、応答に時間がかかる場合も考えられる。 14 ノード間の通信は、Remote DSMに対してputやpeekを行うことでのみ発生する。アプリケーション次第では長時間通信が行われない可能性がある。通信が行われない間にRemote DSMとの接続が切れた場合、次の通信が行われるまで切断を発見することができない。また、接続状態ではあるが問題が発生し、応答に時間がかかる場合も考えられる。
15 15
16 以上の問題を検知するためにアプリケーションではKeep Aliveという、定期的にheart beatを送り生存確認を行う機能を持つことが望ましい。そこで、Alice自体にKeep Aliveの機能を実装した。 16 以上の問題を検知するためにアプリケーションではKeep Aliveという、定期的にheart beatを送り生存確認を行う機能を持つことが望ましい。そこで、Alice自体にKeep Aliveの機能を実装した。
17 17
18 一定時間内にノードから応答がない場合、Keep Aliveにより、そのノードのRemote DSMが切断される。 18 一定時間内にノードから応答がない場合、Keep Aliveにより、そのノードのRemote DSMが切断される。
74 \lstinputlisting[label=src:CatchClosedEvent, caption=CloseEventCodeSegmentを継承したCodeSegment]{source/CatchClosedEvent.java} 74 \lstinputlisting[label=src:CatchClosedEvent, caption=CloseEventCodeSegmentを継承したCodeSegment]{source/CatchClosedEvent.java}
75 \end{table} 75 \end{table}
76 ClosedEventCodeSegmentを継承したCode Segmentに、Input Data Segmentを追加記述する事ができる。 76 ClosedEventCodeSegmentを継承したCode Segmentに、Input Data Segmentを追加記述する事ができる。
77 その際は、もちろんInput Data Segmentが全て揃うまでCode Segmentは実行されない。 77 その際は、もちろんInput Data Segmentが全て揃うまでCode Segmentは実行されない。
78 78
79 \section{Topologyの再構成} 79 \subsection{Topologyの再構成}
80 ノードは永続的にアプリケーションに参加し続ける訳ではない。目的を果たすとアプリケーションから離脱する。 80 ノードは永続的にアプリケーションに参加し続ける訳ではない。目的を果たすとアプリケーションから離脱する。
81 Topology次第では、アプリケーションに支障をきたす。 81 Topology次第では、アプリケーションに支障をきたす。
82 例えば、AliceVNCは木構造であるため、子ノードを持つノードがアプリケーションから離脱した場合、その子ノードに対してデータを送信することができなくなる。 82 例えば、AliceVNCは木構造であるため、子ノードを持つノードがアプリケーションから離脱した場合、その子ノードに対してデータを送信することができなくなる。
83 83
84 この問題を解決するには、アプリケーションからノードが切断するたびにTopologyの再構成を行なう必要がある。そこで、Dynamic Topology Managerに、Topologyの再構成を行う機能を追加した。 84 この問題を解決するには、アプリケーションからノードが切断するたびにTopologyの再構成を行なう必要がある。そこで、Dynamic Topology Managerに、Topologyの再構成を行う機能を追加した。
122 \item Node1、Node3、Node4に対してNode6の情報を送り、接続を行わせる。 122 \item Node1、Node3、Node4に対してNode6の情報を送り、接続を行わせる。
123 \item Node6に対して、Node1、Node3、Node4の情報を送り、接続を行わせる。 123 \item Node6に対して、Node1、Node3、Node4の情報を送り、接続を行わせる。
124 \item お互いにRemote DSMの名前を贈り合い、Remote DSMが利用可能になる。 124 \item お互いにRemote DSMの名前を贈り合い、Remote DSMが利用可能になる。
125 \end{enumerate} 125 \end{enumerate}
126 126
127 \section{再接続の処理} 127 \subsection{再接続の処理}
128 MMORPGでは、試合の最中に障害などによりサーバーから離脱したユーザーが、試合が終わるまでに再びサーバーに接続してきた場合に、再びその試合に参加できるような再接続の処理が用意されている。 128 MMORPGでは、試合の最中に障害などによりサーバーから離脱したユーザーが、試合が終わるまでに再びサーバーに接続してきた場合に、再びその試合に参加できるような再接続の処理が用意されている。
129 129
130 分散にアプリケーションでは、MMORPGの例のように再接続してきたノードに対して通常の処理とは別の処理を行わせたい場合がある。そこで、Aliceに再接続してきたノードに、任意のCode Segmentを実行できる機能を追加した。ユーザーはconfigにCode Segmentを継承したClassを登録することで、再接続時に実行されるCode Segmentを指定することができる。 130 分散にアプリケーションでは、MMORPGの例のように再接続してきたノードに対して通常の処理とは別の処理を行わせたい場合がある。そこで、Aliceに再接続してきたノードに、任意のCode Segmentを実行できる機能を追加した。ユーザーはconfigにCode Segmentを継承したClassを登録することで、再接続時に実行されるCode Segmentを指定することができる。
131 131
132 \begin{table}[htbp] 132 \begin{table}[htbp]
133 \lstinputlisting[label=src:StartAquarium, caption=再接続に実行するCode Segmentの登録方法]{source/StartAquariumFX.java} 133 \lstinputlisting[label=src:StartAquarium, caption=再接続に実行するCode Segmentの登録方法]{source/StartAquariumFX.java}
134 \end{table} 134 \end{table}
135 135
136 \section{Multicast Data Segment} 136 \subsection{Multicast Data Segment}
137 TreeVNCには、Multicastを利用して起動しているTreeVNCのRoot Nodeの情報の一覧にして表示する接続先自動検索システムという機能がある。この機能によりTreeVNCの起動の際にIPアドレスを入力する手間を省くことができる。 137 TreeVNCには、Multicastを利用して起動しているTreeVNCのRoot Nodeの情報の一覧にして表示する接続先自動検索システムという機能がある。この機能によりTreeVNCの起動の際にIPアドレスを入力する手間を省くことができる。
138 138
139 現在のAliceは起動時にTopology ManagerのIPアドレスを入力する必要があり、TreeVNCの接続先自動検索機能が必要と考えられる。 139 現在のAliceは起動時にTopology ManagerのIPアドレスを入力する必要があり、TreeVNCの接続先自動検索機能が必要と考えられる。
140 その機能を実現するためにはMulticastに対応する必要がある。そこで、同じマルチキャストアドレスを持つ端末を1つのData Segmentとして扱うMuticast Data Segmentを追加した。 140 その機能を実現するためにはMulticastに対応する必要がある。そこで、同じマルチキャストアドレスを持つ端末を1つのData Segmentとして扱うMuticast Data Segmentを追加した。
141 Multicast Data Segmentも他のData Segment同様、Data Segment APIを用いて扱う。 141 Multicast Data Segmentも他のData Segment同様、Data Segment APIを用いて扱う。
178 \end{table} 178 \end{table}
179 179
180 \begin{table}[htbp] 180 \begin{table}[htbp]
181 \lstinputlisting[label=src:Receivemessage, caption=multicast DSMに対してsetKeyを行う]{source/ReceiveTask.java} 181 \lstinputlisting[label=src:Receivemessage, caption=multicast DSMに対してsetKeyを行う]{source/ReceiveTask.java}
182 \end{table} 182 \end{table}
183
184 \subsection{圧縮機能}