Frage

Ich schrieb einen ähnliche Frage wie skalierbare Linq ist. Es gab so viele verschiedene Ansichten darüber, was die Skalierbarkeit tatsächlich in einigen neueren Gespräche gemeint, so hat es gefunkt mir auch diese Frage zu stellen. Was bedeutet Skalierbarkeit für Sie?

War es hilfreich?

Lösung

Ich sehe Skalierbarkeit aus zwei Perspektiven:

Scaling Up

Wenn ich mehr RAM an der Box hinzufügen, etwas läuft auf, wie viel zusätzliche Leistung und Kapazität erhalte ich? Wenn eine Anwendung, die ich haben kann 300 weitere Verbindungen verarbeiten und zu 15% schneller läuft, wenn ich 2 GB RAM auf meinen Server hinzufügen und eine andere Anwendung kann nur 100 mehr Verbindungen verarbeiten und läuft 5% schneller, Anwendung A ist deutlich besser skalierbar.

Skalierung Out

Nun, wenn ich mehr Boxen zu meinem Set addieren, wie viel zusätzliche Leistung und Kapazität erhalte ich? Kann ich auf Web-Front-Ends mehr Client-Datenverkehr zu behandeln? Wenn ja, gibt es eine lineare Erhöhung? Wenn ich 3 Boxen hinzufügen, kann ich 3x mehr Nutzer meiner Website zugreifen? Kann ich mehrere Datenbanken hinzufügen, die Datenlast zu verteilen? Kann ich vergrößern Multithreading? Wenn ich einfach eine Maschine zu meinem Netzwerk hinzufügen kann die Kapazität meine Anwendung hinzuzufügen, dann ist es skalierbar.

, die übrigens eine der Primärantriebe von n-Tiere.

Andere Tipps

Skalierbarkeit bedeutet die Fähigkeit, das Wachstum in einem dieser zwei Bereiche zu behandeln:

1) Einfachheit das Hinzufügen neuer Features, Fehler zu beheben. Um den Code zu machen tun, um diese neuen Dinge wie schwer es ist zu tun? Während diese Wartbarkeit in mancher Hinsicht sein mag, es ist auch die Frage, ob Sie den Code bauen können leicht einen größeren Maßstab zu behandeln.

2) die Fähigkeit, größere und größere Last zu bewältigen, die in Web-Entwicklung oder größere Datensätze für eine einfache Datenbank-gestützte Website gleichzeitig mehrere Anforderungen sein, z.B. könnten Sie einen Antrag stellen, die Tabellen mit hunderttausenden von Zeilen verarbeitet, die nach wie vor als „schnell“?

angesehen

Generell gilt für mich Skalierbarkeit bedeutet die Fähigkeit zu wachsen.

Ich glaube nicht, Skalierbarkeit ein Jota von Sinne ohne Kontext macht.

Wenn ich über die Skalierbarkeit eines Systems gefragt, das erste, was ich wissen müssen, ist die Art und Weise, in der ihre Nutzung wird voraussichtlich wachsen. Wird es immer mehr Nutzer werden? Werden die vorhandenen Benutzer sein schwerer machen Gebrauch davon? Wird der Funktionsumfang wächst sein? Wird die Mischung aus Transaktionen, die es derzeit Änderung unterstützt wird? Wird die Benutzererfahrung müssen sich ändern?

(OK, so ist die Antwort auf alle diese Fragen in der Regel „Ja“ ist, dann voranstellen, das Wort „Wie“ auf diese Fragen.)

Um ein nicht ganz fiktives Beispiel wählen: ein System zur Zeit nur sehr wenige Benutzer zu unterstützen und deren Nutzerbasis wird erwartet, schnell zu wachsen, hat ein ernsthaftes Skalierungsproblem, wenn der DBA 2 Stunden Abfragen manuell ausführen verbringen von Informationen aus gepflückt E-Mail-Nachrichten jedes Mal, wenn er ein neues Konto einzurichten hat. Das ist kein Problem, das durch Hinzufügen von mehr Ressourcen festgelegt werden kann, es sei denn, du bist einschließlich DBAs in der Liste der Ressourcen Sie gehen zu addieren (und es gibt viele Gründe, das ist nicht gut maßstäblich).

