2009-05-01 6 views
2

Mein Team entwickelt ein großes Musikportal in PHP. Es ist zu hoffen, dass das Portal innerhalb eines Jahres nach seiner Einführung eine Million Nutzer haben wird. Das Portal ermöglicht es Nutzern, Wiedergabelisten zu erstellen, Musik zu streamen und herunterzuladen.Infrastruktur für ein großes PHP-Projekt erforderlich

Bis jetzt haben wir Anwendungen entwickelt, die von maximal etwa 1000 simultanen Benutzern verwendet wurden. Dieses Portal hat eine andere Größenordnung.

Ich möchte wissen, ob es Benchmarks zur Berechnung der Hardware-Speicheranforderungen und Bandbreitenanforderungen für solche große Projekte gibt.

Auch, wenn ein Content Delivery Network (CDN) alle verkehrsbezogenen Probleme oder etwas bestimmtes - wie Caching - behandelt werden muss.

Welche Datenbank wäre geeignet? Kann mySQL mit solchen Lasten umgehen oder ist etwas anderes erforderlich?

Dank

Vinayak

Antwort

1

Alle Anwendungen reagieren unterschiedlich auf große Last so keine klare Antwort gibt. Musikstreaming sollte hauptsächlich Bandbreitenprobleme verursachen, jedoch kann es auch zu Festplatten-IO kommen. Wenn auf den Inhaltsservern große Mengen an Speicher verfügbar sind, kann dies überwunden werden.

MySQL kann bei richtiger Skalierung große Mengen an Last verarbeiten. Wikipedia verwendet MySQL und behandelt eine große Anzahl von Treffern. Facebook ist ein weiterer großer Hitter mit MySQL.

Bearbeiten: http://highscalability.com/ ist eine großartige Ressource, um zu sehen, was andere getan haben.

1

mySQL wird auf dieses Niveau skalieren, aber das Spiel ändert sich signifikant von 1000 Benutzern auf 1 Million Benutzer. Haben Sie daran gedacht, AWS zu verwenden, um zusätzliche Hardware nach Bedarf hochfahren zu können? Sehen Sie eine PHP walkthrough for AWS hier, um Sie zu beginnen, wenn Sie denken, dass die Wolke ist, wo Sie sein müssen, und ich denke vielleicht.

5

Bis Sie tatsächlich diese Anzahl von Benutzern haben, sollten Sie nicht zu besorgt darüber sein. Eine der Regeln der Programmierung ist es, nicht zu optimieren, bis Sie tatsächlich Leistungsprobleme haben, und selbst dann nicht optimieren, bis Sie Informationen über haben, wobei die Leistungsprobleme sind. Genau jetzt hast du auch nicht.

Mit dem gesagt ... ja, MySQL kann maßstabsgetreu gemacht werden. Ja, Sie müssen möglicherweise Caching durchführen. Ja, ein CDN könnte hilfreich sein.

Starten Sie mit einem einzelnen Server, und wenn Sie darüber hinausgehen müssen, Profil, um herauszufinden, wo Ihre Engpässe sind und von dort gehen. Holen Sie sich jemanden, der weiß, was er tut, um Ihnen zu helfen, wenn Sie können.

1

Wie für dieses Musik-Portal besorgt ist, mit einem "Virtual Private Server" zu beginnen, so dass wir eine Kontrolle über das Streaming, Pufferungsmethoden, Konvertierung der Dateiformate haben wir auch eine vollständige Kontrolle zu installieren Open-Source-Bibliotheken, um die Skalierbarkeit und Leistung zu verwalten.

Wie Sie wissen, verwenden die berühmten Youtube MySQL zum Speichern und Versorgen der Daten für eine große Anzahl von Benutzern.Für weitere Informationen in Bezug auf die Skalierbarkeit lesen Sie in diesem Link: High Scalability Youtube Architechture

Wie Sie Ihre Zielgruppe größer wächst auf Datenbank-Clustering migrieren können und den Inhalt Caching.

1

Skalierbarkeit passiert, Sie werden das Design zu kompliziert, wenn Sie für die 1M Benutzer von Anfang an gehen.

Aber es wird helfen, Skalierbarkeit im Auge zu behalten. dieser sagte, hier sind einige Faustregeln:

Seiten Halten staatenlos
Seiten, die auf $ _SESSION verlassen/Logindaten oder Datenbankinhalte erfordern Parsen usw.
Sie statische HTML-Seiten auf Basis eines Content generieren könnte -change-Ereignis

N Maschinen
Für webservers das bedeutet einfach nicht Benutzerinhalte auf 1 Maschine hochladen, aber es zu einem Cluster distibute. Verwenden Sie für Datenbanken 1 Datenbankserver zum Schreiben von Daten und N Server zum Lesen (veralteter) Daten.

Caching
generieren und auch Daten von Cache zu sammeln Zeit in Anspruch nimmt. Nur Cache-Operationen, die langsamer sind.

1

Der Aufbau von skalierbaren Systemen ist ein Grad der zukünftigen Vorhersage, dass es fast unmöglich ist, richtig zu werden, und sorgfältig alles für die Skalierung für immer Ergebnisse in der Regel in Überarchitektur zu bauen.

Stattdessen würde ich sagen Build mit den nächsten paar Stufen der Erweiterung im Auge behalten, und arbeiten von dort. Wenn Sie beispielsweise eine Website mit hohem Content erstellen, sind Bandbreite und Speicherplatz wahrscheinlich ein Schwachstellen-Engpass. Stellen Sie daher sicher, dass alle Ihre Content-URLs generiert werden. Wenn Sie also zu einem CDN wechseln, gilt dies nicht Ich muss viel von der Seite umcodieren. Eine der Sachen, die ich empfehlen würde, ist mit jeder Datenbankabfrage zu beginnen, die irgendwie markiert wird, ob sie gerade liest oder auch Schreibzugriff benötigt, da dies das Abspalten in ein replizierendes Datenbankmodell viel einfacher macht Straße.

Verwandte Themen