distributed systems 第1章 introduction

31
分分分分分分分分分分 1. Introduction

Upload: aomori-ringo

Post on 21-Jun-2015

601 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Distributed Systems 第1章 Introduction

分散システム本読書会1. Introduction

Page 2: Distributed Systems 第1章 Introduction

@aomoriringo

雑用プログラマ @forschooner

Python とか

about me

Page 3: Distributed Systems 第1章 Introduction

分散システムの定義

分散システムの目標◦ 拡張性の問題点◦ 拡張手法

分散システムの種類

Outline

Page 4: Distributed Systems 第1章 Introduction

A distributed system is a collection of independent computers that appears to its users as a single coherent system.

ユーザに対して一貫性のあるシステムを提供する独立したコンピュータの集合◦ 各ノードが自律している (autonomous)◦ ユーザは単一システムとして扱うと考える

「分散システム」の定義

Page 5: Distributed Systems 第1章 Introduction

分散システムの一例 ( ミドルウェア )

Page 6: Distributed Systems 第1章 Introduction

分散システムを構築する際、対処すべき問題

◦ リソースを利用できる

◦ 透明性

◦ 開放性

◦ 拡張性

目標Goals

Page 7: Distributed Systems 第1章 Introduction

リソースの例◦ コンピュータ , プリンタ , データ , ファイル , ウェブページ

etc...

ユーザが簡単にリソースを使用 / 共有できる

ただし、接続性がよくなると・・・◦ 盗聴 / 侵入される◦ パスワード、クレジットカード番号などの保存方法◦ スパムもたくさん来る

 →セキュリティへの対応が重要

リソースが利用できるMaking Resources Accessible

Page 8: Distributed Systems 第1章 Introduction

透過的 (transparent)◦ 分散システムであることをユーザが意識しなくてもよい

透明性の種類

分散透明性Distribution Transparency

Access データ表現、リソースへのアクセス方法を隠蔽するLocation リソースの位置を隠蔽するMigration リソースが他の場所に移動することを隠蔽するRelocation リソースが使用中に他の場所に移されることを隠蔽するReplication リソースが複製されることを隠蔽するConcurrency リソースが複数のユーザで共有されることを隠蔽するFailure リソースの故障、復旧を隠蔽する

Page 9: Distributed Systems 第1章 Introduction

完全に透明にしない方がよい / できない場合もある◦ 時差による問題◦ 物理的な距離による問題◦ パフォーマンスの問題

例 : ファイルの複製を ( 物理的に離れた ) 複数の場所で  管理している場合◦ ファイルを完全にアップデートするのに数秒かかる

透明性の程度Degree of Transparency

Page 10: Distributed Systems 第1章 Introduction

標準的なルールに従って提供されている◦ プロトコル◦ API を形式的に記述する

仕様が明確ならば、相互運用性と携帯性が高まる

◦ 相互運用性 (Interoperability) システム同士が連携できる能力

◦ 携帯性 / 移植性 (Portability) 環境を移行する際の容易さ

開放性Openness

Page 11: Distributed Systems 第1章 Introduction

システムの拡張性を図る 3 つの指標

◦ システムにユーザやリソースを簡単に追加できるか?

◦ ユーザとリソースがはるかに離れていても地理的に拡張性があるか?

◦ 管理が簡単にできるか?

拡張性Scalability

Page 12: Distributed Systems 第1章 Introduction

Concept Example

集中型サービスCentralized services

A single server for all users

集中型データCentralized data

A single on-line telephone book

集中型アルゴリズムCentralized algorithm

Doing routing based on complete information

拡張性の制約Scalability Limitations

Page 13: Distributed Systems 第1章 Introduction

集中型サービス◦ サービス中の特定の処理を 1 台のマシンのみで行う、など◦ 処理の集中を避けられないこともある

( 医療情報、口座情報など、機密性の高い情報を扱う場合 )

集中型データ◦ DB があるマシンにアクセスが集中する

集中型アルゴリズム◦ 分散システムであることを前提としたアルゴリズムを

使用しなければいけない◦ 例:ルーティングの最適化

全ての機器から情報を集める 1 つのマシンで計算する すべての機器に結果を送信する

拡張性の問題点

Page 14: Distributed Systems 第1章 Introduction

システムの状態の完全な情報を持った機器はない。

機器はローカルな情報のみに基づいて判定をする。

機器 1 台が故障してもアルゴリズムに影響しない。

グローバルな時計が存在するという仮定を置かない。◦ 正確に時刻を同期することができない

分散アルゴリズムの特徴

Page 15: Distributed Systems 第1章 Introduction

同期を前提とした設計ができない◦ 1回の通信に LAN の 1000倍ぐらいかかる

