Techniken zum Schreiben einer skalierbaren Website

8

Ich bin neu in der Skalierbarkeit der Website. Können Sie mir einige Techniken vorschlagen, um eine Website für eine große Anzahl von Benutzern skalierbar zu machen?

    
webkul 12.07.2009, 16:50
quelle

10 Antworten

10

Wenn Sie erwarten, dass Ihre Site die Möglichkeiten eines einzelnen Servers übersteigt, müssen Sie sorgfältig planen. Design so, dass Folgendes möglich ist: -

  • Machen Sie es so, dass Ihre Datenbank auf einem separaten Server sein kann. Das ist normalerweise nicht zu schwer.
  • Stellen Sie sicher, dass Ihr gesamter statischer Inhalt in ein CDN verschoben werden kann, da dies normalerweise Ihre Server stark entlastet.
  • Seien Sie bereit, eine Menge Geld für Hardware auszugeben. Mehr RAM und schnellere Festplatten helfen viel.
  • Es wird viel schwieriger, wenn Sie entweder die Datenbank oder den php von einem einzelnen Server auf mehrere Server aufteilen müssen, also optimieren Sie alles, von Ihrem Code, Ihrem Datenbankschema, Ihrer Serverkonfiguration und allem, was Sie sich vorstellen können setze diesen letzten Schritt so lange wie möglich ab.

Abgesehen davon können Sie nur Ihre Website testen, herausfinden, wo die Engpässe sind und versuchen, sie zu entwerfen.

    
Rik Heywood 12.07.2009, 17:20
quelle
17
  1. Testen Sie Ihre Website unter starker Belastung.
  2. Überwachen Sie alle Statistiken
  3. Engpass finden
  4. Bottleneck beheben
  5. Gehe zurück zu 1

viel Glück

    
Evert 12.07.2009 16:55
quelle
4

Sehen Sie sich dieses Gespräch von Rasmus Lerdorf (PHP-Entwickler) an

Besonders Seite 8 und darüber hinaus.

    
Ólafur Waage 12.07.2009 17:11
quelle
3

Vielleicht möchten Sie sich diese Ressource ansehen - highscalability.com .

    
RichardOD 12.07.2009 17:09
quelle
2

Einige Leute haben Werkzeuge zur Identifizierung von Engpässen erwähnt, und das ist natürlich notwendig. Sie können keine produktive Zeit damit verbringen, etwas zu beschleunigen, ohne zu wissen, wo es langsam ist. Aber die andere Sache, die Sie wissen müssen, ist, wo Ihre Zielskalierbarkeit liegt. Ist es ein gutes Preis-Leistungs-Verhältnis, ein paar Monate damit zu verbringen, dass Ihre Website auf die gleiche Anzahl von Nutzern skaliert wird wie Twitter, wenn sie von drei Personen im HR-Bereich genutzt wird? Haben Sie eine bekannte Rate von Transaktionen oder Antwort-Latenz oder Anzahl der Benutzer in den Anforderungen des Produkts? Wenn ja, richten Sie diese Zahlen mit Ihrer Optimierungsstrategie aus. Wenn nicht, finde diese heraus , bevor du der Performance-Ratte nach unten jagst.

    
user23743 12.07.2009 18:36
quelle
1

Sehr ähnlich: Wie funktioniert PHP richtig?

Skalierbarkeit ist kein kleines Thema und sicherlich mehr Material, als vernünftigerweise in einer einzigen Frage abgedeckt werden kann.

Bei einigen Arten von Anwendungen beispielsweise können Joins (in SQL) nicht skaliert werden, was alle Arten von Caching- und Shard-Strategien hervorbringt.

Beanstalk ist ein weiteres Skalierbarkeits- und Performance-Tool in leistungsstarken PHP-Sites. Wie Memcache (andere Art).

    
cletus 12.07.2009 17:25
quelle
1

Das größte Problem für die Skalierbarkeit sind normalerweise gemeinsam genutzte Ressourcen wie DBMS. Das Problem tritt auf, weil DBMS normalerweise keine Möglichkeit haben, Konsistenzgarantien zu lockern.

Wenn Sie die Skalierbarkeit erhöhen möchten, wenn Sie etwas wie MySQL verwenden, müssen Sie Ihr Schemadesign ändern, um die Konsistenz zu verbessern.

Sie können z. B. Ihr Datenbankschema trennen, um Ihr normalisiertes Datenmodell für Schreibvorgänge und einen replizierten schreibgeschützten denormierten Teil für die 90% der Lesevorgänge zu erhalten. Die schreibgeschützten Daten können auf mehrere Server verteilt werden.

Eine weitere Möglichkeit, die Skalierbarkeit einer Datenbank zu erhöhen, besteht darin, die Daten z. Trennen Sie die Daten für jede Abteilung in eine Datenbank und aggregieren Sie sie entweder im ORM oder im DBMS.

    
Hans Malherbe 12.07.2009 19:03
quelle
1

In der Reihenfolge der Wichtigkeit:

  1. Wenn Sie PHP verwenden, verwenden Sie einen Opcode-Cache wie APC . (Dies ist wichtig genug, um in der nächsten PHP-Generation integriert zu sein.)

  2. Verwenden Sie YSlow oder Google Page Speed ​​, um Engpässe zu identifizieren. (Dadurch werden strukturelle Probleme mit Ihrer Website aufgedeckt, die sich sowohl auf die Client- als auch auf die Serverleistung auswirken.)

  3. Stellen Sie sicher, dass Ihr Webserver eine gültige Expires-Kopfzeile für statischen Inhalt (Bilder, Javascript, CSS) sendet, sodass der Browser sie ordnungsgemäß zwischenspeichern kann. (YSlow wird Sie auch davor warnen.)

  4. Verwenden Sie einen HTTP-Beschleuniger wie Varnish . ( Dieses Bild sagt alles - und sie hatten bereits einen HTTP-Beschleuniger an Ort und Stelle.)

Søren Løvborg 12.07.2009 17:53
quelle
0

Entwickeln Sie Ihre Website mit festen OOP-Techniken. Sie brauchen Ihre Site, um modular zu sein, da nicht alle Leistungsengpässe zu Beginn offensichtlich sind. Seien Sie bereit, Teile Ihrer Website umzuformen, wenn der Verkehr zunimmt. Der erste Satz, den ich geschrieben habe, wird dir helfen, es einfacher und sicherer zu machen. Verwenden Sie außerdem eine testgetriebene Entwicklung, da Refaktor neue Fehler bedeutet, und gute TDD sind gut, um sie zu erfassen, bevor sie in Produktion gehen.
Trennen Sie so viel wie möglichen Client-seitigen Code vom serverseitigen Code, da diese wahrscheinlich von verschiedenen Servern bereitgestellt werden, wenn Ihr Website-Datenverkehr dies rechtfertigt.
Lesen Sie Artikel (lesen Sie zum Beispiel die YSlow-Tipps).

GL

    
Itay Moav -Malimovka 12.07.2009 17:10
quelle
0

Sehen Sie sich zusätzlich zu den anderen Vorschlägen die Aufteilung Ihrer Websites in Ebenen an, wie in Multi-Tier-Architektur . Wenn Sie das richtig gemacht haben, können Sie dann einen Server pro Tier verwenden.

    
md1337 08.10.2010 15:50
quelle

Tags und Links