👥

分散システムとは?

2023/08/09に公開

全く分散システムがわからない人向け

参考書はこちら:分散処理システム

分散システムとは

計算機単体より,複数の計算機を1つのシステムとして構築し,協調処理した方が効率良い.
このようなネットワークで相互接続された複数の計算機から構成された,共通の目的を持つシステムのことを分散システムという.

今となっては当たり前のような気もするが,初代計算機はネットワークで相互に接続するという使い方は想定されてなかった.

「分散システム」の対義語は「集中型システム」

「分散システム」と「集中型システム」の比較

1. 処理のパフォーマンス

  • 集中型システム
    • 処理が単純
    • 例えば全世界の電子メールを一台で処理するには高い処理速度を必要とする
    • 高い処理速度を持つ計算機は高価

  • 分散システム
    • 処理が複雑
    • コスパが良い
    • 処理能力の拡張は計算機を増設するだけなので容易

2. 処理の局所性

例えばある大学生が大学のメアドでメールを送信する場合,同じ大学内の他のユーザに向けたものが多い

  • 集中型システム
    • 上記の場合,送信先が外部と内部で処理の違いがない
    • 例えば大学の学生情報の漏洩などセキュリティ的問題

  • 分散システム
    • 先に大学内部宛てのメールだけ処理して,残りだけを外部の計算機と協調処理できる
    • データを論理的に分離できるので,セキュリティ面の強さ

3. 可用性

ロバスト性とも言える

  • 集中型システム
    • その計算機が停止したら全ての処理が被害を被る

  • 分散システム
    • 一つの計算機が故障しても,その影響はその計算機を使ってた一部のユーザだけ


分散システムの背景

なぜ分散システムは注目されているのか

  • 最近(?)流行りのビッグデータの処理や解析をしたい
  • 単一の計算機ではデータ量が多すぎて無理
  • 複数の計算機で並列分散処理を行うシステムが必要

Googleなどの一部企業は独自のシステムを構築
その他の会社や個人はオープンソフトウェアを用いる(例:Hadoop)

分散システムの目標

分散システムを構築する上で気をつけること

  • 処理の効率化を図る
    • 手法は対象のアプリケーションによって異なる
    • 効率を通信計算量(総メッセージ数)や時間計算量(ラウンド数)で評価するらしい
  • 処理の正しさ
    • 複数存在する各プロセスは非同期通信であることが多いため.複数プロセスで処理を実行するとき無矛盾であるべき
    • ここが結構重要で様々なアルゴリズムが考案されている

分散システムの難しいところ

  • 各プロセスのプログラムのアルゴリズムが決定的であったとしても,全体の動作は非決定的
  • 各プロセスがシステム全体の情報を知っているとは限らない.各プロセスは全体的な情報を知らずに動作する必要がある場合が多い
  • 各プロセスの動作が正しくても,全体の動作が正しいとは限らない
  • システムが大規模になるほど,全プロセスが無故障である保証ができない




簡単に分散システムについてまとめてみました.さてアルゴリズムの勉強するか

Discussion