comparison presen/sample.html @ 178:074eb76a9184

add Akka/Hazelcast slide
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 06 Feb 2018 12:19:12 +0900
parents 055266d62d84
children a3ee75a897f3
comparison
equal deleted inserted replaced
177:b5ab0f9c07aa 178:074eb76a9184
85 85
86 <div class='slide '> 86 <div class='slide '>
87 <!-- === begin markdown block === 87 <!-- === begin markdown block ===
88 88
89 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0] 89 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]
90 on 2018-02-06 03:55:15 +0900 with Markdown engine kramdown (1.5.0) 90 on 2018-02-06 12:15:41 +0900 with Markdown engine kramdown (1.5.0)
91 using options {} 91 using options {}
92 --> 92 -->
93 93
94 <!-- _S9SLIDE_ --> 94 <!-- _S9SLIDE_ -->
95 <h1 id="section">研究背景</h1> 95 <h1 id="section">研究目的(1/2)</h1>
96 <ul> 96 <ul>
97 <li>スマートフォンの普及によりインターネット利用者が増加している。</li> 97 <li>スケーラブルで信頼性の高い分散プログラムを書くのは容易ではない
98 <li>それに伴い、ネットワークサービスには信頼性とスケーラビリティが求められる 98 <ul>
99 それに対する処理能力が求められ、多くの場合はスケールアウトすることで対応する。</li> 99 <li>並列で動く分散した資源を意識するのは難しい</li>
100 <li>スケールアウトとは複数のサーバを接続して処理を行うことで全体の処理能力を上げる手法であり、複数のサーバをまたいだ処理には分散プログラムが必要になる。</li> 100 <li>分散したノードの選択方法が明確ではない􏱾􏱿􏰮􏳠􏲒􏰌􏰍􏰞􏰫􏷑􏷒􏱃􏱱􏲭􏰞􏰡􏰨􏰢􏱯􏱰􏰻􏰼􏰔􏰠􏳍􏳎􏰮􏰠􏰡􏲒􏰭􏲣 􏰫􏰭􏰘􏰔􏱑􏰥􏰹􏰌􏰍􏰞􏰫</li>
101 <li>しかし、並列で動く分散した資源を意識しながら記述するのは容易ではなく、どのように分散したノードの選択を行えば良いのか明確ではないため、プログラマが信頼性の高い分散プログラムを</li> 101 </ul>
102 </ul> 102 </li>
103
104
105 </div>
106 <div class='slide '>
107 <!-- _S9SLIDE_ -->
108 <h1 id="section-1">研究目的</h1>
109 <ul>
110 <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。</li> 103 <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。</li>
111 <li>ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。  </li> 104 <li>ここで言う信頼性とは定められた環境下で安定して仕様に従った動作を行うことを指す。
112 <li>スケーラビリティと信頼性の向上のため、Aliceでは当研究室が提案しているデータを Data Segment、タスクを Code Segment という単位で分割して記述するプログラミング手法を採用している。</li> 105 <ul>
113 </ul> 106 <li>仕様の記述のしやすさ、可読性、拡張時に仕様変更を抑えられるかも含む</li>
114 107 </ul>
115 <p>NAT越えが必要</p> 108 </li>
116 109 <li>スケーラビリティとはサービス利用者が増加したとき単純にノードを追加するだけで線形に性能を向上させる能力</li>
117 <p>NAT越えなどの手法を提案し、その実現にはAliceの再設計が必要であることを示す 110 </ul>
118 Aliceの問題点を踏まえChristieの設計要件を述べる</p> 111
119 112
120 <p>本研究では、Aliceから得られた知見をもとに、分散フレームワークChristieの設計を行う。 113 </div>
121 Christieでは、シンプルな記述でスケーラブルな分散プログラムの作成を可能にし、当研究室で開発している言語CbCと互換可能な設計を目指す。</p> 114 <div class='slide '>
115 <!-- _S9SLIDE_ -->
116 <h1 id="section-1">研究目的(2/2)</h1>
117 <ul>
118 <li>本研究では、Aliceの通信の信頼性を高めるためにNAT越えの機能設計を提案する</li>
119 <li>そしてその実現にはAliceの再設計が必要であることを示す</li>
120 <li>Aliceの問題点を整理し、得られた知見をもとに分散フレームワークChristieの設計を行う</li>
121 </ul>
122 122
123 123
124 </div> 124 </div>
125 <div class='slide '> 125 <div class='slide '>
126 <!-- _S9SLIDE_ --> 126 <!-- _S9SLIDE_ -->
786 786
787 787
788 </div> 788 </div>
789 <div class='slide '> 789 <div class='slide '>
790 <!-- _S9SLIDE_ --> 790 <!-- _S9SLIDE_ -->
791 <h1 id="christie----8">Christie - 設計の効果</h1> 791 <h1 id="christie----8">Christie - まとめ</h1>
792 <ul> 792 <ul>
793 <li>CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になった 793 <li>CodeGearManagerというDGMの管理機構を作ったことでLocalDGM複数立ち上げが可能になった
794 <ul> 794 <ul>
795 <li>テストや機能拡張がしやすくなった</li> 795 <li>テストや機能拡張がしやすくなった</li>
796 </ul> 796 </ul>
825 </ul> 825 </ul>
826 </li> 826 </li>
827 <li>アクターはメールボックスというキューを持つ 827 <li>アクターはメールボックスというキューを持つ
828 <ul> 828 <ul>
829 <li>受け取ったメッセージをパターンマッチで順次処理</li> 829 <li>受け取ったメッセージをパターンマッチで順次処理</li>
830 <li>パターンマッチにはScalaのcase classを用いられる。</li> 830 <li>パターンマッチにはScalaのcase classを用いられる
831 <img src="./pictures/Akka.svg" alt="opt" width="50%" /></li>
831 </ul> 832 </ul>
832 </li> 833 </li>
833 </ul> 834 </ul>
834 835
835 836
842 <ul> 843 <ul>
843 <li>複数のノードに分散させたデータを、仮想的な1つのメモリ空間に見せるモデル</li> 844 <li>複数のノードに分散させたデータを、仮想的な1つのメモリ空間に見せるモデル</li>
844 <li>プログラマがサーバを意識せずに共有のタプルスペースに対してデータをget/put</li> 845 <li>プログラマがサーバを意識せずに共有のタプルスペースに対してデータをget/put</li>
845 </ul> 846 </ul>
846 </li> 847 </li>
847 <li>共有のタプルスペースに書き込むとマルチキャストで全サーバにデータが贈られる</li> 848 <li>共有のタプルスペースに書き込むとマルチキャストで全サーバにデータが送られる
849 <img src="./pictures/Hazelcast.svg" alt="opt" width="50%" /></li>
848 </ul> 850 </ul>
849 851
850 852
851 </div> 853 </div>
852 <div class='slide '> 854 <div class='slide '>
853 <!-- _S9SLIDE_ --> 855 <!-- _S9SLIDE_ -->
854 <h1 id="christie----9">Christieと他フレームワークの比較 - 設計思想</h1> 856 <h1 id="christie----9">Christieと他フレームワークの比較 - 設計思想</h1>
855 <ul> 857 <ul>
856 <li>AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している</li> 858 <li>AkkaやHazelcastはロケーション透過性が高く、分散プログラムの煩雑な処理を抽象度を高めることで隠している</li>
857 <li>分散性を明示的に意識しながら細かな処理を記述できる</li> 859 <li>Christieでは分散性を明示的に意識しながら記述できるためチューニングしやすい</li>
858 <li>通常計算とメタ計算に分けているため複雑さをセパレートしている</li> 860 <li>通常計算とメタ計算に分けているため複雑さを下げている</li>
859 </ul> 861 </ul>
860 862
861 863
862 </div> 864 </div>
863 <div class='slide '> 865 <div class='slide '>
864 <!-- _S9SLIDE_ --> 866 <!-- _S9SLIDE_ -->
865 <h1 id="christie----10">Christieと他フレームワークの比較 - 記述性</h1> 867 <h1 id="christie----10">Christieと他フレームワークの比較 - 記述性</h1>
866 <ul> 868 <ul>
867 <li>AkkaはFIFO的にメッセージを処理する複数インプットのときの待ち合わせ処理をプログラマが書かなければならない</li> 869 <li>アノテーションを使ったインプットの指定はAkkaやHazelcastにはない</li>
868 <li>アノテーションを使ったインプットの指定はAkkaやHazelcastにはなく、複数インプットが書きやすいため</li> 870 <li>複数のインプットを待ち合わせして処理を行いたい場合
869 </ul> 871 <ul>
870 872 <li>Akkaは待ち合わせ処理をプログラマが書かなければならない</li>
871 873 <li>Christieでは複数のインプットを記述でき待ち合わせ処理が必要ない</li>
872 </div> 874 </ul>
873 <div class='slide '> 875 </li>
874 <!-- _S9SLIDE_ --> 876 <li>データの圧縮通信を指定したい場合
875 <h1 id="christie----">Christieと他フレームワークの比較 - 提供する機能</h1> 877 <ul>
876 <ul> 878 <li>Akka、Hazelcastでは圧縮メソッドが用意されているため、それを用いて記述する</li>
877 <li>NAT</li> 879 <li>ChristieではDGMkeyの名前を変えるだけなのでメソッド呼び出しの記述が必要ない</li>
878 <li>圧縮</li> 880 </ul>
881 </li>
879 </ul> 882 </ul>
880 883
881 884
882 </div> 885 </div>
883 <div class='slide '> 886 <div class='slide '>