LAN より接続の信頼性が低い

異なる管理領域にまたがる分散システムの拡張◦ 別ドメインからの攻撃の遮断

地理的拡張性の問題点

Page 16: Distributed Systems 第1章 Introduction

通信待ち時間の隠蔽

分散

反復

拡張手法 (Scaling Techniques)

Page 17: Distributed Systems 第1章 Introduction

できるだけリクエストへの反応を待たない→非同期通信

入力フォームの例

通信待ち時間の隠蔽

Page 18: Distributed Systems 第1章 Introduction

要素を小さなパーツに分け、システム全体に広げる

例 : Domain Name System (DNS)◦ 地域ごとに名前空間が分けられている

分散

Page 19: Distributed Systems 第1章 Introduction

システム全体に構成要素を複製する◦可用性を高める◦負荷を分散する◦ 複製ファイルが多いと一貫性の問題が発生

(更新がすぐに反映されないと困る )

複製と一貫性のどちらをとるかは、リソースの使用法に依存◦ ウェブブラウザ

→複製により可用性を重視◦ 電子証券取引所、オークション

→強い一貫性が求められる

複製Replication

Page 20: Distributed Systems 第1章 Introduction

分散システムを開発するときにしてはいけない仮定

◦ ネットワークが信頼出来る

◦ ネットワークが安全である

◦ ネットワークが均一である

◦ トポロジー ( 接続形態 ) が変化しない

◦ 待ち時間が 0 である

◦ 帯域幅が無限である

◦ 転送コストが 0 である

◦ 管理者は 1人である

落とし穴

Page 21: Distributed Systems 第1章 Introduction

分散コンピューティングシステム◦ クラスタコンピューティングシステム◦ グリッドコンピューティングシステム

分散情報システム◦ トランザクション処理システム◦ Enterprise Application Integration

分散浸透システム◦ Home Systems◦ Electronic Health Care Systems◦ Sensor Networks

分散システムの種類

Page 22: Distributed Systems 第1章 Introduction

高性能計算用

クラスタコンピューティングシステム◦ 同じような PC + 高速 LAN◦ 各ノードが同じ OS

グリッドコンピューティングシステム◦ 各ノードのハードウェア、ソフトウェア、ネットワークが大きく異なる

分散コンピューティングシステムDistributed Computing Systems

Page 23: Distributed Systems 第1章 Introduction

スーパーコンピュータ 例 : Beowulf clusters

クラスタコンピューティングシステムCluster Computing Systems

Page 24: Distributed Systems 第1章 Introduction

ハードウェア、 OS 、ネットワーク、管理ドメイン、セキュリティポリシーなどを仮定しない

グリッドコンピューティングシステムGrid Computing Systems

Page 25: Distributed Systems 第1章 Introduction

ネットワーク上の複数のホストが関連する 1 まとまりの操作 ( トランザクション ) を処理する

トランザクションの基本操作

トランザクション処理システムTransaction Processing Systems

Page 26: Distributed Systems 第1章 Introduction

トランザクション特有の性質 (ACID 特性 )

Atomic (原子性 , 不可分性 )◦ トランザクションは分けられない

トランザクションは「全て実行される」 or 「 1 つも実行されない」

Consistent ( 一貫性 )◦ トランザクションの前後ではデータの整合性が保たれる

Isolated ( 独立性 )◦ 並列のトランザクションはお互いに干渉しない

Durable (耐久性 , 持続性 )◦ トランザクションがコミットされると、その結果は永続する

トランザクション処理システムTransaction Processing Systems

Page 27: Distributed Systems 第1章 Introduction

企業内の既存のアプリケーション群を連携 /統合する

Enterprise Application Integration (EAI)

Page 28: Distributed Systems 第1章 Introduction

携帯電話、情報家電、カーナビなど、あらゆる機器がネットワークにアクセスし、情報が普通の人々の生活のあらゆる面に深く「浸透」していくような環境

浸透システムの要件◦ 文脈の変化を受け入れる◦ アドホックな構成を促す◦ 基本的に共有を許可する

分散浸透システムDistributed Pervasive Computing

Page 29: Distributed Systems 第1章 Introduction

Electronic Health Care Systems

Page 30: Distributed Systems 第1章 Introduction

Sensor Networks

Page 31: Distributed Systems 第1章 Introduction

分散システムは複数の自律システムから成り、一貫したシステムを提供する

異なるコンピュータで動く異なるアプリケーションを1 つのシステムにまとめることができる

分散透過性を達成する方法は分散システムのデザイン固有なので、分散システムは難しい

計算、情報処理、浸透性を指向する分散システムが存在する

まとめ