2

私は大学で修士号を取得する予定ですNetworks and Distributed Systems.。合格するかどうかはわかりませんが、事前に準備したいと思っていました。今のところ、分散システムについて私が知っている唯一のことは、Tanenbaum のModern Operating Systems本 (ちなみに私はこの本が大好きでした) で読んだことだけで、非常に少ないものでした。もちろん、次は分散システムに関する彼の本を手に入れる予定ですが、一度ここで質問したことがあると思いました。

事前に準備できる特定の本、プログラミング言語 (最も重要)、またはコンピューター サイエンスの特定の概念はありますか? 私は3ヶ月の時間を持っています。

どんな提案も歓迎します。コース自体に関するコメントを含む:)

4

2 に答える 2

9

簡単なクライアント - サーバー アプリケーションを作成します。それは、Java またはあなたが最も好きな言語で行うことができます。クライアント - サーバーに慣れていない場合は、最も慣れている言語から始めてください。次に、あなたが通う予定の大学が別のプログラミング言語を使用している場合は、その大学が使用するものを模倣した環境で同じプログラムを再作成してみてください。

プログラミングはそれほど得意ではないが、単純なクライアント/サーバー アプリケーションをプログラミングしたことがない人を見てきました。または、Linux や Java に慣れていない人。これらの人々にとって、最初の数ヶ月はとてもつらいものです。すでにクラスで学べるものは十分にあります。新しい OS や言語を同時に学習することは、通常、クールではありません。

実行できる典型的なクライアント/サーバー アプリは、「数学プロバイダー サービス」です。基本的に、サーバーはポートをリッスンし、クライアントはリクエストを送信します。シンプルにするために、プレーン テキストのリクエスト (例: "add;12;34") を送信すると、サーバーは "answer:46" のような応答を返すことができます。

それほど複雑ではありませんが、そのようなことをしたことがない場合は、マスターを開始する前に本当にそうするでしょう.

物事の「やり方」を知る。それは非常に重要です。マスターはかなり理論的であることを期待できます。おそらく、ソケットの開き方、ポートへのバインド方法、期待できる例外の種類は教えてくれません (ええ、私は Java でプログラミングしています)。等々。ロックアルゴリズム、負荷分散などを実装することが期待されるでしょう。しかし、それらを行うには、基本的なことを行う方法を理解する必要があります!

あなたが初心者なら、George Colouris による Distributed Systems: Concept and Design をお勧めします (名前が少し間違っているかもしれませんが、それは私の頭の中にあります)。基本、ランポート、TCP/UCP/IP など、ほとんどすべてをカバーしています。たとえば、その本にあるクライアント/サーバーの Java の例は、ネット上で見つけられるものよりもはるかに優れています。まったく違うわけではありませんが (サーバーはサーバーです...)、はるかに理解しやすいと思います。

これに慣れたら、もっと強力なものを試してみたいと思うかもしれません。私の経験では、構成に多くの時間を費やすことになります (なぜ機能しないのでしょうか? ホー! クラスパスです! ホー! そのファイルは誰でも実行可能ではありません! ホー! これらのクラスは WEB-INF/ にあります。クラスであり、WEB-APPS ではありません)。したがって、自宅で小さな Tomcat/Glassfish サーバーをセットアップしてみることができます。その上で SOAP または JMS を実行し、それらのサービスを使用するクライアントをコーディングしてみてください。そうすれば、同僚より何マイルも先を行くことができます :)

于 2010-10-15T20:20:04.263 に答える
1

ケンブリッジ大学出版局の書籍「分散コンピューティング - 原理、アルゴリズム、およびシステム」も、主要な DC 概念をすべてカバーしているため、分散コンピューティングのマスターに最適な書籍です。

于 2015-02-28T14:16:00.307 に答える