分散コンピューティング(ぶんさん-、英: Distributed computing)とは、情報処理手法の一種であり、プログラムの個々の部分が同時並
行的に複数のコンピュータ上で実
行され、それらが
ネットワークを介して互いに通信しあう形態である。複雑な計算などを
ネットワークを介して複数のコンピュータを利用して
行うことで、一台のコンピュータで計算するより
スループットを上げようとする取り組み、またはそれを実現する為の仕組みである。
分散処理(ぶんさんしょり)ともいう。
並列コンピューティングの一形態に分類されるが、一般に
並列コンピューティングと言えば、同時並
行に実
行する主体は同じコンピュータ
システム内の
CPU群である。ただし、どちらもプログラムの分割(同時に実
行できる部分にプログラムを分けること)が必須である。
分散コンピューティングではさらに、それぞれの部分が異なる
環境でも動作できるようにしなければならない。例えば、2台の異なる
ハードウェアを使ったコンピュータで、それぞれ異なる
ファイルシステム構成であっても動作するよう配慮する必要がある。
問題を複数の部分問題に分けて各コンピュータに実
行させるのが基本であり、素数探索や数多く試してみる以外に解決できない問題の対処として用いられているものが多い。
分散コンピューティングの例としてBOINCがある。これは、大きな問題を多数の小さな問題に分割し、多数のコンピュータに分配する
フレームワークである。その後、それぞれの結果を集めて大きな解を得る。一般的に処理を分散すると一台のコンピュータで計算する場合と比べ、問題データの分配、収集、集計するための
ネットワークの負荷が増加し、問題解決の為の
ボトルネックとなるため、部分問題間の依存関係を減らすことが重要な課題となる。
分散コンピューティングは、コンピュータ同士を
ネットワーク接続し、効率的に通信できるよう努力した結果として自然に生まれた。しかし、
分散コンピューティングはコンピュータネットワークと同義ではない。単にコンピュータネットワークと言った場合、複数のコンピュータが互いにやり取りするが、単一のプログラムの処理を共有することはない。World Wide Web はコンピュータネットワークの例であるが、
分散コンピューティングの例ではない。
分散処理を構築するための様々な技術や標準が存在し、一部はその目的に特化して設計されている。例えば、
RPC(Remote Procedure Call)、
Java RMI(Remote Method Invocation)、.NET Remoting などがある。