annotate presen/sample.markdown @ 180:5a0a11b54ab4

add slide comment
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 06 Feb 2018 18:19:10 +0900
parents a3ee75a897f3
children 38d95e434fbc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
1 title: 分散フレームワークChristieの設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
2 author: 照屋のぞみ
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
177
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
4 # 研究目的(1/2)
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
5 * 当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
6 * ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す
177
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
7 * 仕様の記述のしやすさ、可読性、拡張時に仕様変更を抑えられるかも含む
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
8 * スケーラビリティとはサービス利用者が増加したとき単純にノードを追加するだけで線形に性能を向上させる能力
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
9
177
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
10 # 研究目的(2/2)
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
11 * 本研究では、Aliceの通信の信頼性を高めるためにNAT越えの機能設計を提案する
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
12 * そしてその実現にはAliceの再設計が必要であることを示す
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
13 * Aliceの問題点を整理し、得られた知見をもとに分散フレームワークChristieの設計を行う
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
14
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 # 目次
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 * Aliceの概要
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
18 * AliceのNAT越え
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
19 * Aliceの問題点
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
20 * Christieの設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
21 * 他フレームワークとの比較
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 * まとめ
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
23 * 今後の課題
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
24
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
25
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
26
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 # Data Segment と Code Segment
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 * Aliceではデータを **Data Segment(DS)** 、タスクを **Code Segment(CS)** という単位に分割して依存関係を記述することでプログラミングを行う。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 * CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 * CSはkeyで指定されたDSが揃うと実行されるという性質を持つ。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 ![opt](./images/dsandcs.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 # CodeSegmentの依存関係
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 * データの依存関係にないCSは並列実行される
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 * データの依存関係がある場合は Input DS が揃うと順に実行される
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 * DSはCSに専有されるためロックの記述を必要としない
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ![opt](./images/dsandcs2.svg){:width="60%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 # Data Segment と CodeSegment
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 * AliceはJavaで実装されており、DSはJava-Object、CSはRunnableに相当する
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 * ユーザーが記述する際には CodeSegment.class を継承することでDSを操作するためのAPIを利用して依存関係を記述することができる。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 # Data Segment Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 * DS の集合体であるデータベースを Alice では **DS Manager(DSM)** と呼ぶ。
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
46 * DSM 内の DS には対応する String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 ![opt](./pictures/key.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 # Data Segment Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 * Local DSM … 各ノード固有のデータベース
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 * Remote DSM … 他のノードのLocal DSMのproxy。接続しているノードの数だけ存在する。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 * Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
53 * Remote DSMにはString型のDSM keyを指定してアクセスする
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ![opt](./pictures/newDSM.svg){:width="50%"}
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
55 //図を訂正
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
57 # Data Segment API
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
58 * DSの取得
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
59 * take/peek
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
60 * DSの追加
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
61 * put/update
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
62 * DSの転送
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
63 * flip
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
64
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
65 # Code Segmentの記述例
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
66 * take/peekをするにはcreate/setKeyメソッドを使う
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
67 * *create* でインプットDGのRecieverを作り、*setKey* でReceiverにインプットとなるkeyを指定
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
68 * データをReceiverから取り出す際は *asClass()* で型を指定
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
69 * CSを生成し待ち合わせを指定するにはCSをnewする
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
70 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
71 public class TestCodeSegment extends CodeSegment {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
72 private Receiver input = ids.create(CommandType.TAKE);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
73
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
74 public TestCodeSegment() {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
75 input.setKey("count");
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
76 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
77
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
78 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
79 public void run() {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
80 int count = input.asClass(Integer.class);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
81 System.out.println("data = " + count);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
82
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
83 new TestCodeSegment();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
84
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
85 ods.put("count", count);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
86 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
87 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
88 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
89
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 # Computation と Meta Computation
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
91 * 分散計算にはアルゴリズムの他に、以下のような処理が必要である。
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 * 分散トポロジーの構成
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 * 通信の切断・再接続時の処理
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
94 * データの圧縮を含む表現形式の選択
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
95 * NATなどのネットワークの詳細
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
97 * Aliceでは、これらをMeta Computationと呼ぶ。
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
98 * Meta ComputationもCS/DSによって記述される。
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
100
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
101 # AliceのMeta Computation - Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 * Topology Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 * ノード間の接続管理やトポロジーの構成管理行うMeta Computation
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
104 * Static Topology Manager...参加ノード数の決まったトポロジーをファイルに記述
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
105 * Dynamic Topology Manager...可変長のノードに対応し、修復も行う
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
106 ![opt](./pictures/tree1.svg){:width="60%"}
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
107 //図を訂正
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
109 # AliceのMeta Computation - 圧縮
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
110 * 圧縮したデータの伸長と圧縮したままの転送を同時に行いたい
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
111 * DSは内部に圧縮・非圧縮の複数の形式を複数もつことができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
112 ![opt](./pictures/compress.svg){:width="80%"}
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
113 //図を訂正
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
115 # AliceのMeta Computation - 圧縮
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
116 * 圧縮の指定には宛先DGM keyに"compressed"とつけるだけでよい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
117 `put("compressedRemoteDGM", "key", data)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
118 * 伸長も *asClass()* した際に自動でされる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
119 * コードの変更が抑えて圧縮・非圧縮が切り替えられる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
121 # AliceのNAT越え
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
122 * NATを越えたノード間通信は分散処理の課題である
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
123 * Aliceではトポロジー管理がアプリケーションから分離しているため、コードを大きく変更しなくとも複数のTopology Managerを立ち上げることでNAT越えが可能
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
124 ![opt](./pictures/overNAT.svg){:width="70%"}
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
125 //図を訂正
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 # 複数のTopology Managerへの対応
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
128 * この機能を実現するにはノードに割り当てられたnodeNameの衝突を避けなければならない
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 * 通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 * Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 ![opt](./pictures/somehostname2.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
133
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
134 # Aliceの問題点 - LocalDSMを複数立ち上げられない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
135 * AliceではDSMを管理するクラスがstaticで書かれていたためLocal DSMを複数立ち上げることができない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
136 * このstaticを抜くにはAliceのコード全体を大きく変更しなければならない
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
137 * 現状ではNAT越えのMeta Computationの追加が困難
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
138 * 複数インスタンスを立ち上げての分散プログラムのテストが書けない
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
139 * 再設計の必要がある
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
140
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
141 # Aliceの問題点 - APIシンタックスの分離
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
142 * setKeyは記述場所が決まっておらず、待ち合わせを行っているCSの外からも呼べる
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
143 * どのkeyを待っているのか不明なCSが生まれてしまう
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
144 * setKeyではkeyを動的に指定することができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
145 * どんな処理を行っているかわかりづらい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
146 * 対応するput箇所も修正しなければならない
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
148 # Aliceの問題点 - APIシンタックスの分離
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
149 * setKeyは全てのcreateが終わった最後に呼ばなければならない
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
150 * 以下のような書き方では実行時データを取り出すときにNullPointerExeptionになる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
151 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
152 class ShowData extends CodeSegment{
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
153 private Receiver input1;
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
154 private Receiver input2;
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
155
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
156 public ShowData(int cnt) {
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
157 input1 = ids.create(CommandType.TAKE);
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
158 input1.setKey("hoge");
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
159 input2 = ids.create(CommandType.TAKE);
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
160 input2.setKey("huga");
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
161 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
162 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
163 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
165 # Aliceの問題点 - APIシンタックスの分離
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
166 //なぜそうなるのか
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
167
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
168
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
169 # Aliceの問題点 - 型が推測できない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
170 * Input DSをReceiver型でcreateするため、どの型のデータを待っているのかわからない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
171 * しかしReceiverからデータを取り出すにはasClass()で型を指定する必要がある
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
172 * 型をDSをputした箇所までコードをたどる必要がある
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
173
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
174 # Aliceの問題点 - まとめ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
175 * 以下の問題がAliceの信頼性・拡張性を下げている
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
176 * Local DSMを複数立ち上げられないため、Topology Managerの拡張やテストが困難
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
177 * インプットAPIが分離しているためCSでどんな処理が行われているかわかりづらい
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
178 * setKeyの記述順序や型を気にしてプログラミングをしなくてはならない
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
179
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
180 # Christie - 基本設計(1)
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
181 * Javaで実装される
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
182 * 処理の単位にCode Gear(CG)/ Data Gear(DG) という名称を用いる
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
183 * Code Gear Manager(CGM)という機構がData Gear Manager(DGM)を管理
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
184 ![opt](./pictures/ChristieClass.svg){:width="60%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
186 # Christie - 基本設計(2)
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
187 * CGM同士はThreadPoolを共有
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
188 * ThreadPool...CPUに合わせた並列度でキューに入ったスレッドを順次実行していく実行機構
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
189 * ThreadPoolが増えると性能はあがらないため共有
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
190 * CGM同士はCGMのリストを共有
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
191 * メタ計算で全てのCGMにアクセス可能
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
192 ![opt](./pictures/ChristieClass.svg){:width="60%"}
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
193
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
194 # Christie - 基本設計(2) DGMの複数立ち上げ
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
195 * ChristieではCGMを2つ生成すればLocalDGMも2つ作られる
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
196 * NAT越えなどの機能拡張に対応可能
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
197 * 複数のLocalDGM同士のやりとりは、Remoteへの接続と同じようにRemoteDGMを介してアクセスする
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
198 * 分散プログラムのローカルでのテストが可能になる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
199 ![opt](./pictures/DGM.svg){:width="50%"}
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
200
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
201 # Christie - 基本設計(3)
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
202 * CG を記述する際は Alice同様CodeGear.classを継承
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
203 * CGは *void run(CodeGearManager cgm)* を持ち、run メソッド内に処理を記述
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
204 * run内で新たなCGを作るためのAPIにはCGM経由で呼び出す
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
205 * このようにCGMを持ち運ぶ書き方はGearsOSに合わせてた書き方
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
206
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
207 # Christie - アノテーションを用いたインプット記述
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
208 * keyの指定にはJavaのアノテーションを用いる
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
209 * フィールドやメソッドに対して属性を付与できる
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
210 * Override、@SuppressWarningsなど
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
211 * コンパイル時にエラーを出せる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
212 * 独自アノテーションを定義できる
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
213 * RUNTIMEとかの指定
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
214 //例を入れる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
216 # Christie - アノテーションを用いたインプット記述
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
217 * InputのためのDGをフィールドで宣言し、それに対してアノテーションでkeyを指定
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
218 * RUNTIME
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
219 * Takeの例
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
220 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
221 @Take(”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
222 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
223 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
224 * RemoteTakeの例
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
225 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
226 @RemoteTake(dgmName="remote", key=”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
227 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
228 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
230 # Christie - アノテーションを用いたインプット記述
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
231 * アノテーションから待ち合わせを行う処理にはJavaのreflectionAPIを使用
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
232 //javassistの話入れる?→Classを1つもnewしてない状況じゃなきゃ使えない?
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
233 * 内部でどうなっているのか
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
234 * newしたあとsetupを行う
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
235 * RUNTIMEにしたためフィールドがnewされたあとでないとrefrectionAPIで取れない
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
236
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
237 # Christie - アノテーションによるシンタックスの分離阻止
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
238 * アノテーションは必ずフィールドに付けなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
239 * InputDGの生成とkeyの指定を一箇所に書ける
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
240 * アノテーションの内容はコンパイル時に決定される
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
241 * 動的なkey指定を防ぐ
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
243 # Christie - 型を指定しないデータ取り出し
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
244 * InputDGを宣言する際には必ず型の指定が必要となるため、CG内で型を把握できる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
245 * DataGearはJavaの総称型を用いて<>内に指定した型を受け取る
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
246 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
247 @Take(”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
248 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
249 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
251 # Christie - 型を指定しないデータ取り出し
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
252 * reflectionAPIを使えばアノテーションのついているフィールドの情報もとれる
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
253 * 型を判断できる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
254 * 宣言された型は内部で保存され、ノード間通信でも保たれる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
255 * AliceのasClass()と違い、getData()で型を指定せずにデータを取り出すことができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
256 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
257 public class GetData extends CodeGear{ @Take(”name”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
258 public DataGear<String> name = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
259
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
260 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
261 protected void run(CodeGearManager cgm) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
262 System.out.println(”this name is : ” + name.getData());
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
263 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
264 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
265 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
266 * 取得したDGが待ち合わせに指定した型と違う場合はエラーになる
180
5a0a11b54ab4 add slide comment
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 179
diff changeset
267 //実行時?コンパイル時?
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
269 # Christie - まとめ
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
270 * CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になり、NAT越えなどの機能拡張やテストをしやすくなった
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
271 * アノテーションを用いたことでDG生成とkey指定の分離問題を解決し、処理の見通しを良くした
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
272 * 型の整合性を保証することで信頼性が向上した
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
274 # Christieと他フレームワークの比較
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
275 * Akka、Hazelcastと比較してChristieの特徴を述べる
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
276 * Akka ...Scala/Java向け分散フレームワーク
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
277 * Hazelcast ...Java向け分散フレームワーク
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
279 # Christieと他フレームワークの比較 - Akka
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
280 * アクターモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
281 * アクターと呼ばれるオブジェクト同士が並列で非同期メッセージを送受信するモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
282 * アクターは固有のアドレス持つ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
283 * ローカルアクターにもリモートアクターにもアドレス指定でメッセージを送受信
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
284 * アクターはメールボックスというキューを持つ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
285 * 受け取ったメッセージをパターンマッチで順次処理
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
286 * パターンマッチにはScalaのcase classを用いられる
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
287 ![opt](./pictures/Akka.svg){:width="70%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
288
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
289 # Christieと他フレームワークの比較 - Hazelcast
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
290 * キーと値の1対1でデータを管理するインメモリ・データグリッド
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
291 * 複数のノードに分散させたデータを、仮想的な1つのメモリ空間に見せるモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
292 * プログラマがサーバを意識せずに共有のタプルスペースに対してデータをget/put
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
293 * 共有のタプルスペースに書き込むとマルチキャストで全サーバにデータが送られる
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
294 ![opt](./pictures/Hazelcast.svg){:width="50%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
295
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
296 # Christieと他フレームワークの比較 - 設計思想
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
297 * AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
298 * Christieでは分散性を明示的に意識しながら記述できるためチューニングしやすい
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
299 * 通常計算とメタ計算に分けているため複雑さを下げている
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
301 # Christieと他フレームワークの比較 - 記述性
178
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
302 * アノテーションを使ったインプットの指定はAkkaやHazelcastにはない
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
303 * 複数のインプットを待ち合わせして処理を行いたい場合
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
304 * Akkaは待ち合わせ処理をプログラマが書かなければならない
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
305 * Christieでは複数のインプットを記述でき待ち合わせ処理が必要ない
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
306 * データの圧縮通信を指定したい場合
074eb76a9184 add Akka/Hazelcast slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 177
diff changeset
307 * Akka、Hazelcastでは圧縮メソッドが用意されているため、それを用いて記述する
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
308 * ChristieではDGMkeyの名前を変えるだけでメソッド呼び出しの記述が要らないため少ない変更で拡張が可能
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
310 # まとめ
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
311 * AliceのプロトコルやMeta Computationを説明し、TopologyManagerを用いたNAT越えの手法を示した
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
312 * Aliceの問題点を整理し、再設計の必要性を述べた
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
313 * LocalDGMの複数立ち上げを可能にし、テストや機能拡張がしやすい環境を整えた
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
314 * Christieではアノテーションを用いたAPIで信頼性の高い記述を実現した
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
315 * Christieを他のフレームワークと比較し、分散性を意識して記述できる特徴があることを示した
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
316
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
317 # 今後の課題
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
318 * DataGearのメタレイヤーへの移行
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
319 * TopologyManagerの実装
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
320 * 実用性の検証
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
321 * Jungleとの統合
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
322 * GearsOSへの移行
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323
179
a3ee75a897f3 cut slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 178
diff changeset
324
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325 <style type="text/css">
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 <!--
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 *{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 font:nomal 100% 'PT Sans';
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 ul > li{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 list-style-type:disc;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
334
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 .slide h1{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 text-align:left;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
337 color:#777777;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 font:bold 40px/1.13 'PT Sans', sans-serif;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
339 margin-bottom: 50px;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
341
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 div#slide1 h1{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 text-align:left;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 color:#777777;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
345 font:bold 60px 'PT Sans', sans-serif;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 margin-bottom: 50px;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
348
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 pre > code{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
350 font-family:'Droid Sans Mono', 'Courier New', monospace;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
352
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 img[alt="opt"]{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 display: block;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 margin-left: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 margin-right: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 img[alt="right"]{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 margin-right: 0;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
362
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363 table {
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 margin-left: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 margin-right: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
367
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
368 th {
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
369 font-size: 120%;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
370 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
371 -->
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
372 </style>