pyenteの研究日記

IT系の情報をメモしていきます

分散システムとは…?

分散システム

分散システムの定義

分散システムは,そのユーザに対して単一で首尾一貫したシステムとして見える独立したコンピュータの集合である.

  • つまり…

    • 自立コンポーネント(コンピュータ)からなる
    • ユーザはそれらを単一のシステムとして扱う
  • 重要な特性

    • 多様なコンピュータの差異とそれらの通信方法が隠蔽される.
    • ユーザとアプリケーションがどんな環境でも一貫性のある方法で分散システムと相互作用できる.

分散システム≒ミドルウェア

要約すると…

分散システムは独立した複数の計算機の集まりで,ユーザからは1つの一貫したシステムに見える

目標

  • ユーザとリソースとの接続手段の提供
  • 透過性の実現
  • 開放性
  • スケーラビリティの達成

リソースへのアクセス性の向上

分散システムの主な目標は,ユーザ(またはアプリケーション)が遠隔のリソースにアクセスすることを容易にし,その上,これらのリソースを制御されかつ効率的な方法で他のユーザと共有することである.

  • つまり:複数ユーザで遠隔リソースを共有

  • リソースを共有する理由

    • 経済性
    • 複数ユーザ間での共同作業や情報交換を行うため
  • 接続性やリソース共有が増大すると,セキュリティが重要になる

    • 通信において盗聴や妨害に対してほとんど防御していない(e.g.,重要情報が暗号化されていない).
    • 通信追跡

分散透過性

  • プロセスやリソースが複数のコンピュータにまたがって,物理的に分散されている事実を隠蔽する
  • 透過:ユーザやアプリケーションに対して単一のコンピュータシステムに見えるシステムのこと

透過性の種類

  • アクセス(access transparency)
    • データ表現の違いやリソースのアクセス方法を隠蔽する
    • e.g.,整数の表現(ビッグエンディアンやリトルエンディアン),OSによるファイル名表現の差異 -> CPUやOSの差異を隠蔽している
  • 位置(location transparency)
    • リソースがどこに位置するのかを隠蔽する
    • リソースに論理的な名前のみを割り当てる(e.g.,URL,DNS,path name)
  • 移動(migration transparency)
    • リソースが他の位置に移動して良いことを隠蔽する
    • リソースが他の場所に移動しても同じURLでアクセスが可能(e.g.,Webサーバが移動しても同じURLでアクセスできる)
  • 再配置(relocation transparency)
    • リソースが使用中に,他の位置に移動するかもしれないことを隠蔽する
    • e.g.,無線通信のローミング
  • 複製(replication transparency)
    • リソースが複製されていることを隠蔽する
    • 可用性や性能向上を目的とした,リソースをコピーし,アクセスされている場所の近くに配置する(キャッシュなど)
    • 位置透過性を維持するために,コピーされたリソースは同じ名前を持つ必要がある
  • 並行(concurrency transparency)
    • リソースがいくつかの競合ユーザに共有されていることを隠蔽する
    • リソースを複数ユーザで共有すると同時に同じリソースにアクセスすることで競合が発生する -> 共有リソースを矛盾のない一貫した状態に保つ必要がある(排他制御機構やトランザクション機構などで実現可能)
  • 障害(failure transparency)
    • リソースの障害と回復を隠蔽する
    • 分散システムでは故障したリソースと反応が遅いリソースを区別する(特にネットワークを隔てた離れたリソース)のが困難なため,最も実現が困難である
  • 永続(persistence transparency)
    • リソースがメモリまたはディスク上のどちらに存在するかを隠蔽する
    • e.g.,オブジェクト指向データベース,ライトバックキャッシュ

