annotate presen/sample.markdown @ 177:b5ab0f9c07aa

change paper
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 06 Feb 2018 11:14:10 +0900
parents 055266d62d84
children 074eb76a9184
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)
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
5 * スケーラブルで信頼性の高い分散プログラムを書くのは容易ではない
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
6 * 並列で動く分散した資源を意識するのは難しい
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
7 * 分散したノードの洗濯方法が明確ではない􏱾􏱿􏰮􏳠􏲒􏰌􏰍􏰞􏰫􏷑􏷒􏱃􏱱􏲭􏰞􏰡􏰨􏰢􏱯􏱰􏰻􏰼􏰔􏰠􏳍􏳎􏰮􏰠􏰡􏲒􏰭􏲣 􏰫􏰭􏰘􏰔􏱑􏰥􏰹􏰌􏰍􏰞􏰫
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 * 当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。
177
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
9 * ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
10 * 仕様の記述のしやすさ、可読性、拡張時に仕様変更を抑えられるかも含む
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
11 * スケーラビリティとはサービス利用者が増加したとき単純にノードを追加するだけで線形に性能を向上させる能力
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
12
177
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
13 # 研究目的(2/2)
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
14 * 本研究では、Aliceの通信の信頼性を高めるためにNAT越えの機能設計を提案する
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
15 * そしてその実現にはAliceの再設計が必要であることを示す
b5ab0f9c07aa change paper
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 176
diff changeset
16 * Aliceの問題点を整理し、得られた知見をもとに分散フレームワークChristieの設計を行う
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
17
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 # 目次
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 * Aliceの概要
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 * Code Segment / Data Segment
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 * Data Segment Manager
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
23 * API
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 * Computation / Meta Computation
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
25 * Topology Manager
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 * Topology Managerの拡張設計
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 * 別トポロジー間の接続のための設計
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 * 別ネットワーク間の接続のための設計
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
30 * Aliceの問題点
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
31 * LocalDSMの複数立ち上げができない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
32 * 記述の煩雑さ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
33 * Christieの設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
34 * 基本設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
35 * 記述性の改善
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
36 * 他フレームワークとの比較
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
37 * Akka, Hazelcast
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
38 * 設計思想の違い
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
39 * 記述性の違い
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
40 * 提供する機能
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 * まとめ
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
42 * 今後の課題
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
43
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
44
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
45
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 # Data Segment と Code Segment
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 * Aliceではデータを **Data Segment(DS)** 、タスクを **Code Segment(CS)** という単位に分割して依存関係を記述することでプログラミングを行う。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 * CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 * CSはkeyで指定されたDSが揃うと実行されるという性質を持つ。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 ![opt](./images/dsandcs.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 # CodeSegmentの依存関係
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 * データの依存関係にないCSは並列実行される
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 * データの依存関係がある場合は Input DS が揃うと順に実行される
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 * DSはCSに専有されるためロックの記述を必要としない
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 ![opt](./images/dsandcs2.svg){:width="60%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 # Data Segment と CodeSegment
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 * AliceはJavaで実装されており、DSはJava-Object、CSはRunnableに相当する
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 * ユーザーが記述する際には CodeSegment.class を継承することでDSを操作するためのAPIを利用して依存関係を記述することができる。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 # Data Segment Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 * DS の集合体であるデータベースを Alice では **DS Manager(DSM)** と呼ぶ。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 * DSM 内の DS には対応する一意の String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 ![opt](./pictures/key.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 # Data Segment Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 * Local DSM … 各ノード固有のデータベース
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 * Remote DSM … 他のノードのLocal DSMのproxy。接続しているノードの数だけ存在する。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 * Remote DSMに書き込むと対応するノードのLocalDSMに書き込まれる
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
72 * Remote DSMにはString型のDSM keyを指定してアクセスする
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ![opt](./pictures/newDSM.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
75 # Data Segment API
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
76 * DSの取得
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
77 * `void take(String managerKey, String key)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
78 * `void peek(String managerKey, String key)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
79 * DSの追加
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
80 * `void put(String managerKey, String key, Object val)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
81 * `void update(String managerKey, String key, Object val)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
82 * `void flip(String managerKey, String key, Receiver val)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
83
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
84 # Code Segmentの記述例
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
85 * take/peekをするにはcreate/setKeyメソッドを使わなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
86 * *create* でインプットDGのRecieverを作り、*setKey* でReceiverにインプットとなるkeyを指定
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
87 * データをReceiverから取り出す際は *asClass()* で型を指定
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
88 * 処理をループさせたい場合はCSをnewする
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
89 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
90 public class TestCodeSegment extends CodeSegment {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
91 private Receiver input = ids.create(CommandType.TAKE);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
92
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
93 public TestCodeSegment() {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
94 input.setKey("count");
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
95 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
96
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
97 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
98 public void run() {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
99 int count = input.asClass(Integer.class);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
100 System.out.println("data = " + count);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
101
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
102 new TestCodeSegment();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
103
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
104 ods.put("count", count);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
105 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
106 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
107 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
108
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 # Computation と Meta Computation
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 * Aliceでは、計算の本質的な処理をComputatin、Computationとは別のレベルでそれを支える処理をMeta Computationとして分けて考える。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 * Alice のComputationは、keyによりDSを待ち合わせ、DSが揃ったCSを並列に実行する処理
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 * Meta Computationはそれを実現している処理
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 * DSの待ち合わせ
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 * 分散トポロジーの構成
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 * 通信の切断・再接続時の処理
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 * データの表現形式の選択
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 # Computation と Meta Computation
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 * 分散環境構築などの複雑な処理をAliceがMeta Computationとして提供する
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 * プログラマは目的の処理だけ記述し通信部分などはMeta Computationを指定する
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 * シンプルで見通しの良いコードを保つ
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
123 # AliceのMeta Computation - Topology Manager/Topology Node
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 * Topology Manager
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 * ノード間の接続管理やトポロジーの構成管理行うMeta Computation
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 * Static Topology ManagerとDynamic Topology Managerがある
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 * Topology Node
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 * 各ノード側でTopology Managerとの通信を行うMeta Computation
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 * ノードアプリケーションを記述する際にTopology Nodeをnewしておけば以降のTopology Managerとの通信やノード間の接続を行う
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 * Topology Manager/NodeもCS/DSを用いて実装されている。
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
132 # AliceのMeta Computation - Static Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 * プログラマがdot形式のトポロジーファイルを用意し、Topology Managerに読み込ませる
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 * トポロジーファイルにはノードの接続関係と接続する際に指定するRemote DSM名を記す
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 * Graphvizを用いればトポロジーを描くだけでトポロジーファイルが自動出力されるため構成が容易
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 ```dot
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 digraph test{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 node0 −> node1[label=”right”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 node0 −> node2[label=”left”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 node1 −> node2[label=”right”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 node1 −> node0[label=”left”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 node2 −> node0[label=”right”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 node2 −> node1[label=”left”]
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 ```
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のMeta Computation - Static Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 * ファイルを読み込んだTopology Managerを立ち上げる
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 * 各Topology NodeはTopology Managerに参加表明をし接続すべきノードの情報を要求する
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 ![opt](./pictures/tree1.svg){:width="60%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
153 # AliceのMeta Computation - Static Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 * 参加表明があった順に各ノードにnodeNameを割り当て、接続するべきノードのIPアドレス/ポート番号を送る
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 ![opt](./pictures/tree2.svg){:width="60%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
157 # AliceのMeta Computation - Static Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 * Topology Nodeが受け取った情報をもとにRemote DSMを立ちあげ接続し合うことでオーバーレイネットワークが作られる
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 * Topology Managerは接続情報を管理し、実際の接続はTopology Nodeが行う
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 ![opt](./pictures/tree3.svg){:width="60%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
162 # AliceのMeta Computation - Dynamic Topology Manager
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 * 参加するノード数があらかじめ決まっているとは限らない
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 * Dynamic Topology Managerがノードを参加表明順にトポロジーに組み込む
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
165 * 現在はTree Topologyに対応
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
167 # AliceのMeta Computation - 圧縮
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
168 * DSは内部に圧縮・非圧縮の複数の形式を複数もつことができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
169 * 圧縮したデータの伸長と圧縮したままの転送が同時に可能
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
170 ![opt](./pictures/compress.svg){:width="80%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
172 # AliceのMeta Computation - 圧縮
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
173 * 圧縮の指定には宛先DGM keyに"compressed"とつけるだけでよい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
174 `put("compressedRemoteDGM", "key", data)`
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
175 * 伸長も *asClass()* した際に自動でされる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
176 * コードの変更が抑えて圧縮・非圧縮が切り替えられる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
178
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
180 # Aliceに求められるMeta Computation - アプリケーションの接続
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
181 * 別のトポロジーをもった既存のアプリケーション同士をコードの変更を抑えつつ接続させたい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
182 * AliceVNC
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
183 * Alice上に実装したツリートポロジーの画面配信システム
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 * AliceChat
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
185 * Alice上に実装したスタートポロジーのチャット
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
186 * 連携することで実現したい機能
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 * VNC画面のスナップショットをチャットに載せる
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 * チャットの内容をVNC画面にコメントとして流す
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
190 # Aliceに求められるMeta Computation - アプリケーションの接続
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
191 * それぞれのアプリケーションのトポロジーを構成するTopologyManagerを連携させることで可能
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
192 ![opt](./pictures/vncandchat.svg){:width="70%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
194 # Aliceに求められるMeta Computation - NATを越えた接続
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
195 * NATを越えたノード間通信は分散処理の課題である
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
196 * Aliceではトポロジー管理がアプリケーションから分離しているため、コードを大きく変更しなくともTopology Managerを増やすことでトポロジーの拡張が可能
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
198 # Aliceに求められるMeta Computation - NATを越えた接続
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
199 * 各プライベートネットワーク内を管理するPrivate Topology Manager
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
200 * グローバルIPアドレスを持ったGlobal Topology Managerを1つ立てる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
201 * TopologyNodeが複数対応できるためPrivate/Global Topology Managerに接続
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
202 ![opt](./pictures/overNAT.svg){:width="70%"}
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 # 複数のTopology Managerへの対応
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
206 * 別トポロジーのアプリケーションの連携やNAT越えはノードが複数のTopologyManagerに接続することで可能になる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 * この機能を実現するにはTopology Nodeが各Topology Managerに対応する複数のnodeNameを持つようにする必要がある
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 * Topology Nodeは割り当てられたnodeNameをDSとして保持してTopology Managerと通信を行うため、nodeNameの衝突を避けなければならない
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 ![opt](./pictures/somehostname.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 # Local DSMの切り替えによる対応
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 * 通常のLocal DSMとは別にTopology ManagerごとのLocal DSMを作成しnodeNameを管理
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 * Tpology Manager/Nodeの働きはそのままに、指定するLocal DSMを変えるだけでTopology Managerの複数対応が可能
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 ![opt](./pictures/somehostname2.svg){:width="50%"}
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
217
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
218 # Aliceの問題点 - LocalDSMを複数立ち上げられない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
219 * AliceではDSMを管理するクラスがstaticで書かれていたためLocal DSMを複数立ち上げることができない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
220 * このstaticを抜くにはAliceのコード全体を大きく変更しなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
221 * アプリケーション接続やNAT越えのMeta Computationの追加が困難
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
222 * 複数インスタンスを立ち上げての分散プログラムのテストが書けない
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 # Aliceの問題点 - APIシンタックスの分離
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
225 * setKeyは記述場所が決まっておらず、CSの外からも呼べる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
226 * CSの再利用を可能にするが、どのkeyを待っているのか不明なCSが生まれてしまう
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
227 * setKeyではkeyを動的に指定することができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
228 * どんな処理を行っているかわかりづらい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
229 * 対応するput箇所も修正しなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
230 * モデル検査しづらくなる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
232 # Aliceの問題点 - APIシンタックスの分離
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
233 * setKeyは全てのcreateが終わった最後に呼ばなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
234 * Input DGの待ち合わせを行うカウンタはcreateの総数を持っている
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
235 * カウントが0になると入力が揃ったと判断しrunに入る
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
236 * countとsetKeyを交互に書くと入力が揃わないまま実行されNullPointExceptionになる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
237 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
238 class ShowData extends CodeSegment{
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
239 private Receiver[] info;
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 public ShowData(int cnt) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
242 info = new Receiver[cnt];
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
243 for (int i= 0;i < cnt; i++) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
244 info[i] = ids.create(CommandType.TAKE);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
245 info[i].setKey(SetInfo.array[i]);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
246 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
247 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
248
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
249 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
250 public void run() {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
251 int size = 0;
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
252 for (Receiver anInfo : info) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
253 DataList dlist = anInfo.asClass(DataList.class);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
254 dlist.showData();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
255 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
256 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
257 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
258 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
260 # Aliceの問題点 - 型が推測できない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
261 * Input DSをReceiver型でcreateするため、どの型のデータを待っているのかわからない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
262 * しかしReceiverからデータを取り出すにはasClass()で型を指定する必要がある
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
263 * 型をDSをputした箇所までコードをたどる必要がある
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
264 * flipでの転送もあるため、それを発見するのは容易ではない
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 # Aliceの問題点 - まとめ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
267 * 以下の問題がAliceの信頼性・拡張性を下げている
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
268 * Local DSMを複数立ち上げられないため、Topology Managerの拡張やテストが困難
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
269 * インプットAPIが分離しているためCSでどんな処理が行われているかわかりづらい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
270 * setKyeの記述順序や型を気にしてプログラミングをしなくてはならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
271
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
272 # 分散フレームワークChristieへの必要要件
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
273 * Aliceの問題点を踏まえ、フレームワークをChristieを設計する
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
274 * staticなLocalDSMをなくし複数インスタンスを立ち上げられるようにすることでスケーラビリティを高める
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
275 * 煩雑なAPIをシンプルにし、記述性を高める
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
276 * 型の整合性をとれるようにし、信頼性を向上させる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
277
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
278 # Christie - 基本設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
279 * Javaで実装される
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
280 * 将来的に当研究室で開発しているGearsOSに統合したい
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
281 * GearsOSに倣い、Code Gear(CG)/ Data Gear(DG) という名称を用いる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
282 * CG/DGの依存関係や、DG Manager(DGM)の構造、Remote DGMへの接続方法はAliceと同様である
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
283
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
284 # Christie - 基本設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
285 * DGMはLocalもRemoteも全てCode Gear Manager(CGM)が管理する
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
286 * 1つのCGMは1つのLocalDGMを持つ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
287 * CGM同士はThreadPoolとCGMのリストを共有している
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
288 * メタ計算で全てのCGMにアクセス可能
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
289 ![opt](./pictures/ChristieClass.svg){:width="60%"}
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
290
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
291 # Christie - 基本設計
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
292 * CG を記述する際は Alice同様CodeGear.classを継承
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
293 * CGは *void run(CodeGearManager cgm)* を持ち、run メソッド内に処理を記述
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
294 * このようにCGMを持ち運ぶ書き方はGearsOSに合わせてた書き方
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
295 * CGを作るためのAPIにはCGM経由で呼び出す
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
296
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
297 # Christie - DGMの複数立ち上げ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
298 * ChristieではCGMを2つ生成すればLocalDGMも2つ作られる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
299 * 複数のLocalDGM同士のやりとりは、Remoteへの接続と同じようにRemoteDGMを介してアクセスする
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
300 * 分散プログラムのローカルでのテストが可能になる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
301 ![opt](./pictures/DGM.svg){:width="50%"}
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
302
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
303 # Christie - CGの生成方法
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
304 1. StartCodeGear.classを継承しCGMを生成する
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
305 2. CGをnewしたあと*setup*を用いる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
306 * newが終わらないとアノテーションから待ち合わせを行う処理ができないため
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
307 * このときCGMがCGに渡されるため、プログラマが引数にCGMを渡す必要はない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
308
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
309 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
310 public class StartTest extends StartCodeGear{//StartCG
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
311
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
312 public StartTest(CodeGearManager cgm) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
313 super(cgm);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
314 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
315
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
316 public static void main(String args[]){
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
317 StartTest start = new StartTest(createCGM(10000));//CGMを生成
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
318 }
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
319
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
320 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
321 protected void run(CodeGearManager cgm) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
322 cgm.setup(new TestCodeGear());//CGの待ち合わせを開始
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
323 getLocalDGM().put("count", 1);
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
324 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
325 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
326 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
327
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
328 # Christie - アノテーションを用いたインプット記述
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
329 * keyの指定にはJavaのアノテーションを用いる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
330 * 先頭を@で始める注釈
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
331 * 独自アノテーションを定義できる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
332 * アノテーションから待ち合わせを行う処理にはJavaのreflectionAPIを使用
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
334 # Christie - アノテーションを用いたインプット記述
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
335 * InputのためのDGを宣言し、その上にアノテーションでkeyを指定
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
336 * Takeの例
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
337 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
338 @Take(”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
339 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
340 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
341 * RemoteTakeの例
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
342 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
343 @RemoteTake(dgmName="remote", key=”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
344 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
345 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
347 # Christie - アノテーションを用いたインプット記述
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
348 * アノテーションは必ずフィールドに付けなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
349 * InputDGの生成とkeyの指定を一箇所に書ける
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
350 * アノテーションの内容はコンパイル時に決定される
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
351 * 動的なkey指定を防ぐ
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
352
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
353 # Christie - 型を指定しないデータ取り出し
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
354 * InputDGを宣言する際には必ず型の指定が必要となるため、CG内で型を把握できる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
355 * DataGearはJavaの総称型を用いて<>内に指定した型を受け取る
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
356 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
357 @Take(”count”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
358 public DataGear<Integer> count = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
359 ```
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
361 # Christie - 型を指定しないデータ取り出し
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
362 * 宣言された型は内部で保存され、ノード間通信でも保たれる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
363 * AliceのasClass()と違い、getData()で型を指定せずにデータを取り出すことができる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
364 ```java
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
365 public class GetData extends CodeGear{ @Take(”name”)
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
366 public DataGear<String> name = new DataGear<>();
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
367
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
368 @Override
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
369 protected void run(CodeGearManager cgm) {
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
370 System.out.println(”this name is : ” + name.getData());
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
371 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
372 }
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
373 ```
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
374 * 取得したDGが待ち合わせに指定した型と違う場合はエラーになる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
375
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
376 # Christie - 設計の効果
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
377 * CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になった
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
378 * テストや機能拡張がしやすくなった
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
379 * アノテーションを用いたことでDG生成とkey指定の分離問題を解決し、処理の見通しを良くした
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
380 * 型の整合性を保証することで信頼性が向上した
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
381
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
382 # Christieと他フレームワークの比較
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
383 * Christieの特徴を述べるために他の分散フレームワークとしてAkka、Hazelcastと比較を行う
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
384
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
385 # Christieと他フレームワークの比較 - Akka
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
386 * アクターモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
387 * アクターと呼ばれるオブジェクト同士が並列で非同期メッセージを送受信するモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
388 * アクターは固有のアドレス持つ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
389 * ローカルアクターにもリモートアクターにもアドレス指定でメッセージを送受信
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
390 * アクターはメールボックスというキューを持つ
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
391 * 受け取ったメッセージをパターンマッチで順次処理
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
392 * パターンマッチにはScalaのcase classを用いられる。
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
393
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
394 # Christieと他フレームワークの比較 - Hazelcast
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
395 * キーと値の1対1でデータを管理するインメモリ・データグリッド
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
396 * 複数のノードに分散させたデータを、仮想的な1つのメモリ空間に見せるモデル
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
397 * プログラマがサーバを意識せずに共有のタプルスペースに対してデータをget/put
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
398 * 共有のタプルスペースに書き込むとマルチキャストで全サーバにデータが贈られる
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
399
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
400 # Christieと他フレームワークの比較 - 設計思想
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
401 * AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
402 * 分散性を明示的に意識しながら細かな処理を記述できる
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
403 * 通常計算とメタ計算に分けているため複雑さをセパレートしている
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
405 # Christieと他フレームワークの比較 - 記述性
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
406 * AkkaはFIFO的にメッセージを処理する複数インプットのときの待ち合わせ処理をプログラマが書かなければならない
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
407 * アノテーションを使ったインプットの指定はAkkaやHazelcastにはなく、複数インプットが書きやすいため
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
408
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
409 # Christieと他フレームワークの比較 - 提供する機能
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
410 * NAT
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
411 * 圧縮
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
413 # まとめ
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
414 * AliceのプロトコルやMeta Computationを説明し、TopologyManagerを用いたNAT越えの手法を示した
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
415 * Aliceの問題点を整理し、再設計の必要性を述べた
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
416 * LocalDGMの複数立ち上げを可能にし、テストや機能拡張がしやすい環境を整えた
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
417 * Christieではアノテーションを用いたAPIで信頼性の高い記述を実現した
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
418 * Christieを他のフレームワークと比較し、分散性を意識して記述できる特徴があることを述べた
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
419
176
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
420 # 今後の課題
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
421 * DataGearのメタレイヤーへの移行
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
422 * TopologyManagerの実装
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
423 * 実用性の検証
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
424 * Jungleとの統合
055266d62d84 add slide
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 175
diff changeset
425 * GearsOSへの移行
175
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
426
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 <style type="text/css">
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 <!--
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 *{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
430 font:nomal 100% 'PT Sans';
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
431 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
433 ul > li{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 list-style-type:disc;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
435 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
436
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
437 .slide h1{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
438 text-align:left;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 color:#777777;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 font:bold 40px/1.13 'PT Sans', sans-serif;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 margin-bottom: 50px;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
442 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
443
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
444 div#slide1 h1{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 text-align:left;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
446 color:#777777;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
447 font:bold 60px 'PT Sans', sans-serif;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
448 margin-bottom: 50px;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
449 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
450
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
451 pre > code{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 font-family:'Droid Sans Mono', 'Courier New', monospace;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
454
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 img[alt="opt"]{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 display: block;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 margin-left: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 margin-right: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
460
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
461 img[alt="right"]{
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 margin-right: 0;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
464
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 table {
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 margin-left: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 margin-right: auto;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
469
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 th {
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
471 font-size: 120%;
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
472 }
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 -->
7e7fe5e28ba4 add presen directory
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 </style>