Mercurial > hg > Papers > 2018 > nozomi-master
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 '> |