Mercurial > hg > Papers > 2014 > nobuyasu-master
diff slides/slides.html @ 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 |
line wrap: on
line diff
--- 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>