分散コンピューティングとは正確には何ですか?[閉まっている]


14

分散コンピューティングを正確に構成するものは何ですか?また、並列化/コンカレントコンピューティングとどのように違いますか?

リソースへのアクセスを同期しようとする複数の並列スレッドでミューテックスとセマフォを使用することは、分散コンピューティングの領域で問題になりますか?

回答:


8

分散コンピューティングを正確に構成するものは何ですか?

分散コンピューティングは、相互に通信して1つ以上の問題に取り組む処理要素の本質的に並列のコレクションです。これらの処理要素は互いに十分に分離されているため、それらの間に信頼性のあるタイムリーなメッセージングファブリックを構築することは実用的ではないため、システムの状態に関するグローバルな知識が得られなくなります。分散システムとの間でメッセージの特定の機能は、メッセージがということであるだろう、迷子になり、文字化けします遅れが出る-このスペースでのソリューションは、このを考慮しなければなりません。したがって、分散プログラミングとは、ネットワークとメッセージ、並列処理、グローバル情報の欠如を扱うことです。

この問題を回避する最も簡単な方法は、単一の処理要素を特別なもの、つまり特定の情報に対して信頼できるものにすることです。その後、他の要素は毎回それを参照するか、情報をキャッシュして、情報が古くなっていないことを期待できます(変更について通知されることを期待できないため)。これは、古典的なクライアント/サーバーアーキテクチャです。

インターネットコンピューティング分散コンピューティングですが、ほとんどの分散ノードが実際に行うことを制御する機能はありません。

リソースへのアクセスのために同期しようとする複数の並列スレッドは、分散コンピューティングのドメインで問題になりますか?

これらは、クライアント/サーバーモデルを構築するときに役立つ可能性のあるソリューションを構成しますが、リソースの競合が大幅に増加する可能性があります。読み取りの場合、それはそれほど大きな問題ではありません(十分なハードウェアがある場合)が、書き込みの場合は実際に大きな問題です。

ただし、分散ロックです。信頼できるタイムリーなメッセージングの欠如は、Paxosプロトコルのようなものを使用しない限り、分散決定プロトコルを完全に無効にしますが、それには多くの警告があります。分散コンピューティングの基本的な問題は、「メッセージに悪いことが起こる」ことです。TCPのような比較的低レベルのプロトコルは問題を軽減しますが、それでもあなたはひどく行き詰まります。


6

リソースへのアクセスのために同期しようとする複数の並列スレッドは、分散コンピューティングのドメインで問題になりますか?

それらのスレッドが異なるマシン上で実行される可能性がある場合、または同じマシン上で異なるプロセスで実行されている場合でもそうです。


1
異なるマシンで実行されているスレッドは、基本的に、ミューテックスとセマフォの従来の方法と同期できません。
ジャン・ヒューデック

@JanHudecそれがインタビュアーの質問のポイントだったと思う。アトミックなテストとセットまたは比較とスワップの命令または共有メモリがなければ、分散コンピューティングは同期のためにマシン間のメッセージングに依存する必要があります。幸いなことに、これを実現するアルゴリズムがあります。
カレブ

「残念ながら」に同意しません。アルゴリズムは複雑であり、フォールトトレラントではないため、回避する必要があります。
ジャン・ヒューデック

5

分散コンピューティングは、異なるコンピューター上で処理が行われるコンピューティングシステムです(分散システム上)。個々のプログラムは、一連の通信チャネルを介して互いに通信します。これらのチャネルは通常、ネットワーク接続(たとえば、TCPソケット)ですが、多くの場合、他の通信プロトコルとデバイス(DeviceNET、BACNet、SECS-2、Modbusなど)、または特定のデバイス用にカスタマイズされたプロトコルを使用します。

分散システムは通常、単一のコンピューターで実行するように設計されたシステムよりもはるかに複雑です。マルチスレッドアプリケーションが対処する必要がある並行性とリソースロックの問題に加えて、分散システムは通信障害と処理ノード障害を処理する必要があります。実行に複数のプロセッサを必要とするトランザクション(およびロールバック)も注意が必要です。

分散システムは多くの形式を取り、現在多くのアプリケーションで使用されています。Webアプリケーションは分散システムです。N層システムには、通常、少なくともN個の異なるプロセッサー(異なるアプリケーション)があります。分散システムは、多くのファクトリオートメーションシステムでも使用されています。

書き込みアップに分散ウィキペディアで計算上は読む価値があります。

マルチスレッドアプリケーションが分散アプリケーションを構成するかどうかについての質問への答えとして、スレッドが単一のコンピューターで実行されている場合、システムは分散されません。分散システムに固有の問題の一部を解決する必要がありますが、すべての問題を解決する必要はありません。


