Frage

Angenommen, ich wollte die Stapel -Überlauf -Website entwickeln. Wie schätze ich die Menge an Rohstoffhardware, die erforderlich ist, um diese Website zu unterstützen, unter der Annahme von 1 Million Anfragen pro Tag? Gibt es Fallstudien, die die Leistungsverbesserungen in dieser Situation erklären?

Ich weiß, dass der I/O -Engpass der Haupttipp in den meisten Systemen ist. Was sind die möglichen Optionen, um die E/A -Leistung zu verbessern? Einige von ihnen kennen ich

  1. zwischengespeichert
  2. Reproduzieren
War es hilfreich?

Lösung

Sie können die I/A -Leistung auf verschiedene Weise verbessern, je nachdem, was Sie für Ihr Speicher -Setup verwenden:

  1. Erhöhen Sie die Größe der Dateisystemblock, wenn Ihre App eine gute räumliche Lokalität in der I/OS anmeldet oder große Dateien verwendet.
  2. Verwenden RAID 10 (Striping + Spiegelung) für die Leistung + Redundanz (Scheibenversagensschutz).
  3. Verwenden Sie schnelle Datenträger (Leistung weise: SSD> FC> SATA).
  4. Trennen Sie die Arbeitsbelastung zu verschiedenen Tageszeiten. zB Backup während der Nacht, normale App I/O tagsüber.
  5. Schalte aus Ältere Updates in Ihrem Dateisystem.
  6. Cache NFS -Datei behandelt auch bekannt Heuhaufen (Facebook), wenn Daten auf dem NFS -Server gespeichert werden.
  7. Kombinieren Sie kleine Dateien zu größeren Stücken, auch bekannt als Großer Tisch, Hbase.
  8. Vermeiden Sie sehr große Verzeichnisse, dh viele Dateien im selben Verzeichnis (stattdessen Dateien zwischen verschiedenen Verzeichnissen in einer Hierarchie teilen).
  9. Verwenden ein zusammengeklustert Speichersystem (Ja, nicht gerade Warenhardware).
  10. Optimieren/entwerfen Sie Ihre Anwendung für sequentielle Datenträgerzugriffe, wann immer möglich.
  11. Verwenden memcached. :)

Möglicherweise möchten Sie sich den Abschnitt "Lektionen Learned" ansehen Stackoverflow -Architektur.

Andere Tipps

Schauen Sie sich dieses handliche Werkzeug an:

http://www.sizinglounge.com/

und ein weiterer Leitfaden von Dell:

http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555

Wenn Sie Ihre eigene stackoverflow-ähnliche Community wünschen, können Sie sich anmelden Stackkexchange.

Sie können hier einige Fallstudien lesen:

Hochskalierbarkeit - Wie Rackspace jetzt MapReduce und Hadoop verwendet, um Terabyte von Daten abzufragenhttp://highscalability.com/how-rackspace-now-sses-mapreduce-and-hadoop-query-terabyts-data

http://www.gear6.com/gear6-downloads?fid=56&dlt=Case-study&ls=veoh-case-study

1 Million Anfragen pro Tag sind 12/Sekunde. Der Stack -Überlauf ist klein genug, dass Sie (mit interessanten Normalisierungs- und Komprimierungsstricks) vollständig in den RAM eines 64 GByte Dell PowerEdge 2970 passen können. Ich bin mir nicht sicher, wo Caching und Replikation eine Rolle spielen sollen.

Wenn Sie ein Problem haben, genug über die Normalisierung nachzudenken, ist ein PowerEdge R900 mit 256 GB verfügbar.

Wenn Sie keinen einzigen Ausfallpunkt mögen, können Sie einige davon anschließen und nur Updates über einen Socket (vorzugsweise auf einer separaten Netzwerkkarte) überschreiten. Selbst eine Spitzenbelastung von 12 km/Sekunde sollte für ein Haupt-Memory-System kein Problem sein.

Der beste Weg, um den E/A -Engpass zu vermeiden, besteht darin, I/O (so viel wie möglich) nicht zu tun. Das bedeutet, dass eine Prävayler-ähnliche Architektur mit Charge-Schreibvorgängen (kein Problem, um einige Sekunden von Daten zu verlieren), im Grunde genommen eine Protokolldatei und zur Replikation auch in einen Socket.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top