Software Architektur (Teil 2)

Skalierbarkeit

Was genau soll skalierbar sein?

  • Anzahl der Anfragen
  • Zu Speichernde Daten
  • Anzahl der Benutzer

Vertikales Skalieren bedeutet den bestehenden Server mit besserer Hardware auf zu stocken.

Horizontales Skalieren bedeutet, die Anzahl der Server zu erhöhen und damit die Lasten aufteilen. Die Aufteilung ist einfach, wenn mein Programm „Stateless“ ist.

Datenbanken sind „Statefull“ und somit erfordern diese eine andere Vorgehensweise.

CAP Theorem

Consistency Level

„Strict Consistency“ bedeutet, dass jede Änderung sofort bei allen greift.

„Eventual Consistency“ bedeutet, dass die Änderung verzögert auftritt und somit die Änderung bei allen anderen auch verzögert greift.

Lese- vs Schreibvorgägne

Ich sollte in Erfahrung bringen, mit was die Datenbank wahrscheinlich am meisten zu tun hat.

Horizontales Skalieren

Ein Load Balancer ist eine Möglichkeit zum Skalieren, wobei sichergestellt werden muss, dass alle Server auf dieselben Daten zugriff haben.

Daten aufteilen (Sharding), z. B. nach Regionen (DE, FR, …) oder nach Hash (Consistent Hashing).

Daten duplizieren, das ist sehr hilfreich, wenn die Datenbanken sehr viel gelesen werden.

Quelle

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.