3

厳密に言うと「分散コンピューティング」とは、複数のコンピューターで単一のトランザクション/要求/計算を処理することを含むソリューションです。

また、「分散システム」という用語に出くわすでしょう。これは、中央のデータセンターの外部に元々展開されていたWindows、UNIX、およびその他の小規模システムサーバーを包括する用語です。これらのシステムは最近ではデータセンター内に展開されるのが一般的ですが、この用語は定着しています。


3

分散コンピューティングの構成に関する一般的な質問に答えるために、Ann Wollrath、Geoff Wyant、Jim Waldo、Samuel C. Kendallによる論文『分散コンピューティングに関する注意』をお勧めします。それは分散システムとその障害の最近の歴史をカバーしており、分散コンピューティングは関係する問題について異なる考え方を必要とすることを提案しています。

論文ではミューテックスもセマフォも言及していませんが、分散ソフトウェアシステムの適切なエンジニアリングに関する貴重な洞察を提供します。

インタビュアーがミューテックスとセマフォについて尋ねた理由については、@ Calebに同意します。

これらのスレッドが異なるマシンで実行できる場合、または同じマシンで異なるプロセスで実行されている場合でもそうです。

追加する唯一のことは、ミューテックスとセマフォが複数のコンピューティングデバイスに作業を分散できる低レベルのロックプリミティブであり、それらの操作が(通常)アプリケーションの成功に不可欠であることです。明らかに、使用される言語と技術に依存します。ErlangまたはScalaを使用している場合、おそらく、従来のロックベースの同時実行ではなく、アクターモデルベースの同時実行を使用します。


2

言葉はそれをすべて言います。何らかのコンピューティング操作を行う必要があります。各コンピューティングが他のコンピューティングに関係なく動作するようにこのコンピューティングの一部を分散できる場合は、すべてが完了したら各コンピューティングの結果を組み合わせてメインコンピューティングの答えを取得します。例:Map-Reduce


1

「分散システム」に関するコースがありましたが、その定義は正確には覚えていませんが、次のようなものでした。

  1. メッセージを介して通信する複数の別個のノードで実行できます(メモリを共有できません)
  2. オブジェクトはノード間で移行できます
  3. オブジェクトは移行時にIDを保持し、移行時に透過的にアドレス指定できます
  4. オブジェクトはそれらを作成したノードに依存しません
  5. システムはノードの追加と削除を処理できます

(もう少しあったと思いますが、最後の点については確信がありません)

このコースでは、分散トランザクションと分散ロックを実装する方法を学びました。教訓は、分散ロックは基本的に分散トランザクションを使用して実装されることであり、これはローカルで行うこととは逆であり、本質的にフォールトトレラントではないため、そもそも分散システムを使用する目的に反します。

編集:その定義は、オペレーティングシステムまたはデータベースシステムという狭い意味での「分散システム」のためのものであり、単なるクライアントサーバーシステムではありません。最初の条件を満たしているものは、一部のコンテキストでは分散と呼ばれる場合があります。

偶然にも、定義は分散型と従来のバージョン管理システムの違いに一致します。これらはすべて、少なくともクライアント/サーバーであり、多くの場合複製されます。


これは非常に特定のスタイルの分散コンピューティングです。他にもありますが、彼らが本当に共有しているのは最初の点だけです。メッセージングは​​重要であり、他の人はそれほど重要ではありません。
ドナルドフェローズ

1
@DonalFellows:まあ、これは分散型であるシステムのオペレーティングシステムやデータベースの意味で、。そこでは、移行とフォールトトレランスが主なポイントです。分散「コンピューティング」は、複数のノードで実行されるものです。
ジャン・ヒューデック

まあ、その場合、それは決定に至るビジネスをカバーすべきでした。分散システムでは難しい。(さらに、このトピックで見た学術論文のほとんどは、基礎となるグラフトポロジについて完全に非現実的な仮定を行っており、有効であるが役に立たない結論を与えています。)
ドナルフェローズ

@DonalFellows:もちろん、コースは決定に至るビジネスと、すべての調停とスプリットブレインスタッフをカバーしました(あまり深くない、入門レベルのみでした)。しかし、それは分散システムの特性を定義するものではありません。それを作成したい場合、それは単にあなたがジャンプしなければならないハードルです。
ジャン・ヒューデック

0

分散コンピューティングエンタープライズコンピューティングの「非マーケティング」という用語で、実生活でより多く耳にすることがあります。しかし、他の人が指摘した一般的な考え方は、「あなたは仕事をするために複数のコンピューターを使用している」ということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.