oder eine Social-Networking-Site vorstellen, dass das aufregende neue Feature rollt, die Sie sehen können, wenn Ihre Freunde online sind und mit ihnen chatten ist über einen Ajax-y UI. Plötzlich ohne Erhöhung der Benutzerbasis, die Anzahl der HTTP-Anforderungen Ihrer Server sind Handling pro Tag springt das Zwanzigfache, und Ihre Sorgen über die Skalierbarkeit Ihrer Datenbank in den Hintergrund treten. (Es sei denn natürlich, haben Sie die Datenbank in Ihrer Chat-Anwendung beteiligt. Gute Idee!)

Sicher, Ihre Web machen apps staatenlos, so dass Sie Web-Server hinzufügen können, Webseiten zu machen idempotent, so dass Sie Proxys hinzufügen können, Ihre Anwendung so zu gestalten, dass Sie Ihre Datenbank über Server partitionieren können, die sind alle Ihre Anwendung gehen machen in verschiedenen Dimensionen skalierbar. Es ist sehr viel wert über das Zeug zu denken. Aber es ist viel wichtiger, um herauszufinden, was Ihr wahrer Feind ist, bevor Sie anfangen zu kämpfen.

, antwortete ich diese Frage, als ob Sie gemeint schnell, aber das ist, weil ich nicht ein Ruck :) sein wollte - das heißt, ich wollte nicht eine Diskussion über das, was skalierbares Mittel beginnen. Ich denke, skalierbarer wie: Hinzufügen von Ressourcen in dem System seine Leistung erhöht

.

In diesem Sinne PLINQ ist skalierbar, weil mehr Kern Zugabe wird es schneller ausgeführt werden.

Gerade in der @Lou Franco-Post.

PLINQ hat sogar freakish "Super-Linear" Performance in einigen Szenarien mit begrenztem Aufwand (nach einigen ihrer Demos). Probieren Sie es aus.

Wenn Sie ein C ++ Typ sind, Microsoft sucht auch Gleichzeitigkeit Funktionen freizugeben, die anscheinend keine Laufzeitkosten mit ihnen und zusätzliche Aufgabe zugrunde, Concurrency-Tools verknüpft haben Sie besser Hilfe rufen.

Ich denke an die Skalierbarkeit als Maß für die Glätte der Kosten-Leistungskurve.

Das heißt, wenn Sie ein wenig auf IT-Ressourcen verbringen und ein niedriges Performance-System erhalten, und nach und nach Ressourcen Hinzufügen Sie ein proportional besseres System bekommen, es ist skalierbar. Wenn Sie Ressourcen in teueren Stücken hinzuzufügen haben, zu bekommen weniger als lineare Verbesserungen, es ist nicht skalierbar.

Skalierbarkeit - Die Fähigkeit eines Systems, zusätzliche Ressourcen zu nutzen, um eine erhöhte Kapazität oder den Durchsatz zu erzielen. Zusätzliche Ressourcen wie Laufwerke, Speicher, Netzwerkkarten, Prozessoren oder Maschinen.

ich geselle nicht direkt Skalierbarkeit mit Feature-Wachstum, wenn auch in seiner Skala Grenze Features zu einem System hinzufügen nicht möglich sein kann.

In diesen Tagen und speziell für Webapps, aber in einigen Fällen auch für Enterprise-Anwendungen, die horizontale Skalierbarkeit ist das, was Sie haben wollen,

Kann ich behandel mehr (Verkehr, Daten, Verarbeitung) von mehr handelsüblicher Hardware hinzufügen? Verwendung auch "Cloud-Server" Amazon EC2, Google App Engine und ähnliches?

Scalable Mittel I stopfen n Ressourcen in einem System, und es wird in Raum und Zeit zwischen O (log (n)) und O (n log n) wachsen. Das ist etwas unrealistisch, aber das ist, wie ich denke an „skalierbar“.

Woh !, großes Wort ....

Ich sehe es ein neues jedes Projekt, denn es hängt davon ab, was der Kunde will.

Die Skalierbarkeit ist nicht immer über die Verarbeitung / Speicherkapazität hinzugefügt, kann aber die Unterstützung von vielen Ein- und viele Ausgänge als auch enthalten.

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