Frage zur Effizienz

kevkev

Erfahrenes Mitglied
Hallo,

Ich hab vor, einen kleinen Upload-Service für interne Zwecke aufzusetzen, der übers Internet funktionieren soll.
Anfangs wollte ich die MySQL-DB zentral halten, damit Backups schneller und einfacher gehen.

Zurzeit sieht mein Aufbau über mehrere Server folgendermaßen aus:
  1. Beim Upload wird zufällig ein Server aus einer Liste ausgewählt
  2. Die Datei wird bei einem Server gespeichert
  3. Die Informationen über die Datei auf dem entfernten Rechner liegen zentral auf der DB vom Hauptserver

Das passiert nun wenn ein User eine Datei runterladen will:
  1. Der entfernte Server ruft die Infos über die Datei vom zenrtralen MySQL Server ab (unteranderem wo die Datei liegt)
  2. Nachdem die Infos geholt wurden, gibt der entfernte Rechner die Datei zum Download frei

Ist das effizient?

So sieht das genau aus:
http://img502.imageshack.us/img502/4792/server7by.jpg

Sollte ich eher je Server eine MySQL-DB anlegen? Oder direkt einen extra Server zulegen, der nur für MySQL gedacht ist?

Für die Administrierung der Dateien über ein Script wäre es natürlich am einfachsten über einen extra MySQL-Server oder die MySQL-DB am Hauptserver.

Was meint Ihr?

Gruß Kevin
 
Zuletzt bearbeitet:
Hallo,

warum schickst du dem User nicht direkt auf den zweiten File-Server? Damit würde zumindest die Download-Last vom DB-Server genommen werden. Und dass die Anfragen "Wo liegt welche Datei?" so viel Leistung beanspruchen, glaube ich nicht.

Mamphil
 
Hi,

Zurzeit geht der User doch direkt auf den zweiten.
Nur der Server 2 selbst holt sich die Infos von der MySQL DB beim Hauptserver.

Nur wäre das Allg. viell. ein Nachteil, denn sobald der Hauptserver down ist, die MySQL DB kaputt ist, o.Ä. funktionieren alle anderen Server nicht mehr, da die Ihre Infos über den Hauptserver´s MySQL DB beziehen.

Dann wäre es viell. sinnvoll einen Hoster für MySQL Datenbanken zu mieten, die machen regelmäßige Backups (würd Ich mal schätzen) und sind entsprechend gesichert.

Edit:
Ich dachte Ich hätte mal so einen gesehen, aber kennt viell. jemand einen Datenbank Provider?

Gruß Kevin
 
Zuletzt bearbeitet:
Sorry, ich habe deine Grafik falsch gelesen.

Eigentlich muss es doch so laufen:
- User fordert Datei abc.exe vom Hauptserver an.
- Hauptserver guckt, auf welchem Server die Datei liegt und ob der User die Datei herunterladen darf
- Der Hauptserver erlaubt dem Download-Server, die Datei dem Download freizugeben, z. B. über eine temporäre Session
- Der Hauptserver gibt ein Redirect auf den Download-Server aus
- Der Download beginnt.

Wie gesagt: Das sollte schon effizient sein. Wie immer bist du aber gegen einen Ausfall des Hauptservers nicht wirklich gut geschützt. Dafür müsstest du ein Cluster erstellen, da auch die Domains bei einem Ausfall umgeroutet werden müssen.

Mamphil
 
Ist denn solch ein Aufwand für diese internen Zwecke gerechtfertigt? Für mich klingt das alles etwas übertrieben.

Prinzipiell würde ich beim Upload einer neuen Datei den Speicherort nicht einfach zufällig auswählen. Ich würde zusätzlich auf eine Statistik zurückgreifen und die Entscheidung rein ökonomisch fällen, um die Belastung gerecht zu verteilen.
 
Hi,

Nicht ganz, die einzelne Server werden über Subdomains angesprochen.
Nicht der Hauptserver schaut nach, sondern der Server2 selber, fragt bei der MySQL DB nach.

Das wären ca. 2 Querys, einmal für die Infos und einmal für die Statistik.

Zu dem Ausfall:
Eben, und das ist soweit nochn Problem.
Wenn Ich mir meine Subdomain´s extra Hoste, und die direkt auf eine IP der einzelnen Server weiterleitet, wäre Ich schonmal bei einem Ausfall des Hauptservers Geschützt.
Dann kann Ich unter der Domain auch noch die Subdomains erreichen, also die einzelnen Server.

Wenn Ich mir dann noch einen extra MySQL auf einen extra Server anlege (muss ja kein großer sein) dann bin Ich komplett gegen eines Ausfalles des Hauptservers geschützt.
Obwohl, das Uploadformular befindet sich ja auch dem Hauptserver :-/.
Außer Ich spiele die Index Seite jeweils auf jeden Server.

@Gumbo:
Mhh, da könntest du recht haben. Aber falls Ich einmal ein größeres Projekt auf die Beine stellen will, das nach dem internen Projekt folgen wird, will Ich mich ein wenig auskennen und das ganze durchspielen / testen und auf Mögliche "Gefahren" bereit sein und mit Ausfälle umgehen können.

Aber Ich könnte das ganze auch lokal im Netzwerk über VM´s durchspielen :suspekt:

Ich habs mir mal ausgespielt wie Ich nicht an den Hauptserver bunden bin:
http://img242.imageshack.us/img242/3329/unbenannt6hp.jpg
(Statistik nicht miteinbezogen).

Soweit so gut, jetzt erstmal die VM´s installieren und das ganze praktisch durchspielen ;).

Danke an alle.

Weitere Vorschläge sind willkommen, aber der Thread ist soweit mal Erledigt.

Gruß Kevin
 

Neue Beiträge

Zurück