Mercurial > hg > Papers > 2018 > nozomi-master
annotate presen/sample.html @ 182:a4c6184d3e22
minor change
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 07 Feb 2018 09:18:50 +0900 |
parents | 38d95e434fbc |
children | b62fc3a499f9 |
rev | line source |
---|---|
175 | 1 <!DOCTYPE html> |
2 <html> | |
3 <head> | |
4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
176 | 5 <title>分散フレームワークChristieの設計</title> |
175 | 6 |
7 <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]"> | |
176 | 8 <meta name="author" content="照屋のぞみ" > |
175 | 9 |
10 <!-- style sheet links --> | |
11 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> | |
12 <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> | |
13 <link rel="stylesheet" href="s6/themes/print.css" media="print"> | |
14 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection"> | |
15 | |
16 <!-- JS --> | |
17 <script src="s6/js/jquery-1.11.3.min.js"></script> | |
18 <script src="s6/js/jquery.slideshow.js"></script> | |
19 <script src="s6/js/jquery.slideshow.counter.js"></script> | |
20 <script src="s6/js/jquery.slideshow.controls.js"></script> | |
21 <script src="s6/js/jquery.slideshow.footer.js"></script> | |
22 <script src="s6/js/jquery.slideshow.autoplay.js"></script> | |
23 | |
24 <!-- prettify --> | |
25 <link rel="stylesheet" href="scripts/prettify.css"> | |
26 <script src="scripts/prettify.js"></script> | |
27 | |
28 <script> | |
29 $(document).ready( function() { | |
30 Slideshow.init(); | |
31 | |
32 $('code').each(function(_, el) { | |
33 if (!el.classList.contains('noprettyprint')) { | |
34 el.classList.add('prettyprint'); | |
35 el.style.display = 'block'; | |
36 } | |
37 }); | |
38 prettyPrint(); | |
39 } ); | |
40 | |
41 | |
42 </script> | |
43 | |
44 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> | |
45 <!--[if IE]> | |
46 <script src="s6/js/jquery.microsoft.js"></script> | |
47 <![endif]--> | |
48 | |
49 | |
50 | |
51 </head> | |
52 <body> | |
53 | |
54 <div class="layout"> | |
55 <div id="header"></div> | |
56 <div id="footer"> | |
57 <div align="right"> | |
58 <img src="s6/images/logo.svg" width="200px"> | |
59 </div> | |
60 </div> | |
61 </div> | |
62 | |
63 <div class="presentation"> | |
64 | |
65 <div class='slide cover'> | |
66 <table width="90%" height="90%" border="0" align="center"> | |
67 <tr> | |
68 <td> | |
69 <div align="center"> | |
176 | 70 <h1><font color="#808db5">分散フレームワークChristieの設計</font></h1> |
175 | 71 </div> |
72 </td> | |
73 </tr> | |
74 <tr> | |
75 <td> | |
76 <div align="left"> | |
176 | 77 照屋のぞみ |
78 - profile not found - | |
175 | 79 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> |
80 </div> | |
81 </td> | |
82 </tr> | |
83 </table> | |
84 </div> | |
85 | |
86 <div class='slide '> | |
87 <!-- === begin markdown block === | |
88 | |
89 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0] | |
182 | 90 on 2018-02-07 08:33:50 +0900 with Markdown engine kramdown (1.5.0) |
175 | 91 using options {} |
92 --> | |
93 | |
94 <!-- _S9SLIDE_ --> | |
178
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
95 <h1 id="section">研究目的(1/2)</h1> |
175 | 96 <ul> |
179 | 97 <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する</li> |
98 <li>ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す | |
178
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
99 <ul> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
100 <li>仕様の記述のしやすさ、可読性、拡張時に仕様変更を抑えられるかも含む</li> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
101 </ul> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
102 </li> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
103 <li>スケーラビリティとはサービス利用者が増加したとき単純にノードを追加するだけで線形に性能を向上させる能力</li> |
175 | 104 </ul> |
105 | |
106 | |
107 </div> | |
108 <div class='slide '> | |
109 <!-- _S9SLIDE_ --> | |
178
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
110 <h1 id="section-1">研究目的(2/2)</h1> |
175 | 111 <ul> |
178
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
112 <li>本研究では、Aliceの通信の信頼性を高めるためにNAT越えの機能設計を提案する</li> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
113 <li>そしてその実現にはAliceの再設計が必要であることを示す</li> |
074eb76a9184
add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
114 <li>Aliceの問題点を整理し、得られた知見をもとに分散フレームワークChristieの設計を行う</li> |
175 | 115 </ul> |
116 | |
117 | |
118 </div> | |
119 <div class='slide '> | |
120 <!-- _S9SLIDE_ --> | |
176 | 121 <h1 id="section-2">目次</h1> |
175 | 122 <ul> |
179 | 123 <li>Aliceの概要</li> |
124 <li>AliceのNAT越え</li> | |
125 <li>Aliceの問題点</li> | |
126 <li>Christieの設計</li> | |
127 <li>他フレームワークとの比較</li> | |
175 | 128 <li>まとめ</li> |
176 | 129 <li>今後の課題</li> |
175 | 130 </ul> |
131 | |
132 | |
133 </div> | |
134 <div class='slide '> | |
135 <!-- _S9SLIDE_ --> | |
136 <h1 id="data-segment--code-segment">Data Segment と Code Segment</h1> | |
137 <ul> | |
138 <li>Aliceではデータを <strong>Data Segment(DS)</strong> 、タスクを <strong>Code Segment(CS)</strong> という単位に分割して依存関係を記述することでプログラミングを行う。</li> | |
139 <li>CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。</li> | |
140 <li>CSはkeyで指定されたDSが揃うと実行されるという性質を持つ。 | |
141 <img src="./images/dsandcs.svg" alt="opt" width="50%" /></li> | |
142 </ul> | |
143 | |
144 | |
145 </div> | |
146 <div class='slide '> | |
147 <!-- _S9SLIDE_ --> | |
148 <h1 id="codesegment">CodeSegmentの依存関係</h1> | |
149 <ul> | |
150 <li>データの依存関係にないCSは並列実行される</li> | |
151 <li>データの依存関係がある場合は Input DS が揃うと順に実行される</li> | |
152 <li>DSはCSに専有されるためロックの記述を必要としない | |
153 <img src="./images/dsandcs2.svg" alt="opt" width="60%" /></li> | |
154 </ul> | |
155 | |
156 | |
157 </div> | |
158 <div class='slide '> | |
159 <!-- _S9SLIDE_ --> | |
160 <h1 id="data-segment--codesegment">Data Segment と CodeSegment</h1> | |
161 <ul> | |
162 <li>AliceはJavaで実装されており、DSはJava-Object、CSはRunnableに相当する</li> | |
163 <li>ユーザーが記述する際には CodeSegment.class を継承することでDSを操作するためのAPIを利用して依存関係を記述することができる。</li> | |
164 </ul> | |
165 | |
166 | |
167 </div> | |
168 <div class='slide '> | |
169 <!-- _S9SLIDE_ --> | |
170 <h1 id="data-segment-manager">Data Segment Manager</h1> | |
171 <ul> | |
172 <li>DS の集合体であるデータベースを Alice では <strong>DS Manager(DSM)</strong> と呼ぶ。 </li> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
173 <li>DSM 内の DS には対応する String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。 |
175 | 174 <img src="./pictures/key.svg" alt="opt" width="50%" /></li> |
175 </ul> | |
176 | |
177 | |
178 </div> | |
179 <div class='slide '> | |
180 <!-- _S9SLIDE_ --> | |
181 <h1 id="data-segment-manager-1">Data Segment Manager</h1> | |
182 <ul> | |
183 <li>Local DSM … 各ノード固有のデータベース</li> | |
184 <li>Remote DSM … 他のノードのLocal DSMのproxy。接続しているノードの数だけ存在する。</li> | |
176 | 185 <li>Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる</li> |
186 <li>Remote DSMにはString型のDSM keyを指定してアクセスする | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
187 <img src="./pictures/newDSM.svg" alt="opt" width="50%" /></li> |
175 | 188 </ul> |
189 | |
190 | |
191 </div> | |
192 <div class='slide '> | |
193 <!-- _S9SLIDE_ --> | |
176 | 194 <h1 id="data-segment-api">Data Segment API</h1> |
195 <ul> | |
196 <li>DSの取得 | |
197 <ul> | |
179 | 198 <li>take/peek </li> |
176 | 199 </ul> |
200 </li> | |
201 <li>DSの追加 | |
202 <ul> | |
179 | 203 <li>put/update</li> |
204 </ul> | |
205 </li> | |
206 <li>DSの転送 | |
207 <ul> | |
208 <li>flip</li> | |
176 | 209 </ul> |
210 </li> | |
211 </ul> | |
212 | |
213 | |
214 </div> | |
215 <div class='slide '> | |
216 <!-- _S9SLIDE_ --> | |
217 <h1 id="code-segment">Code Segmentの記述例</h1> | |
218 <ul lang="java"> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
219 <li>take/peekをするにはcreate/setKeyメソッドを使う</li> |
176 | 220 <li><em>create</em> でインプットDGのRecieverを作り、<em>setKey</em> でReceiverにインプットとなるkeyを指定</li> |
221 <li>データをReceiverから取り出す際は <em>asClass()</em> で型を指定</li> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
222 <li>CSを生成し待ち合わせを指定するにはCSをnewする</li> |
176 | 223 </ul> |
224 <pre><code>public class TestCodeSegment extends CodeSegment { | |
225 private Receiver input = ids.create(CommandType.TAKE); | |
226 | |
227 public TestCodeSegment() { | |
228 input.setKey("count"); | |
229 } | |
230 | |
231 @Override | |
232 public void run() { | |
233 int count = input.asClass(Integer.class); | |
234 System.out.println("data = " + count); | |
235 | |
236 new TestCodeSegment(); | |
237 | |
238 ods.put("count", count); | |
239 } | |
240 } | |
241 </code></pre> | |
242 | |
243 | |
244 </div> | |
245 <div class='slide '> | |
246 <!-- _S9SLIDE_ --> | |
175 | 247 <h1 id="computation--meta-computation">Computation と Meta Computation</h1> |
248 <ul> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
249 <li>分散計算にはアルゴリズムの他に、以下のような処理が必要である。 |
175 | 250 <ul> |
251 <li>分散トポロジーの構成</li> | |
252 <li>通信の切断・再接続時の処理</li> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
253 <li>データの圧縮を含む表現形式の選択</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
254 <li>NATなどのネットワークの詳細</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
255 </ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
256 </li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
257 <li>Aliceでは、これらをMeta Computationと呼ぶ。</li> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
258 <li>Meta ComputationもCS/DSによって記述される。 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
259 <img src="./pictures/metaCSDS.svg" alt="opt" width="50%" /></li> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
260 </ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
261 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
262 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
263 </div> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
264 <div class='slide '> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
265 <!-- _S9SLIDE_ --> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
266 <h1 id="alicemeta-computation---topology-manager">AliceのMeta Computation - Topology Manager</h1> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
267 <ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
268 <li>Topology Manager |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
269 <ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
270 <li>ノード間の接続管理やトポロジーの構成管理行うMeta Computation</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
271 <li>Static Topology Manager…参加ノード数の決まったトポロジーをファイルに記述</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
272 <li>Dynamic Topology Manager…可変長のノードに対応し、修復も行う |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
273 <img src="./pictures/connect.svg" alt="opt" width="50%" /> </li> |
175 | 274 </ul> |
275 </li> | |
276 </ul> | |
277 | |
278 | |
279 </div> | |
280 <div class='slide '> | |
281 <!-- _S9SLIDE_ --> | |
176 | 282 <h1 id="alicemeta-computation---">AliceのMeta Computation - 圧縮</h1> |
175 | 283 <ul> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
284 <li>圧縮したデータの伸長と圧縮したままの転送を同時に行いたい</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
285 <li>DSは内部に圧縮・非圧縮の複数の形式を複数もつことができる |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
286 <img src="./pictures/compress.svg" alt="opt" width="80%" /> </li> |
176 | 287 </ul> |
288 | |
289 | |
290 </div> | |
291 <div class='slide '> | |
292 <!-- _S9SLIDE_ --> | |
293 <h1 id="alicemeta-computation----1">AliceのMeta Computation - 圧縮</h1> | |
294 <ul> | |
295 <li>圧縮の指定には宛先DGM keyに”compressed”とつけるだけでよい | |
296 <code>put("compressedRemoteDGM", "key", data)</code></li> | |
297 <li>伸長も <em>asClass()</em> した際に自動でされる</li> | |
298 <li>コードの変更が抑えて圧縮・非圧縮が切り替えられる</li> | |
175 | 299 </ul> |
300 | |
301 | |
302 </div> | |
303 <div class='slide '> | |
304 <!-- _S9SLIDE_ --> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
305 <h1 id="alicenat">AliceのNAT越え</h1> |
175 | 306 <ul> |
179 | 307 <li>NATを越えたノード間通信は分散処理の課題である</li> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
308 <li>Aliceではトポロジー管理がアプリケーションから分離しているため、コードを大きく変更しなくとも複数のTopology Managerを立ち上げることでNAT越えが可能 |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
309 <img src="./pictures/overNAT.svg" alt="opt" width="70%" /></li> |
176 | 310 </ul> |
175 | 311 |
312 | |
313 </div> | |
314 <div class='slide '> | |
315 <!-- _S9SLIDE_ --> | |
316 <h1 id="topology-manager">複数のTopology Managerへの対応</h1> | |
317 <ul> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
318 <li>この機能を実現するにはノードに割り当てられたnodeNameの衝突を避けなければならない</li> |
175 | 319 <li>通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理</li> |
320 <li>Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能<br /> | |
321 <img src="./pictures/somehostname2.svg" alt="opt" width="50%" /></li> | |
322 </ul> | |
323 | |
324 | |
325 </div> | |
326 <div class='slide '> | |
327 <!-- _S9SLIDE_ --> | |
176 | 328 <h1 id="alice---localdsm">Aliceの問題点 - LocalDSMを複数立ち上げられない</h1> |
175 | 329 <ul> |
176 | 330 <li>AliceではDSMを管理するクラスがstaticで書かれていたためLocal DSMを複数立ち上げることができない</li> |
331 <li>このstaticを抜くにはAliceのコード全体を大きく変更しなければならない</li> | |
179 | 332 <li>現状ではNAT越えのMeta Computationの追加が困難</li> |
176 | 333 <li>複数インスタンスを立ち上げての分散プログラムのテストが書けない</li> |
179 | 334 <li>再設計の必要がある</li> |
175 | 335 </ul> |
336 | |
337 | |
338 </div> | |
339 <div class='slide '> | |
340 <!-- _S9SLIDE_ --> | |
176 | 341 <h1 id="alice---api">Aliceの問題点 - APIシンタックスの分離</h1> |
175 | 342 <ul> |
179 | 343 <li>setKeyは記述場所が決まっておらず、待ち合わせを行っているCSの外からも呼べる |
176 | 344 <ul> |
179 | 345 <li>どのkeyを待っているのか不明なCSが生まれてしまう</li> |
176 | 346 </ul> |
347 </li> | |
348 <li>setKeyではkeyを動的に指定することができる | |
349 <ul> | |
350 <li>どんな処理を行っているかわかりづらい</li> | |
351 <li>対応するput箇所も修正しなければならない</li> | |
352 </ul> | |
353 </li> | |
175 | 354 </ul> |
355 | |
356 | |
357 </div> | |
358 <div class='slide '> | |
359 <!-- _S9SLIDE_ --> | |
176 | 360 <h1 id="alice---api-1">Aliceの問題点 - APIシンタックスの分離</h1> |
361 <ul lang="java"> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
362 <li>setKeyは全てのcreateが終わった最後に呼ばなければならない</li> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
363 <li>このように交互に書くと実行時データを取り出すときにNullPointerExeptionになる</li> |
176 | 364 </ul> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
365 <pre><code>class TestCG extends CodeSegment{ |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
366 private Receiver input1; |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
367 private Receiver input2; |
176 | 368 |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
369 public TestCG() { |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
370 input1 = ids.create(CommandType.TAKE); |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
371 input1.setKey("hoge"); |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
372 input2 = ids.create(CommandType.TAKE); |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
373 input2.setKey("huga"); |
176 | 374 } |
375 } | |
376 </code></pre> | |
175 | 377 |
378 | |
379 </div> | |
380 <div class='slide '> | |
381 <!-- _S9SLIDE_ --> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
382 <h1 id="alice---api-2">Aliceの問題点 - APIシンタックスの分離</h1> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
383 <p><img src="./pictures/nullpo.svg" alt="opt" width="60%" /></p> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
384 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
385 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
386 </div> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
387 <div class='slide '> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
388 <!-- _S9SLIDE_ --> |
176 | 389 <h1 id="alice---">Aliceの問題点 - 型が推測できない</h1> |
390 <ul> | |
391 <li>Input DSをReceiver型でcreateするため、どの型のデータを待っているのかわからない</li> | |
392 <li>しかしReceiverからデータを取り出すにはasClass()で型を指定する必要がある</li> | |
179 | 393 <li>型をDSをputした箇所までコードをたどる必要がある</li> |
176 | 394 </ul> |
175 | 395 |
396 | |
397 </div> | |
398 <div class='slide '> | |
399 <!-- _S9SLIDE_ --> | |
176 | 400 <h1 id="alice----1">Aliceの問題点 - まとめ</h1> |
401 <ul> | |
402 <li>以下の問題がAliceの信頼性・拡張性を下げている | |
403 <ul> | |
404 <li>Local DSMを複数立ち上げられないため、Topology Managerの拡張やテストが困難</li> | |
405 <li>インプットAPIが分離しているためCSでどんな処理が行われているかわかりづらい</li> | |
179 | 406 <li>setKeyの記述順序や型を気にしてプログラミングをしなくてはならない</li> |
176 | 407 </ul> |
408 </li> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
409 <li>これらを踏まえフレームワークChristieを設計する</li> |
176 | 410 </ul> |
175 | 411 |
412 | |
413 </div> | |
414 <div class='slide '> | |
415 <!-- _S9SLIDE_ --> | |
179 | 416 <h1 id="christie---1">Christie - 基本設計(1)</h1> |
175 | 417 <ul> |
176 | 418 <li>Javaで実装される</li> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
419 <li>処理の単位にCode Gear(CG)/ Data Gear(DG) という名称を用いる</li> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
420 <li>Code Gear Manager(CGM)という機構がData Gear Manager(DGM)を管理</li> |
176 | 421 </ul> |
422 | |
423 | |
424 </div> | |
425 <div class='slide '> | |
426 <!-- _S9SLIDE_ --> | |
179 | 427 <h1 id="christie---2">Christie - 基本設計(2)</h1> |
176 | 428 <ul> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
429 <li>CGM同士はThreadPoolを共有 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
430 <ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
431 <li>ThreadPool…CPUに合わせた並列度でキューに入ったスレッドを順次実行していく実行機構</li> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
432 <li>ThreadPoolが増えるとCPUのコア数に合わない量のスレッドを管理することになり、並列性が下がる </li> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
433 </ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
434 </li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
435 <li>CGM同士はCGMのリストを共有 |
175 | 436 <ul> |
176 | 437 <li>メタ計算で全てのCGMにアクセス可能 |
438 <img src="./pictures/ChristieClass.svg" alt="opt" width="60%" /></li> | |
175 | 439 </ul> |
440 </li> | |
441 </ul> | |
442 | |
443 | |
444 </div> | |
445 <div class='slide '> | |
446 <!-- _S9SLIDE_ --> | |
179 | 447 <h1 id="christie----2-dgm">Christie - 基本設計(2) DGMの複数立ち上げ</h1> |
448 <ul> | |
449 <li>ChristieではCGMを2つ生成すればLocalDGMも2つ作られる | |
450 <ul> | |
451 <li>NAT越えなどの機能拡張に対応可能</li> | |
452 </ul> | |
453 </li> | |
454 <li>複数のLocalDGM同士のやりとりは、Remoteへの接続と同じようにRemoteDGMを介してアクセスする | |
455 <ul> | |
456 <li>分散プログラムのローカルでのテストが可能になる | |
457 <img src="./pictures/DGM.svg" alt="opt" width="50%" /></li> | |
458 </ul> | |
459 </li> | |
460 </ul> | |
461 | |
462 | |
463 </div> | |
464 <div class='slide '> | |
465 <!-- _S9SLIDE_ --> | |
466 <h1 id="christie---3">Christie - 基本設計(3)</h1> | |
176 | 467 <ul> |
468 <li>CG を記述する際は Alice同様CodeGear.classを継承</li> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
469 <li>CGは <em>void run(CodeGearManager cgm)</em> を持ち、run メソッド内に処理を記述 |
176 | 470 <ul> |
179 | 471 <li>run内で新たなCGを作るためのAPIにはCGM経由で呼び出す</li> |
176 | 472 </ul> |
473 </li> | |
179 | 474 </ul> |
475 | |
476 | |
477 </div> | |
478 <div class='slide '> | |
479 <!-- _S9SLIDE_ --> | |
480 <h1 id="christie---">Christie - アノテーションを用いたインプット記述</h1> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
481 <ul lang="java"> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
482 <li>keyの指定にはJavaのアノテーションを用いる</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
483 <li>フィールドやメソッドに対して@から始まる属性を付与できる |
179 | 484 <ul> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
485 <li>@Override、@SuppressWarningsなど</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
486 <li>コンパイル時にエラーを出せる</li> |
179 | 487 </ul> |
488 </li> | |
489 </ul> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
490 <pre><code>@Take(”count”) |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
491 public DataGear<Integer> count = new DataGear<>(); |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
492 </code></pre> |
179 | 493 |
494 | |
495 </div> | |
496 <div class='slide '> | |
497 <!-- _S9SLIDE_ --> | |
498 <h1 id="christie----1">Christie - アノテーションを用いたインプット記述</h1> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
499 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
500 <li>独自アノテーションを定義できる |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
501 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
502 <li>フィールドやメソッドなどターゲットを指定できる</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
503 <li>アノテーションを保持できる範囲をRUNTIME、CLASS、SOURCEから指定できる</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
504 <li>引数をうけとることもできる</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
505 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
506 </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
507 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
508 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
509 <pre lang="java"><code>@Target(ElementType.FIELD) |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
510 @Retention(RetentionPolicy.RUNTIME) |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
511 public @interface Take { |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
512 String value(); |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
513 } |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
514 </code></pre> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
515 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
516 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
517 </div> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
518 <div class='slide '> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
519 <!-- _S9SLIDE_ --> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
520 <h1 id="christie----2">Christie - アノテーションを用いたインプット記述</h1> |
179 | 521 <ul lang="java"> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
522 <li>InputのためのDGをフィールドで宣言し、それに対してアノテーションでkeyを指定</li> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
523 <li>アノテーションからRUNTIMEで待ち合わせの処理を行う</li> |
179 | 524 <li>Takeの例</li> |
525 </ul> | |
526 <pre><code>@Take(”count”) | |
527 public DataGear<Integer> count = new DataGear<>(); | |
528 </code></pre> | |
529 <ul lang="java"> | |
530 <li>RemoteTakeの例</li> | |
531 </ul> | |
532 <pre><code>@RemoteTake(dgmName="remote", key=”count”) | |
533 public DataGear<Integer> count = new DataGear<>(); | |
534 </code></pre> | |
535 | |
536 | |
537 </div> | |
538 <div class='slide '> | |
539 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
540 <h1 id="christie----3">Christie - アノテーションを用いたインプット記述</h1> |
179 | 541 <ul> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
542 <li>アノテーションから待ち合わせを行う処理にはJavaのreflectionAPIを使用</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
543 <li>待ち合わせを開始するには、newしたあとCGMが持つsetupを行う |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
544 <code>cgm.setup(new TestCodeGear());</code></li> |
182 | 545 <li>フィールドがnewされたあとでないとrefrectionAPIで取れない</li> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
546 </ul> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
547 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
548 |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
549 </div> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
550 <div class='slide '> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
551 <!-- _S9SLIDE_ --> |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
552 <h1 id="christie----4">Christie - アノテーションを用いたインプット記述</h1> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
553 <p><img src="./pictures/setup.svg" alt="opt" width="70%" /></p> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
554 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
555 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
556 </div> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
557 <div class='slide '> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
558 <!-- _S9SLIDE_ --> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
559 <h1 id="christie----5">Christie - アノテーションによるシンタックスの分離阻止</h1> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
560 <ul> |
179 | 561 <li>アノテーションは必ずフィールドに付けなければならない |
562 <ul> | |
563 <li>InputDGの生成とkeyの指定を一箇所に書ける</li> | |
564 </ul> | |
565 </li> | |
566 <li>アノテーションの内容はコンパイル時に決定される | |
567 <ul> | |
568 <li>動的なkey指定を防ぐ</li> | |
569 </ul> | |
570 </li> | |
176 | 571 </ul> |
175 | 572 |
176 | 573 |
574 </div> | |
575 <div class='slide '> | |
576 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
577 <h1 id="christie----6">Christie - 型を指定しないデータ取り出し</h1> |
179 | 578 <ul lang="java"> |
579 <li>InputDGを宣言する際には必ず型の指定が必要となるため、CG内で型を把握できる</li> | |
580 <li>DataGearはJavaの総称型を用いて<>内に指定した型を受け取る</li> | |
581 </ul> | |
582 <pre><code>@Take(”count”) | |
583 public DataGear<Integer> count = new DataGear<>(); | |
584 </code></pre> | |
585 | |
586 | |
587 </div> | |
588 <div class='slide '> | |
589 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
590 <h1 id="christie----7">Christie - 型を指定しないデータ取り出し</h1> |
179 | 591 <ul lang="java"> |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
592 <li>reflectionAPIを使えばアノテーションのついているフィールドの情報もとれる</li> |
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
593 <li>型を判断できる</li> |
179 | 594 <li>宣言された型は内部で保存され、ノード間通信でも保たれる</li> |
595 <li>AliceのasClass()と違い、getData()で型を指定せずにデータを取り出すことができる</li> | |
596 </ul> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
597 <pre><code>public class GetData extends CodeGear{ |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
598 @Take(”name”) |
179 | 599 public DataGear<String> name = new DataGear<>(); |
600 | |
601 @Override | |
602 protected void run(CodeGearManager cgm) { | |
603 System.out.println(”this name is : ” + name.getData()); | |
604 } | |
605 } | |
606 </code></pre> | |
607 | |
608 | |
609 </div> | |
610 <div class='slide '> | |
611 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
612 <h1 id="christie----8">Christie - まとめ</h1> |
179 | 613 <ul> |
614 <li>CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になり、NAT越えなどの機能拡張やテストをしやすくなった</li> | |
615 <li>アノテーションを用いたことでDG生成とkey指定の分離問題を解決し、処理の見通しを良くした</li> | |
616 <li>型の整合性を保証することで信頼性が向上した</li> | |
617 </ul> | |
618 | |
619 | |
620 </div> | |
621 <div class='slide '> | |
622 <!-- _S9SLIDE_ --> | |
180
5a0a11b54ab4
add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
179
diff
changeset
|
623 <h1 id="christie">Christieと他フレームワークの比較</h1> |
179 | 624 <ul> |
625 <li>Akka、Hazelcastと比較してChristieの特徴を述べる | |
626 <ul> | |
627 <li>Akka …Scala/Java向け分散フレームワーク</li> | |
628 <li>Hazelcast …Java向け分散フレームワーク</li> | |
629 </ul> | |
630 </li> | |
631 </ul> | |
632 | |
633 | |
634 </div> | |
635 <div class='slide '> | |
636 <!-- _S9SLIDE_ --> | |
637 <h1 id="christie---akka">Christieと他フレームワークの比較 - Akka</h1> | |
175 | 638 <ul> |
179 | 639 <li>アクターモデル |
640 <ul> | |
641 <li>アクターと呼ばれるオブジェクト同士が並列で非同期メッセージを送受信するモデル</li> | |
642 </ul> | |
643 </li> | |
644 <li>アクターは固有のアドレス持つ | |
645 <ul> | |
646 <li>ローカルアクターにもリモートアクターにもアドレス指定でメッセージを送受信</li> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
647 <li><code>akka://mySystem/user/supervisorActor/childActor</code></li> |
179 | 648 </ul> |
649 </li> | |
650 <li>アクターはメールボックスというキューを持つ | |
651 <ul> | |
652 <li>受け取ったメッセージをパターンマッチで順次処理</li> | |
653 <li>パターンマッチにはScalaのcase classを用いられる | |
654 <img src="./pictures/Akka.svg" alt="opt" width="70%" /></li> | |
655 </ul> | |
656 </li> | |
657 </ul> | |
658 | |
659 | |
660 </div> | |
661 <div class='slide '> | |
662 <!-- _S9SLIDE_ --> | |
663 <h1 id="christie---hazelcast">Christieと他フレームワークの比較 - Hazelcast</h1> | |
664 <ul> | |
665 <li>キーと値の1対1でデータを管理するインメモリ・データグリッド | |
666 <ul> | |
667 <li>複数のノードに分散させたデータを、仮想的な1つのメモリ空間に見せるモデル</li> | |
668 <li>プログラマがサーバを意識せずに共有のタプルスペースに対してデータをget/put</li> | |
669 </ul> | |
670 </li> | |
671 <li>共有のタプルスペースに書き込むとマルチキャストで全サーバにデータが送られる | |
672 <img src="./pictures/Hazelcast.svg" alt="opt" width="50%" /></li> | |
673 </ul> | |
674 | |
675 | |
676 </div> | |
677 <div class='slide '> | |
678 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
679 <h1 id="christie----9">Christieと他フレームワークの比較 - 設計思想</h1> |
179 | 680 <ul> |
681 <li>AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している</li> | |
682 <li>Christieでは分散性を明示的に意識しながら記述できるためチューニングしやすい</li> | |
683 <li>通常計算とメタ計算に分けているため複雑さを下げている</li> | |
684 </ul> | |
685 | |
686 | |
687 </div> | |
688 <div class='slide '> | |
689 <!-- _S9SLIDE_ --> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
690 <h1 id="christie----10">Christieと他フレームワークの比較 - 記述性</h1> |
179 | 691 <ul> |
692 <li>アノテーションを使ったインプットの指定はAkkaやHazelcastにはない</li> | |
693 <li>複数のインプットを待ち合わせして処理を行いたい場合 | |
694 <ul> | |
695 <li>Akkaは待ち合わせ処理をプログラマが書かなければならない</li> | |
696 <li>Christieでは複数のインプットを記述でき待ち合わせ処理が必要ない</li> | |
697 </ul> | |
698 </li> | |
699 <li>データの圧縮通信を指定したい場合 | |
700 <ul> | |
701 <li>Akka、Hazelcastでは圧縮メソッドが用意されているため、それを用いて記述する</li> | |
702 <li>ChristieではDGMkeyの名前を変えるだけでメソッド呼び出しの記述が要らないため少ない変更で拡張が可能</li> | |
703 </ul> | |
704 </li> | |
705 </ul> | |
706 | |
707 | |
708 </div> | |
709 <div class='slide '> | |
710 <!-- _S9SLIDE_ --> | |
711 <h1 id="section-3">まとめ</h1> | |
712 <ul> | |
713 <li>AliceのプロトコルやMeta Computationを説明し、TopologyManagerを用いたNAT越えの手法を示した</li> | |
714 <li>Aliceの問題点を整理し、再設計の必要性を述べた</li> | |
715 <li>LocalDGMの複数立ち上げを可能にし、テストや機能拡張がしやすい環境を整えた</li> | |
716 <li>Christieではアノテーションを用いたAPIで信頼性の高い記述を実現した</li> | |
717 <li>Christieを他のフレームワークと比較し、分散性を意識して記述できる特徴があることを示した</li> | |
718 </ul> | |
719 | |
720 | |
721 </div> | |
722 <div class='slide '> | |
723 <!-- _S9SLIDE_ --> | |
724 <h1 id="section-4">今後の課題</h1> | |
725 <ul> | |
181
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
726 <li>DataGearのメタレイヤーへの移行 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
727 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
728 <li>ユーザーがDataGear型ではなく任意の型でインプットを宣言できるようにする</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
729 <li>getData()をせず直接宣言した変数を使う</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
730 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
731 </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
732 <li>TopologyManagerの実装 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
733 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
734 <li>Christie上にTopologyManagerを実装し、NAT越えが可能か確認する</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
735 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
736 </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
737 <li>実用性の検証 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
738 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
739 <li>Aliceと同等の分散プログラムの記述性能があるか確認する</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
740 <li>アノテーションの処理がオーバーヘッドになっていないか測定する</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
741 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
742 </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
743 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
744 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
745 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
746 </div> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
747 <div class='slide '> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
748 <!-- _S9SLIDE_ --> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
749 <h1 id="section-5">今後の課題</h1> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
750 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
751 <li>Jungleとの統合 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
752 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
753 <li>DGMはトランザクションを持たない</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
754 <li>当研究室で開発しているJungleデータベースはトランザクションや差分管理機能を持つ</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
755 <li>Jungleと統合できればより信頼性の高いデータ操作ができる </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
756 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
757 </li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
758 <li>GearsOSへの移行 |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
759 <ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
760 <li>当研究室で開発しているCG/DGモデルのOS</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
761 <li>モデル検査機構akasyaの搭載など、より信頼性の高い記述環境</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
762 <li>将来GearsOSの分散部分にChristieを移植できると良い</li> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
763 </ul> |
38d95e434fbc
add Annotation slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
180
diff
changeset
|
764 </li> |
176 | 765 </ul> |
766 | |
175 | 767 <style type="text/css"> |
768 <!-- | |
769 *{ | |
770 font:nomal 100% 'PT Sans'; | |
771 } | |
772 | |
773 ul > li{ | |
774 list-style-type:disc; | |
775 } | |
776 | |
777 .slide h1{ | |
778 text-align:left; | |
779 color:#777777; | |
780 font:bold 40px/1.13 'PT Sans', sans-serif; | |
781 margin-bottom: 50px; | |
782 } | |
783 | |
784 div#slide1 h1{ | |
785 text-align:left; | |
786 color:#777777; | |
787 font:bold 60px 'PT Sans', sans-serif; | |
788 margin-bottom: 50px; | |
789 } | |
790 | |
791 pre > code{ | |
792 font-family:'Droid Sans Mono', 'Courier New', monospace; | |
793 } | |
794 | |
795 img[alt="opt"]{ | |
796 display: block; | |
797 margin-left: auto; | |
798 margin-right: auto; | |
799 } | |
800 | |
801 img[alt="right"]{ | |
802 margin-right: 0; | |
803 } | |
804 | |
805 table { | |
806 margin-left: auto; | |
807 margin-right: auto; | |
808 } | |
809 | |
810 th { | |
811 font-size: 120%; | |
812 } | |
813 --> | |
814 </style> | |
815 | |
816 <!-- === end markdown block === --> | |
817 </div> | |
818 | |
819 | |
820 </div><!-- presentation --> | |
821 </body> | |
822 </html> |