Inhaltsverzeichnis
Was ist Skalierbarkeit?Skalierbarkeit ist die wünschenswerte Eigenschaft eines Systems, Netzwerks oder Prozesses, die seine Fähigkeit anzeigt, ohne Qualitätsverlust zu reagieren und sich anzupassen, oder das kontinuierliche Beschäftigungswachstum fließend zu bewältigen, um bereit zu sein, größer zu werden, ohne die Qualität der angebotenen Dienstleistungen zu verlieren .
Man könnte sagen, wie groß die Fähigkeit unseres Systems ist, einen höheren Arbeitsaufwand mit Änderungen oder Erweiterungen zu unterstützen, die in Bezug auf Kosten, Zeit, Zeit und Komplexität vertretbar sind.
Arten der Skalierbarkeit
Generell kann man von vertikaler und horizontaler Skalierung oder einer Kombination aus beidem sprechen.
Vertikale Skalierung
Es besteht im Wesentlichen darin, die Kapazität eines oder mehrerer spezifischer Elemente unserer Architektur zu erhöhen, zum Beispiel den Speicher unseres zentralen Servers zu erweitern oder die CPUs durch andere schnellere zu ersetzen. Zusammenfassend lässt sich sagen, dass Sie die Kapazitäten des Servers erhöhen, was bei der Virtualisierung sehr üblich ist und wir sagen, dass der Server zu diesem Zeitpunkt 30% des verfügbaren RAMs haben wird.
Horizontale Skalierung
Es ist diejenige, die wir im Tutorial detailliert beschreiben werden, basiert auf der Erhöhung der Anzahl der Knoten, die dieselbe Aufgabe ausführen, indem unterschiedliche Planungsarten verwendet werden. Wenn wir beispielsweise einen gesättigten Webserver haben, fügen wir einen weiteren hinzu, um die Last auszugleichen.
Arten von Webarchitekturen basierend auf Ebenen.
Wir werden über Architekturen sprechen, die mit Linux-Systemen angewendet werden können, mit Open-Source-Tools werden wir von den einfachsten zu einigen ziemlich fortschrittlichen gehen, die horizontale Skalierbarkeit und Ausfallsicherheit bieten. Alle diese Architekturen können in jedem angewendet werden PaaS oder mit eigener Infrastruktur.
1. Ein-Ebenen-Architektur
Es ist das einfachste von allen, bei dem es nur einen Server mit Apache und MySQL gibt, auf den aus der Ferne zugegriffen werden kann. Es kommt sehr häufig auf Seiten mit geringer Zugriffsmarge oder Testumgebungen vor, bietet keine Toleranz gegenüber Fehlern und es ist schwierig, es horizontal zu verwenden.
2. Zweistufige Architektur
Diesmal haben wir die Datenbank vom Webserver getrennt und bieten ein wenig Fehlertoleranz. Auf diese Weise kann der Webserver bei einem Ausfall der Datenbank datenbankunabhängig Inhalte statisch anbieten. Und falls der Webserver ausfällt, können wir immer noch auf die Informationen zugreifen, indem wir einen neuen Webserver erneut einrichten.Das Design weist einige Mängel auf, da es nicht sehr skalierbar ist.
3. Dreischichtige Architektur
Dieses Mal verwenden wir einen Load Balancer, der alle Anfragen von Benutzern empfängt. Dieses Mal bieten wir ein skalierbareres Design an, sodass wir bei steigender Auslastung weitere Webserver hinzufügen und skalieren können. Wir können sogar Autoscaling anwenden, sodass Webserver bei einer bestimmten Auslastung oder zu Stoßzeiten automatisch hinzugefügt werden. Das Problem bei diesem Design ist, dass wir unsere Datenbank sättigen können.
4. Vierschichtige Architektur
Jetzt verwenden wir einen Load Balancer und einen Memcached, um das System skalierbarer zu machen. Mit diesem Design können wir zusätzlich zur Fehlertoleranz so viele Datenbanken und Webserver wie nötig hinzufügen. Wir können die Last zwischen den Datenbanken aufteilen mit KASSANDRA bietet eine Multi-Node-Implementierung. Dieses Design ist viel komplexer, aber ich füge eine viel größere Fehlertoleranz und die Möglichkeit hinzu, alle seine Ebenen zu skalieren.
5. Fünfstufige Architektur
Der Inhalt einer Webseite kann in statische und dynamische unterteilt werden. Zum Beispiel teilen wir die Webschicht in einen Apache-Server und einen anderen mit JAVA-Anwendungen auf, auf denen Jetty oder JBoss ausgeführt wird. Apache stellt den statischen Inhalt bereit, während der Anwendungsserver den dynamischen oder spontanen Inhalt verarbeitet. Ein Beispiel hierfür kann der FAQ-Bereich einer Support-Website sein, da es sich lediglich um statische Inhalte handelt, die von APACHE / NGINX bearbeitet werden können.
VERGRÖSSERN
6. Sechsstufige Architektur
Wir können etwas eleganter sein und ein Content Delivery Network (CDN) hinzufügen, oder was in AWS bekannt ist Amazon CloudFront-CDNWir haben beispielsweise eine E-Learning-Website und unsere Benutzer laden die Leitfäden als PDF oder Videos von unserer Website herunter. Wir können die gesamte Bandbreite für Downloads einsparen, indem wir sie von einem CDN anbieten, das sich darum kümmert. Der Rest des Webs kann auf unserer Infrastruktur ausgeführt werden.
VERGRÖSSERN