Skalierbare Webarchitektur

Was ist Skalierbarkeit?

Skalierbarkeit ist die wünschenswerte Eigenschaft eines Systems, Netzwerks oder Prozesses, die auf seine Fähigkeit hinweist, zu reagieren und sich anzupassen, ohne an Qualität zu verlieren, oder das kontinuierliche Wachstum der Arbeit auf flüssige Weise zu steuern, um darauf vorbereitet zu sein, größer zu werden, ohne an Qualität zu verlieren die angebotenen Dienstleistungen.

Man könnte sagen, wie groß die Kapazität unseres Systems ist, um eine größere Arbeitslast mit Modifikationen oder Erweiterungen zu unterstützen, die in Bezug auf Kosten, Zeit und Komplexität angemessen sind.

Arten der Skalierbarkeit

Im Allgemeinen können wir über vertikale und horizontale Skalierung oder eine Kombination von beiden sprechen.

Vertikale Skalierung

Es besteht im Wesentlichen darin, die Kapazität eines oder mehrerer konkreter Elemente unserer Architektur zu erhöhen, beispielsweise den Speicher unseres zentralen Servers zu erweitern oder die CPUs durch andere mit höherer Geschwindigkeit zu ersetzen. Zusammenfassend lässt sich sagen, dass die Serverfähigkeiten erhöht werden, was bei der Verwendung von Virtualisierung häufig vorkommt und dass zu diesem Zeitpunkt auf dem Server 30% des Arbeitsspeichers zur Verfügung stehen.

Horizontale Skalierung

Es ist das, was wir im Tutorial beschreiben werden. Es basiert auf der Erhöhung der Anzahl der Knoten, die dieselbe Aufgabe ausführen, unter Verwendung verschiedener Planungstypen. Wenn wir beispielsweise einen gesättigten Webserver haben, fügen wir einen weiteren hinzu, um die Last auszugleichen.

Arten der Webarchitektur basierend auf Ebenen.

Wir werden über Architekturen sprechen, die mit Linux-Systemen angewendet werden können. Mit Open-Source-Tools werden wir von den grundlegendsten bis hin zu hochentwickelten Architekturen mit horizontaler Skalierbarkeit und Ausfallsicherheit wechseln. Alle diese Architekturen können in jedem PaaS oder mit einer eigenen Infrastruktur angewendet werden.

See also  Fix Fehler 0x80070422 Windows Update Update Windows 10

1. Einstufige Architektur

Es ist das einfachste von allen, bei dem es nur einen Server mit Apache und MySQL gibt, auf den remote zugegriffen werden kann. Es ist sehr häufig bei Seiten mit wenig Spielraum für Besuche oder Testumgebungen, es bietet keinen Spielraum für Fehlertoleranzen und es ist schwierig, es für horizontales Wachstum zu verwenden.

9781484205129_Fig01-06.jpg

2. Architektur auf zwei Ebenen

Dieses Mal haben wir die Datenbank vom Webserver getrennt, um ein wenig Fehlertoleranz zu gewährleisten. Auf diese Weise kann der Webserver bei einem Datenbankfehler statischen Inhalt anbieten, der nicht von der Datenbank abhängt. Und falls der Webserver ausfällt, können wir trotzdem auf die Informationen zugreifen, indem wir einen neuen Webserver erneut auslösen. Das Design weist mehrere Mängel auf, da es sich nicht um ein sehr skalierbares Design handelt.

2.jpg

3. Dreistufige Architektur

Dieses Mal haben wir begonnen, einen Load Balancer zu verwenden, der alle Anforderungen von Benutzern empfängt. Dieses Mal bieten wir ein skalierbareres Design an, damit wir bei steigender Auslastung mehr Webserver hinzufügen und skalieren können. Wir können sogar die automatische Skalierung anwenden, sodass Webserver ab einer bestimmten Auslastung oder zu Spitzenzeiten automatisch hinzugefügt werden. Das Problem bei diesem Design ist, dass wir unsere Datenbank sättigen können.

3.jpg

4. Architektur auf vier Ebenen

Jetzt verwenden wir einen Load Balancer und einen Memcached, um das System skalierbarer zu machen. Mit diesem Design können wir nicht nur Fehlertoleranz bieten, sondern auch so viele Datenbank- und Webserver wie nötig hinzufügen. Mit CASSANDRA können wir die Last zwischen Datenbanken aufteilen, indem wir eine Multinode-Implementierung anbieten. Dieses Design ist viel komplexer, aber ich füge viel mehr Fehlertoleranz und die Fähigkeit hinzu, alle seine Ebenen zu skalieren.

See also  Projekt 2013 - Dauer der Aufgaben

4.jpg

5. Fünf-Ebenen-Architektur

Der Inhalt einer Webseite kann in statische und dynamische unterteilt werden. Zum Beispiel teilen wir die Webebene in einen Apache-Server und einen anderen mit JAVA-Anwendungen auf, auf denen Jetty oder JBoss ausgeführt wird. Apache bietet statischen Inhalt an, während der Anwendungsserver sich um den dynamischen oder generierten Inhalt kümmert. Ein Beispiel hierfür kann der FAQ-Bereich einer Support-Website sein, da rein statische Inhalte von APACHE / NGINX verarbeitet werden können.

5.jpg

6. Sechsstufige Architektur

Wir können etwas eleganter sein und ein Content Delivery Network (CDN) oder das, was in AWS als Amazon CloudFront CDN bezeichnet wird , hinzufügen. Beispielsweise haben wir eine E-Learning-Website und unsere Benutzer laden die PDF-Handbücher oder -Videos von herunter unsere Website Wir können die gesamte Bandbreite für Downloads einsparen, indem wir sie von einem CDN anbieten, der sich darum kümmert. Der Rest des Webs kann auf unserer Infrastruktur ausgeführt werden.

6.jpg

Schlussfolgerungen
Wir haben mehrstufige Architekturen gesehen, die abhängig vom Webdatenverkehr angewendet werden können. Es ist ratsam, Architekturen zu erstellen, die in der Zukunft denken, dass sie die Fehlertoleranz skalieren und aufrechterhalten können, um Einbrüche im Web aufgrund von Ressourcenmangel oder Ausfall eines unverzichtbaren Knotens zu vermeiden. Indem wir einige dieser Designs zusammen mit anderen Empfehlungen wie Backups und Self-Deployments erstellen, können wir eine Website mit fehlertoleranter Betriebszeit von 99,9 anbieten.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *