2011-01-06 12 views
1

Ich bin ein Student der Fakultät für Kybernetik und ich möchte ein Projekt mit Java schreiben. Ich möchte ein System für verteilte Datenverarbeitung erstellen.Wie kann ich ein System für verteilte Berechnungen erstellen?

Es wird enthält neben Komponenten:
1. Anwenderhauptprogramm (unterschiedlich für jede konkrete Situation)
2. Benutzer- Task-Programm, die einige kleine Aufgabe nur lösen können (auch verschiedene für jeden Fall)
3. Mein Programm, das mit dem Hauptprogramm des Benutzers interagieren wird, um zu wissen, welche Aufgaben gelöst werden müssen. 4. Mein Programm, das mit dem Taskprogramm des Benutzers interagiert, um Eingabedaten zu geben und Ausgabedaten zu erhalten. 5. Apache Tomcat und meine Servlets + Datenbank, all dies wird die nächsten Dinge erlauben:

  • außer in DB Aufgaben aus dem Hauptprogramm
  • Hauptprogramm und Berechnungen Knoten in System registrieren, Aufgabenergebnisse speichern, das von den Knoten gesendet werden
  • einige statistischen Informationen sehen (wie viele Aufgaben gelöst werden, wie viele Knoten in der System- und so weiter)

Bitte erzählen Sie mir einige Ideen über das Design dieses Systems. Ich möchte auch wissen, wie kann mein Java-Programm mit Benutzer-Programm auf dem lokalen Rechner interagiert (ich meine Datenaustausch).

p.s. Danke, Entschuldigung für mein Englisch und erinnere mich daran, dass ich mein eigenes System schreiben möchte (so kann ich keine bestehenden Lösungen verwenden)

+0

Warum können Sie keine vorhandenen Anwendungen verwenden? – Davidann

+0

Vorhandene Anwendungen geben Ideen über Systeme und Diskussionen darüber werden Informationen darüber, was funktioniert. Beginnen Sie damit, von anderen zu lernen, und diejenigen, die das wirklich wissen, haben bereits existierende Systeme geschrieben oder verwendet. – Mark

+0

Ich kann bestehende Anwendungen für Ideen verwenden, aber ich möchte meine eigenen von Grund auf erstellen :) – Timmy

Antwort

0

Werfen Sie einen Blick auf die Java Remote Method Invocation Tutorial zu verstehen, die Schrauben und Muttern von verteilten Programmierung.

http://download.oracle.com/javase/tutorial/rmi/index.html

+1

Ich würde RMI nicht empfehlen zu starten. Es hat seinen eigenen spezifischen Nutzen, aber es ist in der Regel kompliziert zu verstehen und ein Bär zum Laufen zu bringen. Alles muss so eingerichtet werden, und es ist nicht für die verteilte Verarbeitung ohne zusätzliche Bibliotheken oder Software geeignet. –

+1

Stimme völlig zu :) Habe gerade die hadoop-Vorlesungen hier gesehen. http://vimeo.com/3584610 – Will

0

Für Lernkonzepte, würde ich das Studium empfehlen, wie Hadoop funktioniert. Du wirst eine Tonne lernen!

0

Die Geschwindigkeit Ihres vernetzten Systems hängt in erster Linie davon ab, wie autonom jeder Knoten ist (dh sich auf neue Daten verlässt) und wie gleichmäßig die Verteilung der Prozesse ist. Ich bin davon überzeugt, dass Ihre Lösung dem Multiprozessor-Modell durch die Notwendigkeit ähnelt.

+0

Wie ich jetzt denke, wird jeder Knoten sehr autonom und es wird nur mit dem zentralen Knoten kommunizieren, um neue Aufgabe zu erhalten und Ergebnisse von gelösten Aufgaben zu senden. Wie sieht es mit der Prozessverteilung aus? Ich möchte Computern aus dem lokalen Netz und aus dem Internet erlauben, sich mit meinem System zu verbinden. (Wenn Sie also die Aufgabe in Echtzeit lösen müssen, verwenden Sie das lokale Netz). – Timmy

+0

Die Prozessverteilung konnte über Sockets erfolgen. Broadcast-Pakete würden die Kosten für zu viele gleichzeitig geöffnete Streams verringern, aber Sie würden einen benutzerdefinierten Handshake benötigen, der jedes Paket entweder einzeln oder einzeln bestätigt. Andererseits kann Ihr Server oder Prozessmanager nur eine bestimmte Anzahl von Streamverbindungen gleichzeitig akzeptieren und sich darauf verlassen, dass die Knoten ihre Verbindung erneut versuchen. Was die Verteilung der Prozesse betrifft, würde ich jedem Knoten ihre Arbeit in einer noch greifbaren Form senden, d. H. Wie Sie die Argumente an ein Objekt übergeben würden, das Thread kurz vor dem Aufruf von run() erweitert. – motoku

2

Gelesen auf Linda und . Dann lesen Sie weiter unter Apache Hadoop und MapReduce. Das sollte Ihnen einige Ideen geben, wie diese Dinge angegangen werden können.

+0

+1 JavaSpace eignet sich hervorragend zum Weiterleiten von Nachrichten für Jobanforderungen und Antworten. Solange Sie nicht große Datenmengen hin und her senden, funktioniert es gut. –

+0

Danke. Ich plane, mit großen Daten zu arbeiten (zum Beispiel große Bildverarbeitung), aber auch mit diesem System wird es möglich sein, Aufgaben wie Hamiltons Weg in Grafik, Bruteforce MD5 Hashes usw. zu lösen (also nicht immer groß) Daten). – Timmy

Verwandte Themen