ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
663
663
EMPFEHLEN
-
Tag zusammen,
ich habe folgendes Problem. Ich habe einen Zahlenbereich:
von 0000000000000000 bis 1999999999999999
Nun habe ich XXX Clients.
Es können dauerhaft Clients hinzukommen oder UNERWARTET verschwinden.
Nun muss dieser Zahlenbereich auf die Clients aufgeteilt werden. Hat jemand einen Vorschlag, wie man das am besten verteilen kann?
Vorallem: Wie soll vorgegangen werden, sobald sich ein neuer Client meldet oder ein Client unerwartet sich nicht mehr meldet? Dann muss der Zahlenbereich des weggefallenen Clients neu auf andere Clients verteilt werden.
-
29.04.11 00:33 #2
- Registriert seit
- Feb 2009
- Beiträge
- 193
Zu aller erst benötigt man natürlich sowas wie einen Heartbeat. Also immer Meldungen von den Clients ob sie noch da sind oder nicht und natürlich eine Zuteilung welcher Client welchen Zahlenbereich behandelt.
Fällt dann ein Client weg so hast du recht. Dann muss sein Zahlenbereich auf andere verteilt werden. Davon ausgegangen, dass immer wieder neue hinzukommen kannst du den Zahlenbereich "aufbewahren"für einen Client der demnächst hinzu stoßen wird. Sollte keiner hinzu stoßen kannst du den Zahlenbereich auch einem Client überlassen der als nächstes mit seinem fertig wird.
Ein weiteres Problem ist, dass sollte ein Client wegfallen auch dessen Ergebnisse weg sind. Um das zu verhindern sollte man jeden zu vergebenden Zahlenraum nochmals in kleinere Zahlenräume unterteilen von denen dann zwischendurch immer die Ergebnisse abgeliefert werden.
Die schweren Fälle einer solchen Anwendung sind natürlich Start, Ende und Zeiten in denen sich wenige Clients beteiligen. Zum Start ist vor allem die Frage entscheidend wie viele Clients sich vermutlich beteiligen werden. Weiß man dies nicht, so sollten die Zahlenbereiche so gewählt werden, dass diese in absehbarer Zeit (z.B. 5 min) abgearbeitet werden können. Dadurch lässt sich ein einzelner Client gut auslasten und sollten weitere hinzukommen so kann man diese auch auslasten.
Was das Ende betrifft, so sollte, sobald dieses absehbar ist, also alle Zahlenbereiche verteilt sind und die Fertigstellung nahe rückt keine weitere Aufsplittung der Zahlenbereiche erfolgen, da es praktisch überflüssig ist jedem Client nur noch eine einzelne Zahl zuzuweisen die er zu bearbeiten hat. Für dieses Szenario wäre der Overhead größer als die Beschleunigung durch weitere Clients.
Für den Fall, dass sich viel zu wenige Clients beteiligen würde ich so vorgehen wie im Startzustand, da die Zustände praktisch identisch sind: zu wenige Teilnehmer und es ist ungewiss wie viele noch kommen werden.
Über den Fall, dass so viele Clients zusammenkommen, dass nicht genügend Zahlbereiche vorhanden sind mache ich mir zu dieser Uhrzeit mal keine Gedanken mehr.
-
29.04.11 00:40 #3
- Registriert seit
- May 2010
- Ort
- Sonneberg (Thüringen)
- Beiträge
- 29
Lies das Skript zu deiner Vorlesung, das ist Uni-Schiss.
-
Hat inzwischen jemand eine Idee zur Lösung?
-
30.04.11 20:56 #5
- Registriert seit
- May 2010
- Ort
- Sonneberg (Thüringen)
- Beiträge
- 29
Die Antwort von Technoblade gibt eine Menge Ideen zur Lösung. Kostenloses consulting gibts hier nicht, streng mal selbst deine Birne an.
Ähnliche Themen
-
Verteiltes System (Multithreading)
Von wpb im Forum JavaAntworten: 0Letzter Beitrag: 13.10.09, 09:49 -
Rechnen
Von Sasser im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 29.04.09, 18:15 -
InDesign CS2 - Verteiltes Arbeiten
Von UnoDosTres im Forum Desktop Publishing (DTP)Antworten: 2Letzter Beitrag: 02.05.06, 03:32 -
Scriptlets: Verteiltes if-else
Von Der Held im Forum JavaAntworten: 2Letzter Beitrag: 04.11.05, 15:58 -
Verteiltes Rechnen
Von Grimreaper im Forum SmalltalkAntworten: 2Letzter Beitrag: 18.06.03, 13:53





Zitieren
Login





