Mercurial > hg > Papers > 2014 > nobuyasu-master
changeset 89:396b121f989c
fixed slides
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 03 Feb 2014 14:19:00 +0900 |
parents | f257e8ebd79c |
children | 8f5c9719d6ee |
files | slides/graffle/distributed_jungle.graffle slides/images/distributed_jungle.png slides/slides.html |
diffstat | 3 files changed, 152 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/slides/graffle/distributed_jungle.graffle Mon Feb 03 13:40:36 2014 +0900 +++ b/slides/graffle/distributed_jungle.graffle Mon Feb 03 14:19:00 2014 +0900 @@ -486,8 +486,8 @@ <integer>3042</integer> <key>Points</key> <array> - <string>{127.09999999999999, 219}</string> - <string>{182.04838104423936, 245.10669687622232}</string> + <string>{127.09999999999997, 219}</string> + <string>{182.04838104423936, 245.10669687622234}</string> </array> <key>Style</key> <dict> @@ -610,12 +610,12 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 commit log}</string> +\f0\fs24 \cf0 operation}</string> </dict> </dict> <dict> <key>Bounds</key> - <string>{{210.4792478622102, 309.46509330538788}, {79.5, 21}}</string> + <string>{{210.47943009689689, 309.46509167217647}, {79.5, 21}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>ID</key> @@ -647,7 +647,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 commit log}</string> +\f0\fs24 \cf0 operation}</string> </dict> </dict> <dict> @@ -675,7 +675,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 commit log}</string> +\f0\fs24 \cf0 operation}</string> </dict> </dict> <dict> @@ -703,7 +703,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 commit log}</string> +\f0\fs24 \cf0 operation}</string> </dict> </dict> <dict> @@ -866,8 +866,8 @@ <integer>11</integer> <key>Points</key> <array> - <string>{228.12232377068844, 282.43082688753901}</string> - <string>{272.3772926444218, 357.56917653507588}</string> + <string>{228.12238999129161, 282.43082627275749}</string> + <string>{272.3775911089877, 357.56917388154017}</string> </array> <key>Style</key> <dict> @@ -901,8 +901,8 @@ <integer>10</integer> <key>Points</key> <array> - <string>{199.26989998631828, 282.39837385693244}</string> - <string>{142.23022340979924, 357.60162725857236}</string> + <string>{199.26987871078217, 282.39837366008095}</string> + <string>{142.23012736023978, 357.6016263731625}</string> </array> <key>Style</key> <dict> @@ -933,6 +933,14 @@ <integer>9</integer> <key>Shape</key> <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> <key>Text</key> <dict> <key>Text</key> @@ -954,6 +962,14 @@ <integer>8</integer> <key>Shape</key> <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> <key>Text</key> <dict> <key>Text</key> @@ -978,8 +994,8 @@ <integer>7</integer> <key>Points</key> <array> - <string>{293.56685580867173, 164.41792239522417}</string> - <string>{342.93314418168188, 239.58207760477583}</string> + <string>{293.56685581033651, 164.41792239522417}</string> + <string>{342.93314418918908, 239.58207760477583}</string> </array> <key>Style</key> <dict> @@ -1045,6 +1061,14 @@ <integer>5</integer> <key>Shape</key> <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> <key>Text</key> <dict> <key>Text</key> @@ -1066,6 +1090,14 @@ <integer>4</integer> <key>Shape</key> <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> <key>Text</key> <dict> <key>Text</key> @@ -1087,6 +1119,14 @@ <integer>3</integer> <key>Shape</key> <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> <key>Text</key> <dict> <key>Text</key> @@ -1147,7 +1187,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2014-02-03 00:36:34 +0000</string> + <string>2014-02-03 05:13:01 +0000</string> <key>Modifier</key> <string>Oshiro Nobuyasu</string> <key>NotesVisible</key>
--- a/slides/slides.html Mon Feb 03 13:40:36 2014 +0900 +++ b/slides/slides.html Mon Feb 03 14:19:00 2014 +0900 @@ -105,6 +105,7 @@ <p>ウェブサービスにとってデータベースは必須であり、ウェブサービスの規模に比例してデータベースへの負荷も高まる。</p> <p>データベースの処理能力の高さはそのままウェブサービスの質に繋がるため、データベースのスケーラビリティの確保は重要である。</p> <p>スケーラビリティ確保の方法としてデータ分散があるが、分散する方法により性能も変わってくる。</p> + <p>コンテンツマネジメントシステムに合ったスケーラビリティの確保ができるデータベースの開発を行う。</> </div> <div class='slide'> @@ -158,7 +159,7 @@ <li>Webコンテンツを分散して管理</li> <li>スケールアウトするシステム</li> <p>データ全体の整合性に遅延がある、結果整合性でもよい。書き込みや読み込みを優先としたデータベースが必要。</p> - <p>そこで、非破壊的木構造データベースJungleの提案を行った。</p> + <p>そこで、非破壊的木構造データベースJungleの開発が行われた。</p> </div> <div class='slide'> @@ -200,7 +201,7 @@ <p>ここまでJungleに実装されている非破壊的木構造の利点について述べた。</p> <p>次に、Jungleにおける分散設計について述べる。</p> <p>データ分散を行うにあたり、まず考えることはトポロジーの形成と他のノードからデータの伝搬の仕方である。</p> - <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するcommit logを他のノードに流すことで解決する。</p> + <p>Jungleはこの問題に対し、ツリートポロジーを形成し、データ編集の際に発生するオペレーションを他のノードに流すことで解決する。</p> </div> <div class='slide'> @@ -215,86 +216,127 @@ </ul> <p>JungleにAliceを組み込み、Jungleのノード同士でトポロジーを形成する。</p> <p>Aliceの機能である他ノードへのデータアクセス機構を使用してデータ分散を行う。</p> - - </div> - - <div class='slide'> - <h1> - Jungleの分散設計: データ変更コマンドのAPI - </h1> - - - </div> - - <div class='slide'> - <h1> - - </h1> - - - </div> - - - - <div class='slide'> - <h1> - 掲示板システムにおけるMerge - </h1> - <p style="text-align:center;"> - <img src="./images/bulletinboard_merge.png"> - </p> - <p>2つの状態をもつ掲示板の書き込みができる。</p> - <p>掲示板はcommutativeなため、Mergeが自然に行える。</p> + </ul> </div> <div class='slide'> <h1> - Jungleの分散設計:トポロジー形成とログによるデータ分散 + 分散設計: データ編集オペレーション </h1> - <table> - <tr> - <th>commit log伝搬によるデータ分散</th> - </tr> - <tr> - <td> - <img src="./images/distributed_jungle.png"> - </td> - </tr> - </table> - <p>サーバノード同士でツリートポロジーを形成する。データ編集をどのように行ったのかを示すログ commit log を伝搬させデータの分散を行う。</p> + <p>Aliceにより、ネットワークトポロジーの作成と他サーバが持つデータアクセス機構を実装できた。</p> + <p>次はどのデータを取得することでデータの分散を行うか考えなければならない。</p> + <br> + <p>Jungleにはデータ編集に使われるオペレーションがある。</p> + <p>データ編集に使われるオペレーションをそのまま他サーバノードへ流すことでデータの分散が行える。</p> + <p>オペレーションには次の4つがある</p> + <ul> + <li>addNewChild:子ノードの追加を行う</li> + <li>deleteChildAt:指定したノードの削除を行う</li> + <li>putAttribute:子ノードにattributeに追加を行う</li> + <li>deleteAttribute:子ノードのattributeを削除する</li> + <br> </div> - - <div class='slide'> <h1> - - </h1> + データ編集オペレーション + </h1> + <p>子ノードを追加し、その子ノードにattributeを追加する場合次のノードオペレーションが実行される。</p> + <ol> + <li>[APPEND_CHILD:<-1>:pos:0]</li> + <li>[PUT_ATTRIBUTE:<-1,0>:key:mes,value:hello]</li> + </ol> + <p>このノードオペレーションの実行結果を図に示す。</p> + <p style="text-align:center;"> + <img src="./images/node_operation.png"> + </p> + <p><font color="">トポロジー上でノードオペレーションを渡すことで同じ編集を行いデータの分散を行う。</font></p> + <br/> + <br/> </div> <div class='slide'> <h1> + Jungle分散実装 + </h1> + <p>以上の設計を元にJungleに分散実装を行った。</p> + <p>以下の図はJungleにおけるデータ分散の様子を表している。</p> + <p style="text-align:center;"> + <img src="./images/distributed_jungle.png"> + </p> + <p>Aliceでトポロジーを形成後に、データ編集に使われたオペレーションを他サーバノードに送る。</p> + <p>オペレーションを受信したノードはデータ編集を行う。他にサーバが繋がっている場合はそちらにもオペレーションを送る。</p> + <br/> + <br/> + </div> - </h1> + <div class='slide'> + <h1> + Jungle分散実装 + </h1> + <p>これまでの実装でJungleのデータが分散が行われるようになった。</p> + <p>しかしもう1つ問題がある。複数のノードから書き込まれるデータの整合性を取る方法が必要である。</p> + <p>JungleではこれをMergeを使うことで自動的に解決する。</p> + <p>Mergeとは2つ以上の変更の結果を受けて1つの変更に変えることである。</p> + <p>今回は、性能比較に用いる掲示板システムにMergeの実装を行った。</p> + <p>掲示板システムにおけるMergeを説明する。</p> </div> + <div class='slide'> + <h1> + 掲示板システムにおけるMerge + </h1> + <p>2つの状態をもつ掲示板の書き込みができる。この2つの書き込みから新しい書き込みを作る。</p> + <p style="text-align:center;"> + <img style="width:70%;" src="./images/bulletinboard_merge.png"> + </p> + <p>掲示板はcommutativeなため、いつ書き込んでも良い。よってMergeが自動的に行える。</p> + <br/> + </div> + + + <div class='slide'> <h1> - + 分散データベースJungleの評価 </h1> + <p>分散データベースとしてJungleの性能を評価する。</p> + <p>分散Key-ValueデーターべースCassandraと比較を行う。</p> + <p>比較方法は、Jungle, Cassandra をそれぞれバックエンドとした簡易掲示板を作成する。</p> + <p>掲示板に対してHTTP Requestで並列に読み込みと書き込みの負荷をかけ計測する。</p> + <p>レスポンスが返る平均時間と標準偏差を求めグラフ化する</p> </div> <div class='slide'> - <h1> - - </h1> + <h1> + 実験内容 + </h1> + <p>実験は2つ行う</p> + <li>実験1:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li> + <p style="text-align:center;"> + <img style="width:60%;" src="./images/cluster_request_server.png"> + </p> + <p>サーバ単体の性能を比較する。</p> + <p>クライアントの増加に対してサーバ1台にかかるリクエストも増加</p> </div> + <div class='slide'> + <h1> + 実験内容 + </h1> + <li>実験2:サーバを単体で起動し、複数のクライアントからの負荷をかける。</li> + <p style="text-align:center;"> + <img style="width:60%;" src="./images/clients_request_servers.png"> + </p> + <p>分散環境下における性能を比較する。</p> + <p>クライアントとサーバがともに増加するため、サーバ一台に対するリクエストは変わらず。</p> + <p>サーバが全体で受けるリクエストは増加する。</p> + </div> <div class='slide'> <h1> @@ -303,11 +345,10 @@ <p style="text-align:center;"> <img style="width:70%;" src="./images/cluster_request_server.png"> </p> + <p>レスポンス速度(縦軸の数値)が低い程良い</p> + <p>クライアント(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p> </div> - - - <div class='slide'> <h1> 単体サーバへの負荷:読み込み負荷 @@ -351,7 +392,7 @@ <img style="width:70%;" src="./images/clients_request_servers.png"> </p> <p>レスポンス速度(縦軸の数値)が低い程良い</p> - <p>クライアトとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p> + <p>クライアントとノードの数(横軸の数値)の増加に対してレスポンス速度の増加がゆるやかなものほどよい</p> </div>