Moin moin,
ich hoffe dieses Thema ist an dieser Stelle richtig...
Und zwar geht es um folgenden Zustand:
Ich habe einen Server mit zwei Verzeichnissen und zwei IPs von dem verschiedene, große Dateien per FXP auf bis zu zwei verschiedene Server mit jeweils vier IPs gesendet werden sollen, je nachdem was halt in der GUI ausgewählt wurde, wo die Datei hin soll. Auf den zwei Servern dürfen höchstens 4 FTP Transfers pro IP gleichzeitig stattfinden, da sonst der gesamte Server in die Knie geht. Auf dem Zielserver sind außerdem höchstens 28 Logins und 12 Schreibzugriffe pro Port zugelassen. Die Logins/STORs lassen sich per Telnet abfragen.
Auch der Quellserrver hat ein Limit, das aber (noch) nicht bekannt ist.
So nun zu der Nuss die es zu knacken gilt:
Das WIE?
Und zwar brauche ich mal etwas Unterstützung bei der Frage wie bekomme ich nun in meiner Anwendung hin, dass ich von meiner Quelle die Last gleichmäßig auf die beiden Ports (der Einfachheit nenne ich die jetzt mal S1 und S2) S1 und S2 verteile, und den Datenstrom ebenso gleichmäßig auf die Zielserver (Z1_1 - Z1_4 und Z2_1 - Z2_4) verteile.
Aufgrund der Tatsache das ich mehrere Transfers habe muss ich wohl mit einem Thread arbeiten (Bsp:
Indy FTP mit Thread), allerdings wächst die Transferliste stetig weiter an, und wie bastel ich hier am besten die Lastverteilung ein? Auch weil mehrere Transfers zu Z1_ und zu Z2_ stattfinden sollen.
Der Quellcode den ich mir für den FXP Transfer geschrieben habe sieht für ein einzelnes fest definiertes File folgendermaßen aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TMain_Form.TransferBtnClick(Sender: TObject); var port: string; begin FTPSrv_S1.ChangeDirUp; FTPSrv_S1.changedir('fertig');
FTPSrv_S1.sendcmd('PASV');
port := ''; port := Copy(Trim(FTPSrv_S1.lastcmdresult.text.Text), 24, MaxInt); Delete(port,length(port)-1,2);
FTPSrv_Z1.sendcmd('PORT ' + port);
FTPSrv_Z1.sendcmd('STOR ' + 'schnitt.mxf');
FTPSrv_S1.sendcmd('RETR ' + 'schnitt.mxf');
FTPSrv_Z1.GetResponse([110, 125, 150]); FTPSrv_S1.GetResponse([110, 125, 150]); FTPSrv_Z1.GetResponse([225, 226, 250]); FTPSrv_S1.GetResponse([225, 226, 250]); end; |
Ich bin für Tipps, Hilfen, Unterstützung etc. meeeehr als dankbar
Viele Grüße,
Torben
---
Moderiert von
Narses: Beiträge zusammengefasst---
Ergänzung:
Das Limit für den Quellserver liegt bei 4 FTP Transfers pro Host, das heißt S1 hat 4 Transfers und S2 auch.