Skalierbarkeit

Skalierbarkeit ist die Eigenschaft eines Systems, um eine wachsende Menge an Arbeit zu leisten, indem Ressourcen zum System hinzugefügt werden.[1]

In einem (n wirtschaftlich Kontext ein skalierbarer Geschäftsmodell Impliziert, dass ein Unternehmen den Umsatz erhöhen kann, wenn sie erhöhte Ressourcen haben. Beispielsweise ist ein Paketliefersystem skalierbar, da mehr Pakete durch Hinzufügen weiterer Lieferfahrzeuge geliefert werden können. Wenn jedoch alle Pakete zum Sortieren zuerst durch ein einzelnes Lagerhaus gelangen müssten, wäre das System nicht so skalierbar, da ein Lagerhaus nur eine begrenzte Anzahl von Paketen verarbeiten kann.[2]

Im Computer ist Skalierbarkeit ein Merkmal von Computern, Netzwerken, Algorithmen, Netzwerkprotokolle, Programme und Anwendungen. Ein Beispiel ist a Suchmaschine, was die zunehmende Anzahl von Benutzern und die Anzahl der Themen unterstützen muss Indizes.[3] WebScale ist ein Computerarchitekturansatz, der die Fähigkeiten großer Cloud-Computing-Unternehmen in Unternehmens-Rechenzentren einbringt.[4]

In der Mathematik bezieht sich Skalierbarkeit hauptsächlich auf Schließung unter Skalarmultiplikation.

Beispiele

Das Incident Command System (ICs) wird von verwendet von Notfallmaßnahmen Agenturen in den Vereinigten Staaten. ICs können die Ressourcenkoordination von einem Pinselfeuer mit einem Einmotor bis zu einem zwischenstaatlichen Lauffeuer skalieren. Die erste Ressource vor Ort ermittelt das Kommando mit der Befugnis, Ressourcen zu bestellen und die Verantwortung zu delegieren (die Verwaltung von fünf bis sieben Beamten, die erneut auf bis zu sieben delegieren werden und mit dem Vorfall wächst). Wenn ein Vorfall erweitert wird, übernehmen mehr hochrangige Offiziere das Kommando.[5]

Maße

Die Skalierbarkeit kann über mehrere Dimensionen gemessen werden, wie z. B.:[6]

  • Verwaltungsskalierbarkeit: Die Fähigkeit für immer mehr Organisationen oder Benutzer, auf ein System zuzugreifen.
  • Funktions Skalierbarkeit: Die Fähigkeit, das System zu verbessern, indem neue Funktionen hinzugefügt werden, ohne vorhandene Aktivitäten zu stören.
  • Geografische Skalierbarkeit: Die Fähigkeit, die Wirksamkeit während der Ausdehnung von einer lokalen Region auf eine größere Region aufrechtzuerhalten.
  • Lastskalierbarkeit: Die Fähigkeit für a verteiltes System Um zu erweitern und zu verziehen, um schwerere oder leichtere Belastungen aufzunehmen, einschließlich der Leichtigkeit, mit der ein System oder eine Komponente geändert, hinzugefügt oder entfernt werden kann, um die Änderung der Lasten aufzunehmen.
  • Generationskalierbarkeit: Die Fähigkeit eines Systems, durch die Einführung neuer Generationen von Komponenten zu skalieren.
  • Heterogene Skalierbarkeit ist die Fähigkeit, Komponenten von verschiedenen Anbietern zu übernehmen.

Domänen

  • A Routing -Protokoll wird in Bezug auf die Netzwerkgröße als skalierbar angesehen, falls die erforderliche Größe Routing-Tabelle auf jedem Knoten wächst als O(Protokoll N), wo N ist die Anzahl der Knoten im Netzwerk. Einige früh Peer-To-Peer (P2P) Implementierungen von Gnutella hatte Skalierungsprobleme. Jede Knotenabfrage überflutet seine Anfragen an alle Knoten. Die Nachfrage an jedem Peer stieg im Verhältnis zur Gesamtzahl der Kollegen und übertraf schnell ihre Kapazität. Andere P2P -Systeme mögen Bittorrent Skalieren Sie gut, weil die Nachfrage an jedem Peer unabhängig von der Anzahl der Kollegen ist. Nichts ist zentralisiert, sodass das System ohne andere Ressourcen selbst auf unbestimmte Zeit expandieren kann.
  • Ein skalierbares Online -Transaktionsverarbeitung System oder Datenbankverwaltungssystem ist eine, die aufgerüstet werden kann, um mehr Transaktionen zu verarbeiten, indem neue Prozessoren, Geräte und Speicher hinzugefügt werden, und die einfach und transparent aktualisiert werden kann, ohne sie abzuschalten.
  • Die verteilte Natur der Domainnamensystem (DNS) ermöglicht es, effizient zu arbeiten und Milliarden von zu bedienen Gastgeber auf der Welt Internet.

Horizontal (skalieren) und vertikale Skalierung (skalieren)

Ressourcen fallen in zwei breite Kategorien: horizontal und vertikal.[7]

Horizontal oder skalieren

Skalieren horizontal (OUT/In) bedeutet, mehr Knoten zum (oder Entfernen von Knoten aus) einem System hinzuzufügen, z. B. Hinzufügen eines neuen Computers zu einer verteilten Softwareanwendung. Ein Beispiel könnte die Skalierung von einem Webserver auf drei beinhalten. High Performance Computing Anwendungen wie z. Seismische Analyse und Biotechnologie, skalieren Sie die Workloads horizontal, um Aufgaben zu unterstützen, die einst teur benötigt hätten Supercomputer. Andere Arbeitsbelastungen wie große soziale Netzwerke übertreffen die Kapazität des größten Supercomputers und können nur von skalierbaren Systemen behandelt werden. Die Nutzung dieser Skalierbarkeit erfordert Software für ein effizientes Ressourcenmanagement und -wartung.[6]

Vertikal oder skalieren

Skalieren vertikal (nach oben/unten) bedeutet, Ressourcen zum Ressourcen zum Ressourcen hinzuzufügen (oder Ressourcen aus) eines einzelnen Knotens hinzuzufügen, wobei normalerweise CPUs, Speicher oder Speicher auf einen einzelnen Computer hinzugefügt werden.[6]

Eine größere Anzahl von Elementen erhöht die Komplexität des Managements, eine ausgefeiltere Programmierung, um Aufgaben zwischen Ressourcen zuzuweisen und Probleme wie Durchsatz und Latenz über Knoten hinweg zu behandeln, während einige einige Anwendungen skalieren nicht horizontal.

Netzwerkskalierbarkeit

Netzwerkfunktion Virtualisierung Definiert diese Begriffe unterschiedlich: Skalierung/In ist die Fähigkeit, durch Hinzufügen/Entfernen von Ressourceninstanzen (z. B. virtuelle Maschine) zu skalieren/zu entfernen, während das Auf-/Absteigen die Fähigkeit zur Skalierung durch Ändern der zugewiesenen Ressourcen (z. B. Speicher/CPU/Speicherkapazität ist ).[8]

Datenbankskalierbarkeit

Die Skalierbarkeit für Datenbanken erfordert, dass das Datenbanksystem in der Lage ist, zusätzliche Arbeiten mit größeren Hardware -Ressourcen wie zusätzlichen Servern, Prozessoren, Speicher und Speicher auszuführen. Die Workloads wurden weiter gewachsen und die Anforderungen an Datenbanken wurden gefolgt.

Zu den algorithmischen Innovationen gehören das Sperren und die Tabelle auf Reihenebene und die Index-Partitionierung. Architekturale Innovationen umfassen geteilt und Architekturen für gemeinsame Versicherungen für die Verwaltung von Konfigurationen mit mehreren Server.

Starke versus eventuelle Konsistenz (Speicherung)

Im Kontext des Skala-Outs DatenspeicherDie Skalierbarkeit ist definiert als die maximale Speicherclustergröße, die die vollständige Datenkonsistenz garantiert, was bedeutet, dass im gesamten Cluster immer nur eine gültige Version von gespeicherten Daten vorhanden ist, unabhängig von der Anzahl der redundanten physischen Datenkopien. Cluster, die "faule" Redundanz liefern, indem Kopien asynchrone Kopien aktualisiert werden, werden genannt "Schließlich konsequent". Diese Art von Scale-out-Design ist geeignet, wenn Verfügbarkeit und Reaktionsfähigkeit höher bewertet sind als die Konsistenz. Dies gilt für viele Webdateien oder Web-Caches (Web-Datei-Hosting-DiensteWenn Sie die neueste Version möchten, warten Sie einige Sekunden, bis sie sich verbreitet). Für alle klassischen transaktionorientierten Anwendungen sollte dieses Design vermieden werden.[9]

Viele Open-Source- und sogar kommerzielle Speichercluster, insbesondere diejenigen, die auf Standard-PC-Hardware und -Netzwerken basieren, bieten eine letztendliche Konsistenz. Identisch einige NoSQL -Datenbanken mögen Couchdb und andere oben erwähnte. Schreiben Sie Operationen für andere Kopien ungültig, warten Sie jedoch nicht auf ihre Anerkennung. Lesen Sie Vorgänge in der Regel nicht jede redundante Kopie vor der Beantwortung, und fehlt möglicherweise den vorhergehenden Schreibvorgang. Die große Menge an Metadaten-Signalverkehr würde spezifizierte Hardware und kurze Strecken mit akzeptabler Leistung erfordern (d. H. Als nicht geklüpftes Speichergerät oder Datenbank wirken).

Wenn eine starke Datenkonsistenz erwartet wird, suchen Sie nach folgenden Indikatoren:

  • Die Verwendung von Infiniband, Fibrechannel oder ähnlichen Netzwerken mit niedriger Latenz, um den Leistungsabbau mit zunehmender Clustergröße und Anzahl der redundanten Kopien zu vermeiden.
  • Kurze Kabellängen und begrenzte physische Ausdehnung, wobei die Verschlechterung der Leistung der Laufzeit von Signalen vermieden wird.
  • Mehrheit / Quorum -Mechanismen, um die Datenkonsistenz zu gewährleisten, wenn Teile des Clusters nicht zugänglich werden.

Indikatoren für letztendlich konsistente Designs (nicht für Transaktionsanwendungen geeignet!) Sind:

  • Die Schreibleistung steigt linear mit der Anzahl der angeschlossenen Geräte im Cluster.
  • Während der Speichercluster verteilt ist, bleiben alle Teile reaktionsschnell. Es besteht das Risiko von widersprüchlichen Aktualisierungen.

Leistungsstimmung versus Hardwareskalierbarkeit

Es wird oft empfohlen, das Systemdesign auf Hardwareskalierbarkeit und nicht auf Kapazität zu fokussieren. Es ist in der Regel billiger, einem System einen neuen Knoten hinzuzufügen, um eine verbesserte Leistung zu erzielen, als daran teilzunehmen Leistungsstimmung Verbesserung der Kapazität, die jeder Knoten verarbeiten kann. Dieser Ansatz kann jedoch abnehmende Renditen erzielen (wie in der Diskussion in Performance Engineering). Zum Beispiel: Nehmen wir an, 70% eines Programms können beschleunigt werden, wenn sie parallelisiert und auf mehreren CPUs anstelle von einem ausgeführt werden. Wenn ist der Anteil einer Berechnung, die sequentiell ist, und ist der Bruch, der parallelisiert werden kann, das Maximum beschleunigen Dies kann durch die Verwendung von P -Prozessoren erreicht werden Amdahls Gesetz:

Ersetzen des Wertes für dieses Beispiel, indem 4 Prozessoren verwendet werden

Verdoppelung der Rechenleistung auf 8 Prozessoren gibt Angaben

Die Verdoppelung der Verarbeitungsleistung hat den Prozess nur um ungefähr ein Fünftel beschleunigt. Wenn das ganze Problem parallelisierbar wäre, würde sich auch die Geschwindigkeit verdoppeln. Daher ist das Einwerfen von mehr Hardware nicht unbedingt der optimale Ansatz.

Schwach gegen starke Skalierung

High Performance Computing hat zwei häufige Vorstellungen von Skalierbarkeit:

  • Starke Skalierung wird definiert als die Lösungszeit variiert mit der Anzahl der Prozessoren für einen festen gesamt Problemgröße.
  • Schwache Skalierung wird definiert als die Lösungszeit variiert mit der Anzahl der Prozessoren für eine feste Problemgröße pro Prozessor.[10]

Siehe auch

Verweise

  1. ^ Bondi, André B. (2000). Eigenschaften der Skalierbarkeit und deren Auswirkungen auf die Leistung. Proceedings des zweiten internationalen Workshops über Software und Leistung - WOSP '00. p. 195. doi:10.1145/350391.350432. ISBN 158113195x.
  2. ^ Hill, Mark D. (1990). "Was ist Skalierbarkeit?". ACM Sigarch Computer Architecture News. 18 (4): 18. doi:10.1145/121973.121975. S2CID 1232925. und
    Duboc, Leticia; Rosenblum, David S.; Wicks, Tony (2006). Ein Rahmen für die Modellierung und Analyse der Skalierbarkeit von Softwaresystemen (PDF). Proceedings der 28. Internationalen Konferenz über Software -Engineering - ICSE '06. p. 949. doi:10.1145/1134285.1134460. ISBN 1595933751.
  3. ^ Laudon, Kenneth Craig; Traver, Carol Guercio (2008). E-Commerce: Wirtschaft, Technologie, Gesellschaft. Pearson Prentice Hall/Pearson Education. ISBN 9780136006459.
  4. ^ "Warum Webmaßstäbe die Zukunft ist". Netzwerkwelt. 2020-02-13. Abgerufen 2017-06-01.
  5. ^ Bigley, Gregory A.; Roberts, Karlene H. (2001-12-01). "Das einfallende Befehlssystem: Hochzuverlässige Organisation für komplexe und volatile Aufgabenumgebungen". Journal der Akademie des Managements. 44 (6): 1281–1299. doi:10.5465/3069401. ISSN 0001-4273.
  6. ^ a b c Hesham El-Wrewini und Mostafa Abd-El-Barr (April 2005). Erweiterte Computerarchitektur und parallele Verarbeitung. John Wiley & Sons. p. 66. ISBN 978-0-471-47839-3.
  7. ^ Michael, Magne; Moreira, Jose E.; Shiloach, Doron; Wisniewski, Robert W. (26. März 2007). Skala-Up X Scale-Out: Eine Fallstudie mit Nutch/Lucene. 2007 IEEE International Parallel und Distributed Processing Symposium. p. 1. doi:10.1109/ipdps.2007.370631. ISBN 978-1-4244-0909-9.
  8. ^ "Netzwerkfunktionen Virtualisierung (NFV); Terminologie für Hauptkonzepte in NFV". Archiviert von das Original (PDF) am 2020-05-11. Abgerufen 2016-01-12.
  9. ^ Sadek Drobi (11. Januar 2008). "Eventuelle Konsistenz von Werner Vogels". Infoq. Abgerufen 8. April, 2017.
  10. ^ "Die schwache Skalierung von dl_poly 3".STFC Computational Science and Engineering Department.Archiviert von das Original am 7. März 2014. Abgerufen 8. März, 2014.

Externe Links