Frage

Was Designmuster oder Techniken haben Sie verwendet, die speziell darauf ausgerichtet, Skalierbarkeit sind?

Muster wie die Flyweight Muster scheint mir um eine spezielle Version der Werk Muster , um eine hohe Skalierbarkeit zu fördern oder wenn im Speicher oder Speicherbeschränkungen zu arbeiten.

Was haben andere Sie verwendet? ( Denormalisierung von Datenbanken , etc finden Sie.) Sie, dass die Regeln, wenn eine hohe Verfügbarkeit und Skalierbarkeit ändern Sie Ihr primäres Ziel ist es?

Mögliche Situationen sind:

  • Mobile Geräte mit begrenztem Speicher, Rechenleistung und Konnektivität als ein Desktop oder Laptop
  • Hohe Anzahl der Benutzer auf begrenzte Hardware (Caching-Strategien, etc.)
  • Optimierung von Datenbankschema für die Effizienz anstelle eines normierten Design (zum Beispiel Sharepoint Spaltenumbruch für die Lagerung)
War es hilfreich?

Lösung

Einige Muster, die in den Sinn kommen:

  • Stateless Anwendung
  • Lose Kopplung
  • Asynchrony
  • Lazy Loading
  • Caching
  • Parallelism
  • Partitionierung
  • Routing

Einige Quellen an:

Andere Tipps

Machen Sie die Anwendung als staatenlos wie möglich. Wird es leichter zu einer Serverfarm anzupassen.

Nichts ist frei - es kommt darauf an, was sind die akzeptable Kompromisse, um Ihre Geschäftsziele zu erreichen. Die Hauptvariablen sind:

  • Kosten
  • Verfügbarkeit
  • Konsistenz
  • Survivability (zum Beispiel Partition Tolerance)

Ein ausgezeichnetes Papier zu diesem Thema zu lesen.

Ich glaube, eine gute Metrik, um die „Kosten / user“ Kurve zu untersuchen sei und versuchen, es zu linearer Progression (vorausgesetzt, die akzeptablen Kosten pro Benutzer einen bekannten Parameter: -) beibehalten

Das Design Patterns hat eine Rolle spielen, aber es ist die übergeordnete Architektur, die am wichtigsten ist. Man hätte sehr gründlich gewesen auf Modulebene, aber verpassten Netzwerk Constraints und Skalierbarkeit leidet als Folge.

Am Ende des Tages, ich glaube, man muss sich fragen, (selbst): für das Scheitern Typ X, wie viele „Benutzer“ betroffen sein können und wie lange

Es wird immer ein SPOF (Single Point of Failure) irgendwo, aber man kann ein System so konstruieren, dass dieser SPOF näher an die Endpunkte bewegt wird (zum Beispiel Benutzer). obwohl in vielen Fällen ist der SPOF aus der Kontrolle der Anwendung z.B. Netzwerk POP nicht verfügbar.

Wie auch immer, ich könnte Stunden zum Thema verbringen ...

Die POSA (Muster-Oriented Software Architecture) Bücher sind eine große Quelle für solche Muster.

POSA 4 , insbesondere mit verteilten Computing betrifft, sondern alle die volumns sind voller Skalierbarkeit Muster.

Was ich mit Stateless Anwendungslogik beobachtet haben, ist, dass es viele andere andere Anforderungen wie Sperren auf DB, die schließlich dann arbeiten gegen Skalierbarkeit einführt.

Lassen Sie uns sagen, dass die Anwendung bereitgestellt Logik über eine Serverfarm staatenlos ist dann für eine Anforderung, die zur gleichen Zeit zwei Knoten eines Clusters trifft wir Konzepte wie DB einführen müssen, um Sperren, um sicherzustellen, nur eine Anforderung verarbeitet werden.

Ich beschäftige mich solche Situationen jetzt und frage mich, wie jeder andere auch mit solchen staatenlos Verhalten handelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top