Direkter Datenaustausch zwischen Servern

Hallo zusammen,

ich konnte nach einer Suche bei Google und im Forum leider noch keine passende Antwort zu meiner Frage finden:

Es geht um das Kopieren von Dateien zwischen zwei FTP-Verzeichnissen. Zum Hintergrund:
Ich habe eine klassische Java-Client/Server-Webanwendung (Spring, JSF, Hibernate). Benutzer meiner Anwendung können Zugänge zu zwei FTP-Verzeichnissen A und B konfigurieren. Meine Webanwendung zeigt die beiden Verzeichnisse dann in einem Fenster links (A) rechts (B) an.
Jetzt möchte ich eine Funktion anbieten, mit der die Benutzer eine Datei von A nach B kopieren können. Klar, ich könnte die Datei von A zunächst auf meinen App-Server X kopieren und von dort dann nach B übertragen:

Client möchte Datei kopieren
---> Client-Browser zeigt Dateien an
---> Appserver X lädt Datei <---> Server A
---> Appserver X transferiert Datei ---> Server B
---> Client-Browser zeigt Dateien an

Diesen Umweg über meinen Appserver möchte ich wenn möglich umgehen, da dies eine sehr hohe Last und Datenverkehr auf dem Server bei vielen Benutzern erzeugen würde. Leider kenne ich mich hier technisch nicht wirklich aus. Gibt es bessere Möglichkeiten, zur "direkten" Übertragung der Dateien? Kann das irgendwie über den Client passieren, etwa so:

Client möchte Datei kopieren
---> Client-Browser zeigt Dateien an
---> Zu kopierende Datei wird direkt in den Client geladen <---> Server A
---> Client transferiert Datei ---> Server B
---> Client-Browser zeigt Dateien an

Ist so etwas technisch möglich? Wenn ja, mit welchen Java-Technologien kann ich hier arbeiten? Oder kennt ihr weitere Möglichkeiten, um meinen Appserver zu entlasten?

Vielen Dank schonmal für eure Hilfe!

LG Jens
 
Danke erstmal!

Cool, FXP habe ich noch nicht gekannt und die Implementation mit Java scheint auch einfach zu sein:
Managed File Transfer and Security Solutions: Using FXP with Java

Mit FXP wird der Transfer der Daten dann also direkt zwischen den beiden FTP-Servern ausgeführt. Ohne FXP müsste ich das File ja von FTP A direkt auf meinen App-Server und von dort nach FTP B transferieren. Mit FXP kann ich also den Kopiervorgang direkt zwischen FTP A und B anstossen.

Wenn ich nun aber z.B. FXP nicht verwenden kann, sagen wir, ich möchte mit meiner Webanwendung eine Datei von FTP A in ein Dropbox-Verzeichnis (per Dropbox Java API) kopieren. Gibt es hier auch noch Möglichkeiten ohne meinen Appserver zu belasten? Also kopieren über den Client/Browser des Users und nicht mit Umweg über meinen Appserver?

Vielen Dank und LG
 

Sen-Mithrarin

Gesperrter Benutzer
hör dir doch bitte mal selbst zu

was du willst : eine direkte inter-server-kommunikation zwischen A und B gesteuert über deinen app-server X ... also A <-> B
was du aktuell hast : eine in-direkte multi-server-kommunikation zwischen A und B über deinen app-server X ... also A <-> X <-> B
was du jetzt plötzlich machen willst : einen file-transfer über den client ohne deinen app-server ... also A <-> client <-> B

was genau willst du dann jetzt ?


klar kannst du es über den client laufen lassen ... dann darfst du es aber erstmal nicht als direkten server-server-transfer anbieten sondern musst schon mal klar machen das die daten-last beim client anfällt ... und das doppelt : download + upload ... und das es auf grund des in der regel extrem langsamen upload-rate eines "normalen" privat-anschlusses *bei ADSL in der regel selbst mit doppelten upstream max um die 2048kBit/s / VDSL dagegen schon um die 5-10 MBit/s / Cable kommt entsprechend noch höher beim richtigen anbieter* extrem lange dauern wird


wäre für mich ein grund deinen "dienst" nicht zu nutzen


wenn du traffic und netz-last vermeiden willst ... dann biete es nicht an
wenn du keinen einfluss darauf hast wie die daten zwischen den server ausgetauscht werden können ... z.b. weil du nur ein interface anbietest und sich die user darüber z.b. in ihren ftp-acc und einen dropbox-acc einloggen können ... dann bleibt dir nur es entweder über deinen server oder über den client zu laden ... punkt aus ende fertig ... da gibts nichts mehr zu diskutieren
 
