Wie große Websites können skaliert und auf massiven Datenverkehr optimiert werden?

7

Wie optimieren Websites wie Facebook und Twitter ihre Websites für massiven Datenverkehr? Abgesehen davon, dass Sie viel Geld für die Erlangung der besten Server ausgeben, was kann in Ihrem Code optimiert werden, um massiven Datenverkehr aufzunehmen?

Ich habe über das Zwischenspeichern Ihrer Seiten in statischem HTML gelesen, aber das ist für Websites sozialer Netzwerke, auf denen die Seiten ständig aktualisiert werden, unpraktisch.


quelle

Antworten:

10

Massive Websites wie Google, Facebook und Twitter erhalten nicht unbedingt die "besten" Server, da sie nicht eine kleine Anzahl von Hochleistungsservern ausführen, sondern eine massive Anzahl kleinerer und billigerer Server. Sie erwarten, dass Hardware stirbt und ersetzt wird, und der Code ermöglicht dies.

Einige Dinge, die für Websites mit großem Maßstab typisch sind:

  • Sie verwenden keine SQL-Datenbanken wie mySQL. Stattdessen speichern sie Schlüsselwerte wie HBase oder Cassandra. mySQL und andere SQL-DBs sind zu langsam, wenn die Anzahl der Anforderungen sehr hoch ist.
  • Sie zwischenspeichern so viel wie möglich. HTML-Caching, wie Sie sagen. Benutzerdaten werden unter Verwendung von Dingen wie memcached im Speicher gespeichert.
  • Einige Websites, wie z. B. Reddit, speichern Seiten vor, bevor ein Benutzer sie überhaupt angefordert hat.
  • Berechnen Sie so viel wie möglich vor, Websites arbeiten in der Regel Dinge wie die Anzahl Ihrer Freunde (oder was auch immer) aus und speichern diese ebenfalls - ein wenig wie möglich erfolgt dynamisch.

http://highscalability.com/ ist eine großartige Website, um mehr darüber zu erfahren.

Steve Claridge
quelle
Ich habe Sie gewählt, da alle Ihre Aussagen hauptsächlich für die größten Anwendungen wie Google, Amazon und andere Websites ähnlicher Größenordnung zutreffen. Es ist jedoch zu beachten, dass es zu den meisten Regeln Ausnahmen gibt. Zum Beispiel verwendet YouTube immer noch MySQL, ebenso wie Digg, Flickr und angeblich AdWords (angeblich haben sie mit MySQL begonnen, es dann für eine "kommerzielle" Lösung fallen gelassen und sind dann zurückgegangen, als das nicht funktionierte).
Lèse Majesté
Auch wenn diese Arten von Top-Tier-Sites alle NoSQL-DBs verwenden, sind dies die extremen Randfälle. Es gibt verschiedene Definitionen / Skalierbarkeitsstufen. Und für die meisten großen Anwendungen im Unternehmensmaßstab ist es fraglich, ob NoSQL besser ist als eine herkömmliche relationale Datenbank. Ihre anderen Punkte sind jedoch genau richtig für alle Anwendungen, die Skalierbarkeit erfordern.
Lèse Majesté
1
@Lese - stimme vollkommen zu, aber das OP erwähnte Facebook und Twitter
Steve Claridge
3

Das Entladen des Datenbankverkehrs über Sharding ist wahrscheinlich eine der besten Möglichkeiten, um eine Site mit hohem Datenverkehr zu skalieren.

Die Reduzierung der Ladezeit von Seiten durch Komprimieren von Ressourcendateien mit gzip und das Kombinieren mehrerer Ressourcendateien zu einer, um die Anzahl der Anforderungen zu verringern, die der Browser stellen muss, ist ebenfalls eine sinnvolle Optimierung.


quelle
Wenn Sie über Sharding nachdenken
Lèse majesté
3

Ich dachte, ich würde HipHop für PHP erwähnen , das PHP in C ++ verwandelt und von Facebook entwickelt wurde . Ich glaube, Facebook hat auch an APC gearbeitet .

Andy
quelle
Nur für den Fall, dass HipHop PHP nicht in C ++ umwandelt, verbindet es die beiden Sprachen auf eine Weise, dass die Facebook-Logik hinter der Site in C ++ erfolgt (was viel schneller und CPU-benutzerfreundlich ist), aber die "Eingaben in diese Logik" sind gemacht von PHP.
Trufa
1
"Ja wirklich?" So zitieren Sie die HipHop-Site: HipHop wandelt Ihren PHP-Quellcode in hochoptimiertes C ++ um und kompiliert ihn dann mit g ++, um Binärdateien zu erstellen . Ich verstehe, dass es nur eine Teilmenge von PHP verarbeiten kann, da die dynamischeren Bits (denken eval) nicht einfach zu übersetzen sind ...
Andy