Ich versuche, eine Webanwendung zu erstellen, die Youtube ähnelt (es ist kein Imitat), aber ich schätze, ich weiß nicht sehr gut, wie Videos im Internet dargestellt werden.
Ich weiß, wie man normale datenbankgestützte Webanwendungen erstellt, aber nichts, was mit der Skalierbarkeit von Youtube vergleichbar wäre. Alle Anwendungen, die ich bisher erstellt habe, wurden auf einem Server ausgeführt, wobei die Dateien auf demselben Rechner wie der Webserver gespeichert waren.
Wie kann man den Anwendungsserver vom Dateispeicher und vom Medienserver entkoppeln?
Ich möchte mehr oder weniger 4 Maschinen (Maschinencluster)
1.) Anwendungsserver -- Präsentieren die Webseite, verarbeiten Benutzer-Uploads, verbinden den Flash-Player des Benutzers mit dem richtigen Medienserver usw.
2.) Datenbank-Splitter -- Speichern von Benutzerinformationen, Prüfen von Favoriten, etc.
3.) Dateiablage -- Speichern der Mediendateien
4.) Medienserver -- Servieren der Mediendateien
Wie kann ich das alles miteinander verbinden? Welche Technologien sollte ich nutzen? Wo kann ich mehr über die Architektur erfahren?
Wie funktioniert die Einbettung von Flash auf Youtube? Ich möchte meinen Flash-Player auf anderen Websites einbetten und ihn mit meiner Architektur verbinden.
Anmerkung: Ich habe mich damit beschäftigt: http://highscalability.com/youtube-architecture
Aber ich habe immer noch nicht verstanden, wie das alles zusammenhängt.
Kann mir jemand in einfachen Worten erklären, wie all diese Dinge funktionieren?
Gibt es spezielle Client-Server, die intern laufen, um all diese Dinge zwischen den Anwendungsservern, dem Dateispeicher usw. zu verteilen? Läuft alles über HTTP mit JSON, was ist hier los?
Gracias