# HG changeset patch # User akahori # Date 1550598204 -32400 # Node ID 2e706e8bb6bdfddb52a35a4a1eaa2ea046f24023 # Parent 38f2c997bb93b311337e116e94ab15f0c38b8b52 fix pre DG, CG...etc diff -r 38f2c997bb93 -r 2e706e8bb6bd final_pre/pre.pdf Binary file final_pre/pre.pdf has changed diff -r 38f2c997bb93 -r 2e706e8bb6bd final_pre/pre.tex --- a/final_pre/pre.tex Tue Feb 19 22:54:56 2019 +0900 +++ b/final_pre/pre.tex Wed Feb 20 02:43:24 2019 +0900 @@ -133,7 +133,7 @@ 2つの方法はメッセージ通信量と耐障害性のトレードオフになっていることがわかる. -Paxosでコンセンサスを取ることは, Proof of Workと比較して次のようなメリットがある. +Paxosでコンセンサスを取ることは, パブリックブロックチェーンで使われているProof of Workによるコンセンサスと比較して次のようなメリットがある. \begin{itemize} \item CPUのリソースを消費しない @@ -145,17 +145,17 @@ Christieは当研究室で開発している分散フレームワークである. ChristieはJavaで書かれているが, 当研究室で開発しているGearsOSに組み込まれる予定がある. そのため, GearsOSを構成する言語Continuation based Cと似た概念がある. Christieに存在する概念として次のようなものがある. \begin{itemize} -\item CodeGear(以下CG) -\item DataGear(以下DG) -\item CodeGearManager(以下CGM) -\item DataGearManager(以下DGM) +\item CodeGear +\item DataGear +\item CodeGearManager +\item DataGearManager \end{itemize} -CGはクラス, スレッドに相当し, DGは変数データに相当する. CGMはノードであり, DGM, CG, DGを管理する. DGMはDGを管理するものであり, putという操作により変数データ, つまりDGを格納できる. +CodeGearはクラス, スレッドに相当し, DataGearは変数データに相当する. CodeGearManagerはノードであり, DateGearManager, CodeGear, DataGearを管理する. DateGearManagerはDataGearを管理するものであり, putという操作により変数データ, つまりDataGearを格納できる. -DGMにはLocalとRemoteと2つの種類があり, Localであれば, LocalのCGMが管理しているDGMに対し, DGを格納していく. Remoteであれば接続したRemote先のCGMのDGMにDGを格納できる. DGを取り出す際にはアノテーションを付けることで, データの取り出し方も指定できる. Take, Peekという操作があり, Takeは読み込んだDGが消えるが, PeekはDGを消さずにそのまま残す. また, RemoteTake, RemotePeekというものもあり, リモート先を指定することにより, RemoteDGMからデータを取ることができる. +DateGearManagerにはLocalとRemoteと2つの種類があり, Localであれば, LocalのCodeGearManagerが管理しているDateGearManagerに対し, DateGearを格納していく. Remoteであれば接続したRemote先のCodeGearManagerのDateGearManagerにDateGearを格納できる. DateGearを取り出す際にはアノテーションを付けることで, データの取り出し方も指定できる. Take, Peekという操作があり, Takeは読み込んだDateGearが消えるが, PeekはDateGearを消さずにそのまま残す. また, RemoteTake, RemotePeekというものもあり, リモート先を指定することにより, RemoteDateGearManagerからデータを取ることができる. -CGはCGMによって実行されるが, 実行するにはCGに必要なDGが全て揃う必要がある. もしDGが全て揃わない場合, CGMはずっとlistenし, データが揃うまで実行を待つ. +CGはCodeGearManagerによって実行されるが, 実行するにはCodeGearに必要なDateGearが全て揃う必要がある. もしDateGearが全て揃わない場合, CodeGearManagerはずっとlistenし, データが揃うまで実行を待つ. \section{Christieでのブロックチェーンの実装} Christieでブロックチェーンのブロック, トランザクション, Paxosを実装した. @@ -171,9 +171,9 @@ 不便な点を以下に述べる. \begin{itemize} -\item デバッグが難しい. DGでのkeyのスペルミスなどが起こると, CodeGearが実行されず, waitされる問題が出る. -\item TakeFrom, PeekFromの使い方が難しい. TakeFrom, PeekFromは引数でDGM nameを指定する. しかし, DGMの名前を静的に与えるよりも, 動的に与えたい場合が多かった. -\item Takeの待ち合わせでCGが実行されない. 2つのCGで同じ変数をTakeしようとすると, setupされた時点で変数がロックされる. このとき, 片方のCGはDGがすべて揃っているのに, すべての変数が揃っていないもう片方のCGに同名の変数がロックされ, 実行されない場合がある. +\item デバッグが難しい. DataGearでのkeyのスペルミスなどが起こると, CodeGearが実行されず, waitする. この場合, 標準出力には何も出ないため, どこで止まっているか, ただ変数を待っているだけなのかという判断が難しい. +\item TakeFrom, PeekFromの使い方が難しい. TakeFrom, PeekFromは引数でDGM nameを指定する. しかし, DateGearManagerの名前を静的に与えるよりも, 動的に与えたい場合が多かった. +\item Takeの待ち合わせでCodeGearが実行されない. 2つのCodeGearで同じ変数をTakeしようとすると, setupされた時点で変数がロックされる. このとき, 片方のCodeGearはDataGearがすべて揃っているのに, すべての変数が揃っていないもう片方のCodeGearに同名の変数がロックされ, 実行されない場合がある. \end{itemize}