透過性実現の度合い

  • 透過性の度合いを高めるとシステムの性能は悪化する(トレードオフ関係)
    • 障害透過性(e.g.,インターネットアプリケーション)

      • サーバに何回か接続を試みた後,接続不可能なら諦める
        • サーバの一時的な障害を隠蔽しようとし,何回も再接続を行うことで動作が遅くなる
        • 早めに再接続を諦めるかユーザがキャンセルを行う方が良い
    • 複製透過性(e.g.,リソースの複製)

      • リソースが異なる大陸など,非常に離れた場所に複数存在するとき,それらの内容が全て同じであることを保証したい -> 複製のどれか1つを変更すると他の複製に変更を電場されるのに非常に時間がかかってしまう

開放性

  • 標準化されたサービスを提供する
  • e.g.,ネットワークの送受信のルールをプロトコルとして標準化
  • 作成者の異なるシステムを相互接続するため,サービスをインターフェースとして定義する
  • これにより,異なる作成者が作成した異なる実装を組み合わせることで分散システムを構成できる

スケーラビリティ

  • スケーラビリティ:システムを容易に大規模化できること
    • システムのサイズ…より多くのユーザやリソースをシステムに追加しやすいため,大規模に実現可能である.
    • 地理的な規模…地理的に拡張可能(ユーザやリソースが遠隔に位置する)なシステム
    • システム管理…多数の独立した管理組織にまたがっても容易に管理できるので,管理上拡張ができる

スケーラビリティ問題

  • システムのサイズを大規模化

    • ユーザ数やリソース数を増やそうとすると,中央集中型サービス,データ,アルゴリズムでは限界がある
    • サービス:サーバが1つだけだと,ユーザが増えた時にボトルネックになる
    • データ:データが増えるといつかディスク容量不足を起こす
    • アルゴリズム:メッセージの経路制御でネットワーク上のすべての情報を集めて最適経路を計算し,結果を各マシンに分配するため,ネットワークに負荷をかける -> 分散型アルゴリズムのみ使用されるべきである
  • 分散型アルゴリズム

    • いかなるマシンもシステム全体の完全な情報を持たない
    • 各マシンは局所的な情報のみをもとに意思決定を行う
    • 一つのマシンの障害が全体のアルゴリズムの動作に影響しない
    • 大域的な時計の存在を仮定しない:分散システムすべての時計を正確に同期させるのは不可能である
  • 地理的なスケーラビリティ

    • LAN向けに設計された分散システムをWAN用に大規模化するのは困難
      • LAN向けのシステムは同期通信に基づいている
        • 同期通信:サービスのリクエストを送信し,停止して応答を待つ
      • LANでは通信遅延が小さいため問題ないが,WANでは通信遅延があるため,同期通信を用いた対話的アプリケーションの作成が困難
      • WAN上の通信はLANに比べて信頼性が低く,1対1通信である(信頼性が高いブロードキャスト通信が利用できない)

スケーラビリティ問題の解決法

  • 通信遅延の隠蔽:地理的なスケーラビリティ問題の解決法
    • リモートサーバからのレスポンスを待たない
      • 非同期通信:リクエストを出した後にブロックし,返事を待つ代わりに他の仕事を行い,返事が到着したら割り込み,リクエストに関する処理を行う
      • 対話的なアプリケーションには使えない
    • Webのフォームを使ってデータベースにアクセスする
    • 入力フォームの構文チェック
      • サーバ側でチェックを行い結果を待つ -> 通信遅延により遅くなる
      • クライアント側で構文チェックを行い,完全な入力データをサーバに送信する
  • 分散化:システムを小さい部分に分解し,分散配置する
    • e.g.,DNS(Domain Name System),WWW
  • 複製化:可用性の増大と性能向上
    • 一貫性の問題がある

終わりに

メモ書きになってしまいました. 許してください,なんでもしますから(なんでもとはいってない)

参考はこちらの本になります.

これの1章の途中までをまとめた感じですね,はい. 興味を持ったらぜひ読んでみてください. 英語ならPDFがどこかにありますよ?笑

ではでは,今日はこの辺で…