Distributed Systems 第1章 Introduction

1,049 views

Published on

第1回分散システム本読書会スライド

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,049
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Distributed Systems 第1章 Introduction

  1. 1.  @aomoriringo 雑用プログラマ@forschooner Pythonとか
  2. 2.  分散システムの定義 分散システムの目標 ◦ 拡張性の問題点 ◦ 拡張手法 分散システムの種類
  3. 3.  A distributed system is a collection of independent computers that appears to its users as a single coherent system. ユーザに対して一貫性のあるシステムを提供する 独立したコンピュータの集合 ◦ 各ノードが自律している(autonomous) ◦ ユーザは単一システムとして扱うと考える
  4. 4.  分散システムを構築する際、対処すべき問題 ◦ リソースを利用できる ◦ 透明性 ◦ 開放性 ◦ 拡張性
  5. 5.  リソースの例 ◦ コンピュータ, プリンタ, データ, フゔ゗ル, ウェブページ etc... ユーザが簡単にリソースを使用/共有できる ただし、接続性がよくなると・・・ ◦ 盗聴/侵入される ◦ パスワード、クレジットカード番号などの保存方法 ◦ スパムもたくさん来る →セキュリテゖへの対応が重要
  6. 6.  透過的(transparent) ◦ 分散システムであることをユーザが意識しなくてもよい 透明性の種類 Access データ表現、リソースへのアクセス方法を隠蔽する Location リソースの位置を隠蔽する Migration リソースが他の場所に移動することを隠蔽する Relocation リソースが使用中に他の場所に移されることを隠蔽する Replication リソースが複製されることを隠蔽する Concurrency リソースが複数のユーザで共有されることを隠蔽する Failure リソースの故障、復旧を隠蔽する
  7. 7.  完全に透明にしない方がよい/できない場合もある ◦ 時差による問題 ◦ 物理的な距離による問題 ◦ パフォーマンスの問題 例:フゔ゗ルの複製を(物理的に離れた)複数の場所で 管理している場合 ◦ フゔ゗ルを完全にゕップデートするのに数秒かかる
  8. 8.  標準的なルールに従って提供されている ◦ プロトコル ◦ APIを形式的に記述する 仕様が明確ならば、相互運用性と携帯性が高まる ◦ 相互運用性 (Interoperability)  システム同士が連携できる能力 ◦ 携帯性/移植性 (Portability)  環境を移行する際の容易さ
  9. 9.  システムの拡張性を図る3つの指標 ◦ システムにユーザやリソースを簡単に追加できるか? ◦ ユーザとリソースがはるかに離れていても 地理的に拡張性があるか? ◦ 管理が簡単にできるか?
  10. 10. Concept Example集中型サービス A single server for all usersCentralized services集中型データ A single on-line telephone bookCentralized data集中型アルゴリズム Doing routing based on completeCentralized algorithm information
  11. 11.  集中型サービス ◦ サービス中の特定の処理を1台のマシンのみで行う、など ◦ 処理の集中を避けられないこともある (医療情報、口座情報など、機密性の高い情報を扱う場合) 集中型データ ◦ DBがあるマシンにゕクセスが集中する 集中型ゕルゴリズム ◦ 分散システムであることを前提としたゕルゴリズムを 使用しなければいけない ◦ 例:ルーテゖングの最適化  全ての機器から情報を集める  1つのマシンで計算する  すべての機器に結果を送信する
  12. 12.  システムの状態の完全な情報を持った機器はない。 機器はローカルな情報のみに基づいて判定をする。 機器1台が故障してもゕルゴリズムに影響しない。 グローバルな時計が存在するという仮定を置かない。 ◦ 正確に時刻を同期することができない
  13. 13.  同期を前提とした設計ができない ◦ 1回の通信にLANの1000倍ぐらいかかる LANより接続の信頼性が低い 異なる管理領域にまたがる分散システムの拡張 ◦ 別ドメ゗ンからの攻撃の遮断
  14. 14.  通信待ち時間の隠蔽 分散 反復
  15. 15.  できるだけリクエストへの反応を待たない →非同期通信 入力フォームの例
  16. 16.  要素を小さなパーツに分け、システム全体に広げる 例: Domain Name System (DNS) ◦ 地域ごとに名前空間が分けられている
  17. 17.  システム全体に構成要素を複製する ◦ 可用性を高める ◦ 負荷を分散する ◦ 複製フゔ゗ルが多いと一貫性の問題が発生 (更新がすぐに反映されないと困る) 複製と一貫性のどちらをとるかは、リソースの使用法に 依存 ◦ ウェブブラウザ →複製により可用性を重視 ◦ 電子証券取引所、オークション →強い一貫性が求められる
  18. 18.  分散システムを開発するときにしてはいけない仮定 ◦ ネットワークが信頼出来る ◦ ネットワークが安全である ◦ ネットワークが均一である ◦ トポロジー(接続形態)が変化しない ◦ 待ち時間が0である ◦ 帯域幅が無限である ◦ 転送コストが0である ◦ 管理者は1人である
  19. 19.  分散コンピューテゖングシステム ◦ クラスタコンピューテゖングシステム ◦ グリッドコンピューテゖングシステム 分散情報システム ◦ トランザクション処理システム ◦ Enterprise Application Integration 分散浸透システム ◦ Home Systems ◦ Electronic Health Care Systems ◦ Sensor Networks
  20. 20.  高性能計算用 クラスタコンピューテゖングシステム ◦ 同じようなPC + 高速LAN ◦ 各ノードが同じOS グリッドコンピューテゖングシステム ◦ 各ノードのハードウェゕ、ソフトウェゕ、 ネットワークが大きく異なる
  21. 21.  スーパーコンピュータ 例: Beowulf clusters
  22. 22.  ハードウェゕ、OS、ネットワーク、管理ドメ゗ン、セ キュリテゖポリシーなどを仮定しない
  23. 23.  ネットワーク上の複数のホストが関連する1まとまりの 操作(トランザクション)を処理する トランザクションの基本操作
  24. 24.  トランザクション特有の性質 (ACID特性) Atomic (原子性, 不可分性) ◦ トランザクションは分けられない トランザクションは「全て実行される」or「1つも実行されない」 Consistent (一貫性) ◦ トランザクションの前後ではデータの整合性が保たれる Isolated (独立性) ◦ 並列のトランザクションはお互いに干渉しない Durable (耐久性, 持続性) ◦ トランザクションがコミットされると、その結果は永続する
  25. 25.  企業内の既存のゕプリケーション群を連携/統合する
  26. 26.  携帯電話、情報家電、カーナビなど、あらゆる機器が ネットワークにゕクセスし、情報が普通の人々の生活の あらゆる面に深く「浸透」していくような環境 浸透システムの要件 ◦ 文脈の変化を受け入れる ◦ ゕドホックな構成を促す ◦ 基本的に共有を許可する
  27. 27.  分散システムは複数の自律システムから成り、 一貫したシステムを提供する 異なるコンピュータで動く異なるゕプリケーションを 1つのシステムにまとめることができる 分散透過性を達成する方法は分散システムのデザ゗ン 固有なので、分散システムは難しい 計算、情報処理、浸透性を指向する分散システムが 存在する

×