Mercurial > hg > Papers > 2019 > ikki-sigos
comparison slide/prosym.md @ 23:8a3b1147329e
Revise 5/29 20:25
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 29 May 2019 20:25:54 +0900 |
parents | e7239fe266f0 |
children | a263efdfdab5 |
comparison
equal
deleted
inserted
replaced
22:e7239fe266f0 | 23:8a3b1147329e |
---|---|
43 super(cgm); | 43 super(cgm); |
44 } | 44 } |
45 | 45 |
46 public static void main(String[] args){ | 46 public static void main(String[] args){ |
47 CodeGearManager cgm = createCGM(10000); #ポート番号を指定してCGMを立ち上げ。 | 47 CodeGearManager cgm = createCGM(10000); #ポート番号を指定してCGMを立ち上げ。 |
48 cgm.setup(new HelloWorldCodeGear()); #立ち上げたCGMへDGを待ちあわせる。 | 48 cgm.setup(new HelloWorldCodeGear()); #立ち上げたCGMへCGを待ちあわせる。 |
49 cgm.getLocalDGM().put("helloWorld","hello"); #key "helloWorld"にhelloをput | 49 cgm.getLocalDGM().put("helloWorld","hello"); #key "helloWorld"にhelloをput |
50 cgm.getLocalDGM().put("helloWorld","world"); | 50 cgm.getLocalDGM().put("helloWorld","world"); |
51 } | 51 } |
52 } | 52 } |
53 | 53 |
71 - DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.Localであれば、LocalのCGMが管理するDGMに対しDGを格納し, Remoteの場合は接続したRemoteさきのCGMのDGMにDGを格納する. | 71 - DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.Localであれば、LocalのCGMが管理するDGMに対しDGを格納し, Remoteの場合は接続したRemoteさきのCGMのDGMにDGを格納する. |
72 | 72 |
73 --> | 73 --> |
74 | 74 |
75 ## DGM | 75 ## DGM |
76 - DGMは分散システムの肝となる他のノード間とのデータのやり取りの際に重要となる。 | |
76 - DGMにはLocalDGMとRemoteDGMが存在する。 | 77 - DGMにはLocalDGMとRemoteDGMが存在する。 |
77 - LocalDGM | 78 - LocalDGM |
78 - LocalなDGMのプールのkeyにデータの書き込みを行う。 | 79 - LocalなDGMのプールのkeyにデータの書き込みを行う。 |
79 - RemoteDSM | 80 - RemoteDSM |
80 - Localに存在する、他のノードのLocalDGMに対応するプールのkeyにデータを書き込みする。接続しているノードの数だけ存在する。 | 81 - Localに存在する、他のノードのLocalDGMに対応するプールのkeyにデータを書き込みする。接続しているノードの数だけ存在する。 |
86 | 87 |
87 <!-- | 88 <!-- |
88 - RocalDGMを立ち上げるにはDataSegmentクラスが提供する、connectメソッドを用い、接続したいポートのipアドレスとport番号、そして任意のManager名を指定することで立ち上げる。 | 89 - RocalDGMを立ち上げるにはDataSegmentクラスが提供する、connectメソッドを用い、接続したいポートのipアドレスとport番号、そして任意のManager名を指定することで立ち上げる。 |
89 --> | 90 --> |
90 | 91 |
92 ## Annottation | |
93 - ChristieではInputDGの指定にはアノテーションを使う。 | |
94 - アノテーションとはクラスやメソッド、パッケージに対して、付加情報を記述できるJavaのMeta Computationである。 | |
95 - 先頭に@をつけることで記述する。オリジナルのアノテーションを定義することもでき、Input | |
96 される型の変数を直接宣言し、変数名としてkeyを記述する。その上にアノテーションでTakeもしくはPeekを指定する。 | |
97 | |
98 ```cc | |
99 package christie.example.HelloWorld; | |
100 | |
101 import christie.annotation.Take; | |
102 import christie.codegear.CodeGear; | |
103 import christie.codegear.CodeGearManager; | |
104 | |
105 public class HelloWorldCodeGear extends CodeGear { | |
106 @Take | |
107 String helloWorld; | |
108 | |
109 @Override | |
110 protected void run(CodeGearManager cgm) { | |
111 System.out.print(helloWorld + " "); | |
112 cgm.setup(new HelloWorldCodeGear()); | |
113 } | |
114 } | |
115 | |
116 ``` | |
91 | 117 |
92 ## DGのアノテーション | 118 ## DGのアノテーション |
93 - DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。DGアノテーションには | 119 - DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。DGアノテーションには |
94 Take、Peek、TakeFrom、PeekFrom、の4つがある。 | 120 Take、Peek、TakeFrom、PeekFrom、の4つがある。 |
95 - Take | 121 - Take |
100 - Remote DGM nameを指定することで、その接続先のDGM からTake操作をおこえる。 | 126 - Remote DGM nameを指定することで、その接続先のDGM からTake操作をおこえる。 |
101 - PeekFrom | 127 - PeekFrom |
102 - Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。 | 128 - Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。 |
103 | 129 |
104 | 130 |
105 ## Annottation | |
106 - ChristieではInputDGの指定にはアノテーションを使う。 | |
107 - アノテーションとはクラスやメソッド、パッケージに対して、付加情報を記述できるJavaのMeta Computationである。 | |
108 - 先頭に@をつけることで記述し、オリジナルのアノテーションを定義することもできるInput | |
109 となる型の変するを直接宣言し、変数名としてkeyを記述する。その上にアノテーションでTakeもしくはPeekを指定する。 | |
110 | |
111 ```cc | |
112 package christie.example.HelloWorld; | |
113 | |
114 import christie.annotation.Take; | |
115 import christie.codegear.CodeGear; | |
116 import christie.codegear.CodeGearManager; | |
117 | |
118 public class HelloWorldCodeGear extends CodeGear { | |
119 @Take | |
120 String helloWorld; | |
121 | |
122 @Override | |
123 protected void run(CodeGearManager cgm) { | |
124 System.out.print(helloWorld + " "); | |
125 cgm.setup(new HelloWorldCodeGear()); | |
126 } | |
127 } | |
128 | |
129 ``` | |
130 | |
131 ## TopologyManager | 131 ## TopologyManager |
132 - TopologyManagerとはTopologyを形成のために、参加を表明したノード、TopologyNodeに名前を与え、必要があればノード同士の配線を行うノードである。 | 132 - TopologyManagerとはTopologyを形成のために、参加を表明したノード、TopologyNodeに名前を与え、必要があればノード同士の配線を行うノードである。 |
133 - TopologyManagerのTopology形成方法として、静的Topologyと動的Topologyがある。 | 133 - TopologyManagerのTopology形成方法として、静的Topologyと動的Topologyがある。 |
134 - 動的Topologyは参加を表明したノードに対し、動的にノード同士の関係を作る。例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与え、またCodeGearはノードが参加し、parentに接続された後に実行される。 | 134 - 動的Topologyは参加を表明したノードに対し、動的にノード同士の関係を作る。例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与え、またCodeGearはノードが参加し、parentに接続された後に実行される。 |
135 - 静的Toopologyはdotファイルを与えることノード関係の構築を行う。 | 135 - 静的Toopologyはdotファイルを与えることノード関係の構築を行う。 |
144 | 144 |
145 <div style="text-align: center;"> | 145 <div style="text-align: center;"> |
146 <img src="../paper/images/ring.svg" alt="MetaGear" width="250"> | 146 <img src="../paper/images/ring.svg" alt="MetaGear" width="250"> |
147 </div> | 147 </div> |
148 | 148 |
149 ##ブロックチェーン | 149 ## ブロックチェーン |
150 - ネットワーク構築方式の一つである。データ情報をまとめたものをブロックと呼び、ブロックが連鎖的につながるっている形となる。 | |
151 - ノード一つにつき一つのブロックを持ち合わせるが、その間でデータの差異が生じた際に他のノードの総意によって選択し、差異の解消を行う。 | |
152 - ブロックチェーンはP2P(Peer to Peer)の形にてネットワーク間が動作している。つまり、ブロックチェーンにはサーバー、クライアントの区別がなく全てのノードが対等な関係にある。 | |
150 | 153 |
151 ## ブロックチェーンのトランザクション | 154 ## ブロックチェーンのトランザクション |
152 - ブロックチェーンはP2Pにてネットワーク間が動作している。つまり、ブロックチェーンにはサーバー、クライアントの区別がなく全てのノードが対等な関係にある。 | |
153 - ブロックチェーンにおけるブロックは複数のトランザクションをまとめたものである。ブロックは基本的に以下の要素によって構成される。 | 155 - ブロックチェーンにおけるブロックは複数のトランザクションをまとめたものである。ブロックは基本的に以下の要素によって構成される。 |
154 - BlockHeader | 156 - BlockHeader |
155 - previous block | 157 - previous block |
156 - 前のブロックのパラメータをハッシュ化したもの | 158 - 前のブロックのパラメータをハッシュ化したもの |
157 - hashmerkle root hash | 159 - hashmerkle root hash |