Thread Transport

  • Themenstarter Themenstarter Samoniec
  • Beginndatum Beginndatum
S

Samoniec

Gast
Hallo habe mal eine Frage zu einer Idee:

Ausgangssituation:
Zwei Server, auf diese werden Aufgaben verteilt. Jede Aufgabe befindet sich in einem eigenen Thread.

Frage / Idee:
Ist es möglich einen kompletten Thread sozusagen zu packen über TCP oder UDP an den zweiten server zus chicken?
Und kann dieser ihn einfach entpacken und wieder starten, bzw weiterlaufen lassen?

Das Ganze soll eine dynamische Lastverteilung ermöglichen.

Welche Möglichleiten gibt es für solch einen Ansatz?
 
AFAIK lassen sich Threads nicht in andere JVM-Instanzen "teleportieren". Du könntest aber den Task (das Runnable-Objekt), den der Thread bearbeitet etwas abstrahieren und es so ermöglichen, dass man den Task an beliebiger Stelle anhalten und speichern kann, so dass ein anderer Thread, sei es in der gleichen JVM oder in einer anderen auf einem anderen Rechner, den Task weiter bearbeiten kann.

Ergo: Du musst dir das selbst basteln. Der Thread an sich kann so nicht angehalten, transportiert und wieder gestartet werden.


- Alex
 
Hm ok.

Muss ich mir sozusagen eine Containerklasse bauen die alles Beherbergt was ich zum Arbeiten benötige und das immer einem Thread zum arbeiten geben. Der arbeitet gleich auf diesem Container oder extrahiert eben alles aus diesem Container.
 
Hallo habe mal eine Frage zu einer Idee:

Ausgangssituation:
Zwei Server, auf diese werden Aufgaben verteilt. Jede Aufgabe befindet sich in einem eigenen Thread.

Frage / Idee:
Ist es möglich einen kompletten Thread sozusagen zu packen über TCP oder UDP an den zweiten server zus chicken?
Und kann dieser ihn einfach entpacken und wieder starten, bzw weiterlaufen lassen?

Das Ganze soll eine dynamische Lastverteilung ermöglichen.

Welche Möglichleiten gibt es für solch einen Ansatz?

Hört sich nach einem sehr ungünstigen Ansatz an. Lastverteilung sollte dir eine passene Laufzeitumgebung liefern, z.B. ein Applikationsserver oder ein anderer Container.
Einfache Lastverteilung erreicht man durch einfaches verteilen von Anfragen, ohne dass die einzelnen Instanzen voneinander wissen.
 
Hi

Leider kann man keine Threads packen und verschicken. Aus dem Grunde, daß Threads ein Teil eines Prozesses sind. Also leichtgewichtige Prozesse. Der "schwergewichtige" Prozeß selbst läuft in einem RAM auf einem Computer mit einem Adreßraum, der nicht teleportiert werden kann. Es sei denn Du benutzt ein Grid - so etwas was Supercomputer können, wo sich mehrere Computer, bzw. CPUs und deren Busse einen gemeinsamen RAM bzw. einen Adreßraum teilen können.

Ansonsten könntest Du mal mit RMI arbeiten und ein oder hunderte gleicher Objekte, die einen bestimmten Zustand erreicht haben sollen und parallel berechnet werden weiterleiten und verarbeiten. Sowas passiert ihn ähnlicher Weise beim Cloud-Computing.

Oder schau mal hier: JPPF Home

Viele Grüße und Erfolg,
Semo
 

Zurück
Oben