name: overview class: title, smokescreen, shelf, no-footer # 第10回 分散システム <div class=footnote> <small><small> </small></small> </div> --- class: compact,img-right # 分散システム(1): 部品(一台のPC) <div class=footnote> <small><small> (脚注1) 似た用語に「分散オペレーティングシステム」がありますが、それとは違います <br> (脚注2) 現代のGoogle的な<B>分散システム</B>の説明をしています </small></small> </div> ![height480px](../../images/concept-distributed-system.png) - OSは普通にUnixクローン(Linux) - <B>真ん中のGoogle特製ミドルウエアが重要</B> --- class: compact,img-right # 分散システム(2): PC群(クラスタ) ![height480px](../../images/concept-distributed-system-multi.png) - ユーザからは一つのシステムにみえる <small> - 例: www.google.com - 注: ユーザ側(システムの最前面)にはロードバランサーなどネットワーク的なテクニックも使うが、図では省略されている </small> - アプリやOSは普通のものを使いまわす - ミドルウエアの部分が色々すごい --- class: compact,img-right # 分散システムの難しさ <div class=footnote> <small><small> </small></small> </div> ![](../../images/www-minimum.png) - 第5回のとおり「(競合状態で)書きこむ」ことが、とても難しい --- class: compact,img-right # 一般論: 書きこむ場合(<small>データベースやストレージのクラスタ</small>) <div class=footnote> <small><small> (脚注) Google以前からある一般的/古典的なテクニックです </small></small> </div> ![](../../images/concept-multi-write.png) <small> - 協調して動くサーバ群(クラスタ)を構築 - 冗長化が主目的と言えます - 能力の向上はサーバの性能しだい - 書きこみは一ヶ所だけなので、そこが上限 <small> - 1号機に書きこんで2-3号機にコピー </small> - 読むだけなら難しくないし高速 <small> - 理由: 同じデータのサーバは、どこから読みだしても同じなので、 3台あれば、3並列で読み出せるから (つまり多数の処理をならせば平均3倍速) </small> </small> --- class: compact,img-right # 番外編: ELB (<small>Elastic Load Balancer</small>) <div class=footnote> <small><small> (脚注) AWSは秘密主義なので、分らない部分は推測です </small></small> </div> ![](../../exercise/images/sysbuild-plan-final.png) <small> (右図では、まるっとELBですが...) - 書きこむ必要が無いので比較的簡単 - 実体は専用ソフトウエアが動くEC2サーバ群 - 「作成」をクリックすると裏でサーバ構築 - トラフィックしだいでサーバ数が自動増減 - NW障害に備え<B>EC2を異なるAZに配置</B> - インターネット側のネットワークインターフェイス群は同じPublic IPを持つ。 謎の仕組みで代わりばんこにクライアントの相手をする </small>