分散システム(立命館2022春講義)
35338
キーワード
教科書
参考書
1回目
複数のコンピュータとそれらを接続するネットワークによって構成されている
独立したコンピュータの集合である
それぞれのコンピュータは単独でも動作できる
単一で首尾一貫している
ユーザは複数であることを意識せず透過的に単一のシステムとしてアクセスできる 処理結果や状態に矛盾がない
Distributed
異質の役割を果たす要素が連携して動作
基本的に不可分
Parallel
同質の役割を果たす要素が連携して動作
なぜ分散させるのか?
セキュリティや情報保護の実現,データや処理を特定のコンピュータに閉じ込める
安価なパソコンを大量につないで検索エンジンを実現できたことに利があった
データ表現方法やリソースアクセス方法の隠蔽
リソースの存在位置を隠蔽
例:URLから物理的にサーバがどこにあるのかは全くわからない リソースの位置変化を隠蔽
例:物理的にサーバがどこかに移動したりしても全く気にする必要はない
使用中のリソースの移動を隠蔽
例:移動中にスマートフォンで動画を観ていたりしてもOK
リソースが複製されていること自体を隠蔽
複数プロセスでリソース利用の競合していることを隠蔽
システム内で発生している障害を隠蔽
分散システムにおける現実的な制約
以下は理想的な状況である
ネットワークには信頼性がある
遅延は存在しない
帯域幅は無限
ネットワークはセキュアだ
トポロジーは変化しない
ここでのトポロジーはネットワークにおけるノード間の接続形態と思えば良い
存在する管理者は唯一だ
転送コストはゼロ
ネットワークは均一
2回目
4回目
アーキテクチャ
階層型
オブジェクトベース
データ中心型
集中型
実際のネットワークの上に更に仮想的なネットワークを構成
6回目?
時計/同期
時計のズレを表す最大ドリフト率$ \rhoとすると,2台の時計が$ \Delta tの時間でずれる時間は最大$ 2\rho \Delta t,これを$ \deltaに抑えるとすると
$ 2 \rho \Delta t < \delta \implies \Delta t < \frac{\delta}{2 \rho}
つまり同期は$ \frac{\delta}{2 \rho}毎に同期する必要がある
時計の進みを一気に直してしまうと重複した時間を2回行ってしまう可能性をはらむ
相互排他
集中アルゴリズム
リソースアクセスの間にコーディネータを挟む
このコーディネータが故障するとアルゴリズム全体が停止する
分散アルゴリズム
どれかのプロセスが故障するとアルゴリズム全体が停止する
まずプロセスをリング状に配置する
アクセス可能であることを示すトークンを,リング上を巡回させる
トークンの消滅やプロセス故障(リングの再構築)に弱い
リーダーを(投票で)選ぶようなアルゴリズム
前提:一意に識別可能な何らかの番号を持ち,一番大きな番号を持つものがコーディネータになる
7?
障害に耐えて,システムを継続的に稼働させる性質
用語
故障:fail,システムが予定していた動作が出来なくなった状態
エラー:error,障害(故障?)を引き起こしうる要因が存在する状態
特に要因を,障害:faultと呼ぶ
可用性
ある瞬間においてシステムが機能している確率
信頼性
ある期間においてシステムが故障せず機能し続ける確率
安全性
システムが正しく機能しなかった場合重大な問題が発生しないような性質
保守性
システムがどれだけ容易に障害から回復できるか
故障したプロセスが存在する状況において,複数のプロセス間で保有している値に対する合意を形成したい