Ok, ich habe mich da vermutlich schlecht ausgedrückt. Ist eben nicht ganz so einfach zu beschreiben was man haben möchte, wenn man technisch noch nicht verstanden hat, wie es geht ;-)

Also nochmal:
Ich möchte, dass User über meine Webanwendung einen Quell- und einen Ziel-Server angeben können, egal ob FTP, Dropbox oder was es sonst vielleicht noch gibt.
Meine Überlegung war nun, dass mein Appserver performancemässig sehr schnell in die Knie gehen wird, wenn sehr viele User anfangen Dateien über meinen Appserver zu kopieren (A-->X-->B). Ich bin also auf der Suche nach einer besseren Lösung für dieses Problem und dachte mir, ok, vielleicht kann man das Kopieren auch irgendwie auf die Client-Maschinen auslagern!
FXP wäre eine tolle Lösung für eine direkte Übertragung (A-->B gesteuert über X), wenn es nur um FTP ginge, aber ich möchte hier möglichst flexibel bleiben. Dropbox bietet ja z.B. eine REST-Schnittstelle und FXP fällt damit schon raus.

Also wenn ihr mir sagt, dass das Kopieren über die Client-Maschinen nicht möglich oder nicht performant genug ist, dann muss ich mir etwas anderes überlegen. Vielleicht muss ich meine Anwendungsarchitektur überdenken und Cluster-fähig machen, um später einfach beliebige Server für den Filetransfer bereitstellen zu können!
Aber es geht hier auch nicht um riesige Datenmengen - es soll ja keine Tauschböre werden. Aber die User sollten schon ab und zu auch Ordner mit Fotos, etc. kopieren können.
 

Sen-Mithrarin

Gesperrter Benutzer
wie gesagt : wenn du direkte server<->server kommunikation nicht bewerkstelligen kannst weil dir die server nicht gehören ... und auch über deinen server am besten nichts laufen sollte weil du traffic und performance sparen willst (wobei es ja keine performance frisst wenn du z.b. ein applet auslieferst und auf dem server ein servlet läuft das alles regelt ... sondern nur traffic) ... und es dir zu un-performant ist die daten über den client zu schaufeln (was du ja eigentlich vermeiden willst) ... dann gehts nicht ... es gibt nur diese drei möglichkeiten



*klar ... man könnte irgendwelche free-hoster dafür missbrauchen um zumindest vom traffic her was zu sparen ... aber da braucht man dann schon "den richtigen" auf dem man dann z.b. über php auch direkt auf resourcen von anderen quellen zugreifen kann ... was ja bei den meisten blockiert ist
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Bluetooth Paarung und Datenaustausch Netzwerkprogrammierung 6
J FTP FTP Datenaustausch(Updaten) Netzwerkprogrammierung 5
M Datenaustausch? Netzwerkprogrammierung 3
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
H Socket Datenaustausch Client <> Server Netzwerkprogrammierung 6
Kr0e Datenaustausch trotz NIO nur halb so schnell Netzwerkprogrammierung 6
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
A Datenaustausch mit 2 Clienten und 1 Server hapert Netzwerkprogrammierung 4
D Datenaustausch per IP Netzwerkprogrammierung 4
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
J VideoStreaming zwischen 2 Geräten Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
O Client zwischen XML und JSON auswählen lassen Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
D Chatprogramm zwischen zwei ChatClients (aktiv/passiv) Netzwerkprogrammierung 1
V Unterschied zwischen cURL und HttpURLConnection?? Netzwerkprogrammierung 2
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
V Datensätze zwischen verschiedenen Datenbanken kopieren Netzwerkprogrammierung 2
F Peer to Peer Verbindung zwischen mehreren Clients? Netzwerkprogrammierung 8
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
L RMI-Objekt zwischen zwei RMI-Servern kopieren Netzwerkprogrammierung 2
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
B Verbindung zwischen Client und Server Netzwerkprogrammierung 2
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
M RMI zwischen verschiedenen Java Versionen Netzwerkprogrammierung 2
N UDP zwischen Java und C++ funktioniert nicht. Netzwerkprogrammierung 4
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
P Zeit zwischen mehreren Client log-ins bestimmen. Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben