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